|
EvtGen
2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
|
Go to the documentation of this file. 89 if ( etyp != 2 && mutyp != 2 && tautyp != 2 ) { 91 << "Expect two leptons of the same type in EvtBtoXsll.cc\n"; 111 if ( lpos != 1 || lneg != 1 ) { 113 << "Expect 2nd and 3rd particles to be positive and negative leptons in EvtBtoXsll.cc\n"; 136 _calcprob = std::make_unique<EvtBtoXsllUtil>(); 145 double smin = 4.0 * ml * ml; 147 double probMax = -10000.0; 148 double sProbMax = -10.0; 149 double uProbMax = -10.0; 151 for ( i = 0; i < nsteps; i++ ) { 152 s = smin + ( i + 0.002 ) * ( smax - smin ) / (double)nsteps; 154 if ( prob > probMax ) { 164 << "dGdsProbMax = " << probMax << " for s = " << sProbMax << endl; 172 for ( i = 0; i < nsteps; i++ ) { 173 s = smin + ( i + 0.002 ) * ( smax - smin ) / (double)nsteps; 174 double umax = sqrt( ( s - ( _mb + _ms ) * ( _mb + _ms ) ) * 176 for ( j = 0; j < nsteps; j++ ) { 177 double u = -umax + ( j + 0.002 ) * ( 2.0 * umax ) / (double)nsteps; 179 if ( prob > probMax ) { 191 << "dGdsdupProbMax = " << probMax << " for s = " << sProbMax 192 << " and u = " << uProbMax << endl; 213 double mB = p-> mass(); 219 double xhadronMass = -999.0; 232 while ( xhadronMass < _mxmin ) { 246 while ( mb <= 0.0 ) { 250 mb = mB * mB + _mq * _mq - 2.0 * mB * sqrt( pb * pb + _mq * _mq ); 251 if ( mb > 0. && sqrt( mb ) - _ms < 2.0 * ml ) 261 double smin = 4.0 * ml * ml; 262 double smax = ( mb - _ms ) * ( mb - _ms ); 268 if ( !( prob >= 0.0 ) && !( prob <= 0.0 ) ) { 285 msdilep[1] = sqrt( s ); 299 while ( tmp == 0.0 ) { 306 p4ll[0] = boostTo( p4ll[0], p4sdilep[1] ); 307 p4ll[1] = boostTo( p4ll[1], p4sdilep[1] ); 318 double prob = _calcprob->dGdsdupProb( mb, _ms, ml, s, u ); 319 if ( !( prob >= 0.0 ) && !( prob <= 0.0 ) ) { 321 << "nan from dGdsProb " << prob << " " << mb << " " << _ms 322 << " " << ml << " " << s << " " << u << std::endl; 326 << "d2gdsdup GT d2gdsdup_max:" << prob << " " 328 << " mb = " << mb << endl; 342 double sinth = sqrt( 1.0 - costh * costh ); 346 EvtVector4R p4b( sqrt( mb * mb + pb * pb ), pb * sinth * sin( phi ), 347 pb * sinth * cos( phi ), pb * costh ); 366 p4leptonp = boostTo( p4ll[0], p4b ); 367 p4leptonn = boostTo( p4ll[1], p4b ); 372 -p4b. get( 2 ), -p4b. get( 3 ) ); 376 p4xhadron = p4s + p4q; 377 xhadronMass = p4xhadron. mass();
double getArg(unsigned int j)
EvtDecayBase * clone() override
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
static const double twoPi
static double getMeanMass(EvtId i)
void makeDaughters(unsigned int ndaug, EvtId *id)
EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger &rs, const EvtVector4R p4)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
static EvtId getId(const std::string &name)
static double PhaseSpace(int ndaug, double mass[30], EvtVector4R p4[30], double mp)
std::unique_ptr< EvtBtoXsllUtil > _calcprob
EvtParticle * getDaug(int i)
std::string getName() override
void decay(EvtParticle *p) override
static void findMasses(EvtParticle *p, int ndaugs, EvtId daugs[10], double masses[10])
void initProbMax() override
EvtId getDaug(int i) const
|