41 _includeDecayFact =
false;
42 _includeBirthFact =
false;
47 double maxdelta = 15.0 * width;
51 if ( maxRange > 0.00001 ) {
52 _massMax = mass + maxdelta;
53 _massMin = mass - maxRange;
55 _massMax = mass + maxdelta;
56 _massMin = mass - 15.0 * width;
60 _massMax = mass + maxdelta;
98 if ( _width < 0.0001 ) {
101 ymin = atan( 2.0 * ( _massMin - _mass ) / _width );
102 ymax = atan( 2.0 * ( _massMax - _mass ) / _width );
112 double maxMass,
double* )
114 if ( _width < 0.0001 )
118 if ( maxMass > 0 && maxMass < _massMin ) {
120 <<
"In EvtAbsLineShape::getRandMass:" << endl;
122 <<
"Cannot create a particle with a minimal mass of " << _massMin
124 <<
" decay with available left-over mass-energy " << maxMass
125 <<
". Returning 0.0 mass. The rest of this decay chain will probably fail..." 130 double mMin = _massMin;
131 double mMax = _massMax;
132 if ( maxMass > -0.5 && maxMass < mMax )
134 double ymin = atan( 2.0 * ( mMin - _mass ) / _width );
135 double ymax = atan( 2.0 * ( mMax - _mass ) / _width );
137 return ( _mass + ( ( _width / 2.0 ) * tan(
EvtRandom::Flat( ymin, ymax ) ) ) );
144 double dTotMass = 0.;
147 for ( i = 0; i < nDaug; i++ ) {
148 dTotMass += massDau[i];
152 if ( ( mass < dTotMass ) )
155 if ( _width < 0.0001 )
159 if ( massPar > 0.0000000001 ) {
160 if ( mass > massPar )
virtual EvtAbsLineShape * clone()
static std::string name(EvtId i)
virtual double getMassProb(double mass, double massPar, int nDaug, double *massDau)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
virtual double rollMass()
EvtAbsLineShape()=default
virtual double getRandMass(EvtId *parId, int nDaug, EvtId *dauId, EvtId *othDaugId, double maxMass, double *dauMasses)
EvtSpinType::spintype _spin
EvtAbsLineShape & operator=(const EvtAbsLineShape &x)