21#include "EvtGenBase/EvtPatches.hh"
23#include "EvtGenBase/EvtPatches.hh"
25#include "EvtGenBase/EvtPredGen.hh"
27#include "EvtGenBase/EvtRelBreitWignerBarrierFact.hh"
28#include "EvtGenBase/EvtTwoBodyVertex.hh"
29#include "EvtGenBase/EvtPropBreitWignerRel.hh"
30#include "EvtGenBase/EvtPDL.hh"
31#include "EvtGenBase/EvtAmpPdf.hh"
32#include "EvtGenBase/EvtMassAmp.hh"
33#include "EvtGenBase/EvtSpinType.hh"
34#include "EvtGenBase/EvtIntervalFlatPdf.hh"
47 _includeDecayFact=
true;
48 _includeBirthFact=
true;
56 double maxdelta = 15.0*width;
58 if ( maxRange > 0.00001 ) {
59 _massMax=
mass+maxdelta;
60 _massMin=
mass-maxRange;
63 _massMax=
mass+maxdelta;
64 _massMin=
mass-15.0*width;
67 _massMax=
mass+maxdelta;
68 if ( _massMin< 0. ) _massMin=0.;
77 _maxRange=
x._maxRange;
78 _includeDecayFact=
x._includeDecayFact;
79 _includeBirthFact=
x._includeBirthFact;
80 _errorCond=
x._errorCond;
114 for (i=0; i<nDaug; i++) {
115 dTotMass+=massDau[i];
120 if ( (
mass<dTotMass) )
return 0.;
122 if (
_width< 0.0001)
return 1.;
124 if ( massPar>0.0000000001 ) {
125 if (
mass > massPar)
return 0.;
170 Lmin=std::max(t3-t2-t1,std::max(t2-t3-t1,t1-t3-t2));
172 assert(Lmin==0||Lmin==2||Lmin==4);
177 double massD1=dauMasses[0];
178 double massD2=dauMasses[1];
184 double massOthD=-10.;
185 double massParent=-10.;
197 if ( (tt1<=4) && ( tt2<=4) ) {
198 birthl=std::max(tt3-tt2-tt1,std::max(tt2-tt3-tt1,tt1-tt3-tt2));
199 if (birthl<0) birthl=0;
216 if ( (maxMass > -0.5) && (maxMass < massM) ) massM=maxMass;
229 amp.addDeathFactFF();
236 if ( massParent>-1.) {
243 amp.addBirthFactFF();
254 double tempMaxLoc=
_mass;
255 if ( maxMass>-0.5 && maxMass<
_mass) tempMaxLoc=maxMass;
257 if ( maxMass>-0.5 && maxMass<
_massMax) tempMax=maxMass;
259 if ( massD1+massD2 >
_massMin) tempMinMass=massD1+massD2;
264 if ( tempMinMass > tempMax ) {
269 if ( tempMaxLoc < tempMinMass) tempMaxLoc=tempMinMass;
271 double safetyFactor=1.2;
284 return point.
value();
std::vector< EvtId > _userSetBirthOthD
std::vector< EvtId > _userSetBirthPar
EvtSpinType::spintype _spin
std::vector< int > _userSetPW
virtual double getMassProb(double mass, double massPar, int nDaug, double *massDau)
void addFactorPn(double factor=0.)
virtual double getRandMass(EvtId *parId, int nDaug, EvtId *dauId, EvtId *othDaugId, double maxMass, double *dauMasses)
std::vector< EvtId > _userSetPWD2
std::vector< EvtId > _userSetPWD1
std::vector< int > _userSetBirthPW
static double getMeanMass(EvtId i)
static EvtSpinType::spintype getSpinType(EvtId i)
double getMassProb(double mass, double massPar, int nDaug, double *massDau)
EvtRelBreitWignerBarrierFact()
EvtRelBreitWignerBarrierFact & operator=(const EvtRelBreitWignerBarrierFact &x)
~EvtRelBreitWignerBarrierFact()
double getRandMass(EvtId *parId, int nDaug, EvtId *dauId, EvtId *othDaugId, double maxMass, double *dauMasses)
EvtAbsLineShape * clone()
static int getSpin2(spintype stype)