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"
56 double maxdelta = 15.0*width;
58 if ( maxRange > 0.00001 ) {
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;
236 if ( massParent>-1.) {
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
void setBirthVtx(const EvtTwoBodyVertex &vb)
void addFactorPn(double factor)
static double getMeanMass(EvtId i)
static EvtSpinType::spintype getSpinType(EvtId i)
void setMax(const EvtPdfMax< T > &max)
double evaluate(const T &p) const
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)