72 if ( etyp != 2 && mutyp != 2 && tautyp != 2 )
75 report(
ERROR,
"EvtGen" ) <<
"Expect two leptons of the same type in EvtBtoXsll.cc\n";
91 if ( lpos != 1 || lneg != 1 )
94 report(
ERROR,
"EvtGen" ) <<
"Expect 2nd and 3rd particles to be positive and negative "
95 "leptons in EvtBtoXsll.cc\n";
126 double smin = 4.0 *
ml *
ml;
127 double smax = ( _mb - _ms ) * ( _mb - _ms );
128 double probMax = -10000.0;
129 double sProbMax = -10.0;
130 double uProbMax = -10.0;
132 for ( i = 0; i < nsteps; i++ )
134 s = smin + ( i + 0.0005 ) * ( smax - smin ) / (double)nsteps;
135 double prob = _calcprob->dGdsProb( _mb, _ms,
ml,
s );
136 if ( prob > probMax )
143 _dGdsProbMax = probMax;
147 report(
INFO,
"EvtGen" ) <<
"dGdsProbMax = " << probMax <<
" for s = " << sProbMax << endl;
155 for ( i = 0; i < nsteps; i++ )
157 s = smin + ( i + 0.0005 ) * ( smax - smin ) / (double)nsteps;
159 sqrt( (
s - ( _mb + _ms ) * ( _mb + _ms ) ) * (
s - ( _mb - _ms ) * ( _mb - _ms ) ) );
160 for ( j = 0; j < nsteps; j++ )
162 double u = -umax + ( j + 0.0005 ) * ( 2.0 * umax ) / (double)nsteps;
163 double prob = _calcprob->dGdsdupProb( _mb, _ms,
ml,
s, u );
164 if ( prob > probMax )
173 _dGdsdupProbMax = probMax;
177 report(
INFO,
"EvtGen" ) <<
"dGdsdupProbMax = " << probMax <<
" for s = " << sProbMax
178 <<
" and u = " << uProbMax << endl;
196 double mB = p->
mass();
202 double xhadronMass = -999.0;
215 while ( xhadronMass < _mxmin )
232 pb = _calcprob->FermiMomentum( _pf );
235 mb = mB * mB + _mq * _mq - 2.0 * mB * sqrt( pb * pb + _mq * _mq );
244 double smin = 4.0 *
ml *
ml;
245 double smax = ( mb - _ms ) * ( mb - _ms );
251 if ( ybox < _calcprob->dGdsProb( mb, _ms,
ml, xbox ) ) {
s = xbox; }
264 msdilep[1] = sqrt(
s );
286 p4ll[0] =
boostTo( p4ll[0], p4sdilep[1] );
287 p4ll[1] =
boostTo( p4ll[1], p4sdilep[1] );
298 double prob = _calcprob->dGdsdupProb( mb, _ms,
ml,
s, u );
299 if ( prob > _dGdsdupProbMax && nmsg < 20 )
302 <<
"d2gdsdup GT d2gdsdup_max:" << prob <<
" " << _dGdsdupProbMax
303 <<
" for s = " <<
s <<
" u = " << u <<
" mb = " << mb << endl;
318 double sinth = sqrt( 1.0 - costh * costh );
322 EvtVector4R p4b( sqrt( mb * mb + pb * pb ), pb * sinth *
sin( phi ),
323 pb * sinth *
cos( phi ), pb * costh );
342 p4leptonp =
boostTo( p4ll[0], p4b );
343 p4leptonn =
boostTo( p4ll[1], p4b );
352 p4xhadron = p4s + p4q;
353 xhadronMass = p4xhadron.
mass();
void makeDaughters(int ndaug, EvtId *id)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
EvtParticle * getDaug(int i)