BOSS 7.0.8
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtMassAmp Class Reference

#include <EvtMassAmp.hh>

+ Inheritance diagram for EvtMassAmp:

Public Member Functions

 EvtMassAmp (const EvtPropBreitWignerRel &prop, const EvtTwoBodyVertex &vd)
 
 EvtMassAmp (const EvtMassAmp &other)
 
virtual ~EvtMassAmp ()
 
virtual EvtComplex amplitude (const EvtPoint1D &p) const
 
virtual EvtAmplitude< EvtPoint1D > * clone () const
 
void setBirthVtx (const EvtTwoBodyVertex &vb)
 
void addBirthFact ()
 
void addDeathFact ()
 
void addBirthFactFF ()
 
void addDeathFactFF ()
 
void fixUpMassForMax ()
 
void addFactorPn (double factor)
 
- Public Member Functions inherited from EvtAmplitude< EvtPoint1D >
 EvtAmplitude ()
 
 EvtAmplitude (const EvtAmplitude &)
 
virtual ~EvtAmplitude ()
 
virtual EvtAmplitude< EvtPoint1D > * clone () const=0
 
EvtComplex evaluate (const EvtPoint1D &p) const
 

Additional Inherited Members

virtual EvtComplex amplitude (const EvtPoint1D &) const=0
 

Detailed Description

Definition at line 29 of file EvtMassAmp.hh.

Constructor & Destructor Documentation

◆ EvtMassAmp() [1/2]

EvtMassAmp::EvtMassAmp ( const EvtPropBreitWignerRel prop,
const EvtTwoBodyVertex vd 
)

Definition at line 20 of file EvtMassAmp.cc.

22 ,_prop(prop), _vd(vd), _vb(0)
23 ,_useBirthFact(false), _useDeathFact(false)
24 ,_useBirthFactFF(false), _useDeathFactFF(false)
25 ,_fixUpMassForMax(false),_addfactor(0.)
26{}

◆ EvtMassAmp() [2/2]

EvtMassAmp::EvtMassAmp ( const EvtMassAmp other)

Definition at line 28 of file EvtMassAmp.cc.

30 ,_prop(other._prop), _vd(other._vd)
31 ,_vb(other._vb ? new EvtTwoBodyVertex(*other._vb) : 0)
32 ,_useBirthFact(other._useBirthFact)
33 ,_useDeathFact(other._useDeathFact)
34 ,_useBirthFactFF(other._useBirthFactFF)
35 ,_useDeathFactFF(other._useDeathFactFF)
36 ,_fixUpMassForMax(other._fixUpMassForMax)
37 ,_addfactor(other._addfactor)
38{}
Index other(Index i, Index j)
Definition: EvtCyclic3.cc:118

◆ ~EvtMassAmp()

EvtMassAmp::~EvtMassAmp ( )
virtual

Definition at line 41 of file EvtMassAmp.cc.

42{
43 if(_vb) delete _vb;
44}

Member Function Documentation

◆ addBirthFact()

void EvtMassAmp::addBirthFact ( )
inline

Definition at line 46 of file EvtMassAmp.hh.

46{ _useBirthFact = true; }

Referenced by EvtRelBreitWignerBarrierFact::getRandMass().

◆ addBirthFactFF()

void EvtMassAmp::addBirthFactFF ( )
inline

Definition at line 48 of file EvtMassAmp.hh.

48{ _useBirthFactFF = true; }

Referenced by EvtRelBreitWignerBarrierFact::getRandMass().

◆ addDeathFact()

void EvtMassAmp::addDeathFact ( )
inline

Definition at line 47 of file EvtMassAmp.hh.

47{ _useDeathFact = true; }

Referenced by EvtRelBreitWignerBarrierFact::getRandMass().

◆ addDeathFactFF()

void EvtMassAmp::addDeathFactFF ( )
inline

Definition at line 49 of file EvtMassAmp.hh.

49{ _useDeathFactFF = true; }

Referenced by EvtRelBreitWignerBarrierFact::getRandMass().

◆ addFactorPn()

void EvtMassAmp::addFactorPn ( double  factor)
inline

Definition at line 51 of file EvtMassAmp.hh.

51{_addfactor = factor;}

Referenced by EvtRelBreitWignerBarrierFact::getRandMass().

◆ amplitude()

EvtComplex EvtMassAmp::amplitude ( const EvtPoint1D p) const
virtual

Implements EvtAmplitude< EvtPoint1D >.

Definition at line 47 of file EvtMassAmp.cc.

48{
49 // Modified vertex
50
51 double m = p.value();
52 // keep things from crashing..
53
54 if ( m< (_vd.mA()+_vd.mB()) ) return EvtComplex(0.,0.);
55
56 EvtTwoBodyKine vd(_vd.mA(),_vd.mB(),m);
57
58 // Compute mass-dependent width for relativistic propagator
59
60 EvtPropBreitWignerRel bw(_prop.m0(),_prop.g0()*_vd.widthFactor(vd));
61 EvtComplex amp = bw.evaluate(m);
62
63
64 // Birth vertex factors
65
66 if(_useBirthFact) {
67
68 assert(_vb);
69 if ( (m+_vb->mB()) < _vb->mAB() ) {
70 EvtTwoBodyKine vb(m,_vb->mB(),_vb->mAB());
71 double phsp= _vb->phaseSpaceFactor(vb,EvtTwoBodyKine::AB);
72 amp *= phsp;
73
74 if ( _fixUpMassForMax ) {
75 amp *= sqrt((vb.p() / _vb->pD()));
76 }
77 if(_useBirthFactFF) {
78
79 assert(_vb);
80 amp *= _vb->formFactor(vb);
81 }
82 }
83 else{
84 if ( _vb->L() != 0 ) amp=0.;
85 }
86 }
87
88
89 // Decay vertex factors
90
91 if(_useDeathFact) {
93 if ( _fixUpMassForMax ) {
94 amp *= sqrt((vd.p() / _vd.pD()));
95 }
96 }
97 if(_useDeathFactFF) amp *= _vd.formFactor(vd);
98
99 // AddFactorPn
100
101 if(fabs(_addfactor) > 0.00000001){ //addFactorPn, pingrg-2011-1-6
102 assert(_vb);
103 double phsp;
104 if ( (m+_vb->mB()) < _vb->mAB() ) {
105 EvtTwoBodyKine vb(m,_vb->mB(),_vb->mAB());
106 phsp= vb.p(EvtTwoBodyKine::AB);
107 } else{
108 if ( _vb->L() != 0 ) phsp=0.;
109 }
110
111 amp *= pow(phsp,_addfactor);
112 // std::cout<<"EvtMassAmp::addFactorPn= "<<pow(phsp,_addfactor)<<std::endl;
113 }
114
115 return amp;
116}
double value() const
Definition: EvtPoint1D.hh:29
double g0() const
double m0() const
double mAB() const
double formFactor(EvtTwoBodyKine x) const
double pD() const
double widthFactor(EvtTwoBodyKine x) const
double mA() const
double mB() const
double phaseSpaceFactor(EvtTwoBodyKine x, EvtTwoBodyKine::Index) const

◆ clone()

virtual EvtAmplitude< EvtPoint1D > * EvtMassAmp::clone ( ) const
inlinevirtual

Implements EvtAmplitude< EvtPoint1D >.

Definition at line 38 of file EvtMassAmp.hh.

39 { return new EvtMassAmp(*this); }

◆ fixUpMassForMax()

void EvtMassAmp::fixUpMassForMax ( )
inline

Definition at line 50 of file EvtMassAmp.hh.

50{ _fixUpMassForMax = true;}

◆ setBirthVtx()

void EvtMassAmp::setBirthVtx ( const EvtTwoBodyVertex vb)
inline

Definition at line 41 of file EvtMassAmp.hh.

42 {
43 _vb = new EvtTwoBodyVertex(vb);
44 }

Referenced by EvtRelBreitWignerBarrierFact::getRandMass().


The documentation for this class was generated from the following files: