BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtBsquark Class Reference

#include <EvtBsquark.hh>

Inheritance diagram for EvtBsquark:

Public Member Functions

 EvtBsquark ()
virtual ~EvtBsquark ()
void getName (std::string &name)
EvtDecayBaseclone ()
void initProbMax ()
void init ()
void decay (EvtParticle *p)
Public Member Functions inherited from EvtDecayProb
void makeDecay (EvtParticle *p)
void setProb (double prob)
double getProb ()
void setWeight (double weight)
virtual ~EvtDecayProb ()
Public Member Functions inherited from EvtDecayBase
virtual std::string commandName ()
virtual void command (std::string cmd)
double getProbMax (double prob)
double resetProbMax (double prob)
 EvtDecayBase ()
virtual ~EvtDecayBase ()
virtual bool matchingDecay (const EvtDecayBase &other) const
EvtId getParentId ()
double getBranchingFraction ()
void disableCheckQ ()
void checkQ ()
int getNDaug ()
EvtIdgetDaugs ()
EvtId getDaug (int i)
int getNArg ()
int getPHOTOS ()
void setPHOTOS ()
void setVerbose ()
void setSummary ()
double * getArgs ()
std::string * getArgsStr ()
double getArg (int j)
std::string getArgStr (int j)
std::string getModelName ()
int getDSum ()
int summary ()
int verbose ()
void saveDecayInfo (EvtId ipar, int ndaug, EvtId *daug, int narg, std::vector< std::string > &args, std::string name, double brfr)
void printSummary ()
void setProbMax (double prbmx)
void noProbMax ()
void checkNArg (int a1, int a2=-1, int a3=-1, int a4=-1)
void checkNDaug (int d1, int d2=-1)
void checkSpinParent (EvtSpinType::spintype sp)
void checkSpinDaughter (int d1, EvtSpinType::spintype sp)
virtual int nRealDaughters ()

Additional Inherited Members

Static Public Member Functions inherited from EvtDecayBase
static void findMasses (EvtParticle *p, int ndaugs, EvtId daugs[10], double masses[10])
static void findMass (EvtParticle *p)
static double findMaxMass (EvtParticle *p)
Protected Member Functions inherited from EvtDecayBase
bool daugsDecayedByParentModel ()
Protected Attributes inherited from EvtDecayBase
bool _daugsDecayedByParentModel

Detailed Description

Definition at line 28 of file EvtBsquark.hh.

Constructor & Destructor Documentation

◆ EvtBsquark()

EvtBsquark::EvtBsquark ( )
inline

Definition at line 31 of file EvtBsquark.hh.

31{}

Referenced by clone().

◆ ~EvtBsquark()

EvtBsquark::~EvtBsquark ( )
virtual

Definition at line 35 of file EvtBsquark.cc.

35{}

Member Function Documentation

◆ clone()

EvtDecayBase * EvtBsquark::clone ( )
virtual

Implements EvtDecayBase.

Definition at line 39 of file EvtBsquark.cc.

39{ return new EvtBsquark; }

◆ decay()

void EvtBsquark::decay ( EvtParticle * p)
virtual

Implements EvtDecayBase.

Definition at line 54 of file EvtBsquark.cc.

54 {
55
56 static EvtId cquark = EvtPDL::getId( "c" );
57 static EvtId anticquark = EvtPDL::getId( "anti-c" );
58
59 static EvtIdSet leptons( "e-", "mu-", "tau-" );
60
62
63 int charge = 1;
64
65 EvtParticle* lepton;
66 lepton = p->getDaug( 1 );
67 if ( leptons.contains( lepton->getId() ) ) { charge = -1; }
68
69 EvtDiracParticle charmquark;
70
71 // this is a very crude approximation...
72 if ( charge == -1 ) { charmquark.init( cquark, p->getDaug( 0 )->getP4() ); }
73 else { charmquark.init( anticquark, p->getDaug( 0 )->getP4() ); }
74
75 EvtVector4R p4c = p->getDaug( 0 )->getP4();
76
77 EvtVector4R p4sn = p->getDaug( 2 )->getP4();
78
79 EvtVector4R p4b( p->mass(), 0.0, 0.0, 0.0 );
80
81 EvtComplex M[2][2];
82
83 int il, ic;
84
85 // project out the right handed current
86 EvtGammaMatrix PR = 0.5 * ( EvtGammaMatrix::id() + EvtGammaMatrix::g5() );
87
88 double tanbeta = getArg( 1 );
89 double cosbeta = cos( atan( tanbeta ) );
90 double sinbeta = sin( atan( tanbeta ) );
91
92 double mb = 4.9;
93 double mc = 1.3;
94 double mw = 80.4;
95
96 double Mass = getArg( 2 );
97 double mu = getArg( 3 );
98 double mchargino = getArg( 4 );
99
100 double tan2phim = 2 * sqrt( 2.0 ) * mw * ( mu * cosbeta + Mass * sinbeta ) /
101 ( Mass * Mass - mu * mu + 2 * mw * mw * cos( 2 * atan( tanbeta ) ) );
102
103 double phim = 0.5 * atan( tan2phim );
104
105 EvtComplex U11 = cos( phim );
106 EvtComplex U12 = sin( phim );
107 EvtComplex U21 = -sin( phim );
108 EvtComplex U22 = cos( phim );
109
110 double tan2phip = 2 * sqrt( 2.0 ) * mw * ( mu * cosbeta + Mass * sinbeta ) /
111 ( Mass * Mass - mu * mu - 2 * mw * mw * cos( 2 * atan( tanbeta ) ) );
112
113 double phip = 0.5 * atan( tan2phip );
114
115 EvtComplex V11 = cos( phip );
116 EvtComplex V12 = sin( phip );
117 EvtComplex V21 = -sin( phip );
118 EvtComplex V22 = cos( phip );
119
120 double theta = getArg( 0 );
121 double ctheta = cos( theta );
122 double stheta = sin( theta );
123
124 double vcsb = 0.08;
125 double mchi1 = mchargino;
126 double mchi2 = mchargino;
127
128 // overall scale factor
129 double g = 1.0;
130
131 EvtComplex a1 =
132 mchi1 * ( U11 * ctheta - mb * U12 * stheta / ( sqrt( 2.0 ) * mw * cosbeta ) );
133 EvtComplex a2 =
134 mchi2 * ( U21 * ctheta - mb * U22 * stheta / ( sqrt( 2.0 ) * mw * cosbeta ) );
135
136 EvtComplex b1 = mc * conj( V12 ) * ctheta / ( sqrt( 2.0 ) * mw * sinbeta );
137 EvtComplex b2 = mc * conj( V22 ) * ctheta / ( sqrt( 2.0 ) * mw * sinbeta );
138
139 EvtComplex f1 = -( g * g * V11 * vcsb ) / ( ( p4b - p4c ).mass2() - mchi1 * mchi1 );
140 EvtComplex f2 = -( g * g * V21 * vcsb ) / ( ( p4b - p4c ).mass2() - mchi1 * mchi2 );
141
142 // report(INFO,"EvtGen") <<g<<" "<<V11<<" "<<FL<<" "<<vcsb<<" "<<mchi1<<endl;
143 // report(INFO,"EvtGen") << "f1:"<<f1<<" "<<(p4b-p4c).mass2()<<endl;
144 // report(INFO,"EvtGen") << "f2:"<<f2<<" "<<(p4b-p4c).mass2()<<endl;
145
146 // report(INFO,"EvtGen") << "p4sn:"<<p4sn<<endl;
147
148 EvtGammaMatrix pslash =
149 p4sn.get( 0 ) * EvtGammaMatrix::g0() - p4sn.get( 1 ) * EvtGammaMatrix::g1() -
150 p4sn.get( 2 ) * EvtGammaMatrix::g2() - p4sn.get( 3 ) * EvtGammaMatrix::g3();
151
152 // report(INFO,"EvtGen") << "pslash:"<<pslash<<endl;
153
154 for ( il = 0; il < 2; il++ )
155 {
156 for ( ic = 0; ic < 2; ic++ )
157 {
158
159 EvtComplex a = 0.0;
160 EvtComplex b = 0.0;
161
162 if ( charge == -1 )
163 {
164 a = charmquark.spParent( ic ) * ( PR * lepton->spParent( il ) );
165 b = charmquark.spParent( ic ) * ( ( pslash * PR ) * lepton->spParent( il ) );
166 }
167 else
168 {
169 a = lepton->spParent( il ) * ( PR * charmquark.spParent( ic ) );
170 b = lepton->spParent( il ) * ( ( pslash * PR ) * charmquark.spParent( ic ) );
171 }
172
173 // report(INFO,"EvtGen") <<"pslash*PR:"<<pslash*PR<<endl;
174 // report(INFO,"EvtGen") <<"sp charm:"<<charmquark.spParent(ic)<<endl;
175 // report(INFO,"EvtGen") <<"sp lepton:"<<lepton->spParent(il)<<endl;
176
177 M[ic][il] = f1 * ( a1 * a + b1 * b ) + f2 * ( a2 * a + b2 * b );
178
179 // report(INFO,"EvtGen") << "Contr1:"<<a1<<" "<<a<<" "<<b1<<" "<<b<<endl;
180 // report(INFO,"EvtGen") << "Contr2:"<<a2<<" "<<a<<" "<<b2<<" "<<b<<endl;
181
182 // report(INFO,"EvtGen") <<"case1:"<<f1<<" "<<a1<<" "<<b1<<" "<<a<<" "<<b<<endl;
183 // report(INFO,"EvtGen") <<"case2:"<<f2<<" "<<a2<<" "<<b2<<" "<<a<<" "<<b<<endl;
184 }
185 }
186
187 double prob = real( M[0][0] * conj( M[0][0] ) + M[1][0] * conj( M[1][0] ) +
188 M[0][1] * conj( M[0][1] ) + M[1][1] * conj( M[1][1] ) );
189
190 // report(INFO,"EvtGen") <<"prob:"<<prob<<endl;
191
192 setProb( prob );
193
194 return;
195}
TFile * f1
Evt3Rank3C conj(const Evt3Rank3C &t2)
double getArg(int j)
EvtId * getDaugs()
void setProb(double prob)
void init(EvtId part_n, const EvtVector4R &p4)
EvtDiracSpinor spParent(int i) const
static const EvtGammaMatrix & id()
static const EvtGammaMatrix & g0()
static const EvtGammaMatrix & g2()
static const EvtGammaMatrix & g1()
static const EvtGammaMatrix & g3()
static const EvtGammaMatrix & g5()
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
EvtId getId() const
virtual EvtDiracSpinor spParent(int) const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double mass() const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
double get(int i) const

◆ getName()

void EvtBsquark::getName ( std::string & name)
virtual

Implements EvtDecayBase.

Definition at line 37 of file EvtBsquark.cc.

37{ model_name = "BSQUARK"; }

◆ init()

void EvtBsquark::init ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 41 of file EvtBsquark.cc.

41 {
42
43 // check that there are 5 arguments
44 checkNArg( 5 );
45}
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)

◆ initProbMax()

void EvtBsquark::initProbMax ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 47 of file EvtBsquark.cc.

47 {
48
49 // For now do not set a maximum.
50
51 // SetProbMax(0.000000000005);
52}

The documentation for this class was generated from the following files: