BOSS 8.0.0
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 ()
virtual ~EvtAmplitude ()
EvtComplex evaluate (const EvtPoint1D &p) const

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 )
23 , _vd( vd )
24 , _vb( 0 )
25 , _useBirthFact( false )
26 , _useDeathFact( false )
27 , _useBirthFactFF( false )
28 , _useDeathFactFF( false )
29 , _fixUpMassForMax( false )
30 , _addfactor( 0. ) {}

Referenced by clone(), and EvtMassAmp().

◆ EvtMassAmp() [2/2]

EvtMassAmp::EvtMassAmp ( const EvtMassAmp & other)

Definition at line 32 of file EvtMassAmp.cc.

34 , _prop( other._prop )
35 , _vd( other._vd )
36 , _vb( other._vb ? new EvtTwoBodyVertex( *other._vb ) : 0 )
37 , _useBirthFact( other._useBirthFact )
38 , _useDeathFact( other._useDeathFact )
39 , _useBirthFactFF( other._useBirthFactFF )
40 , _useDeathFactFF( other._useDeathFactFF )
41 , _fixUpMassForMax( other._fixUpMassForMax )
42 , _addfactor( other._addfactor ) {}
Index other(Index i, Index j)

◆ ~EvtMassAmp()

EvtMassAmp::~EvtMassAmp ( )
virtual

Definition at line 44 of file EvtMassAmp.cc.

44 {
45 if ( _vb ) delete _vb;
46}

Member Function Documentation

◆ addBirthFact()

void EvtMassAmp::addBirthFact ( )
inline

Definition at line 41 of file EvtMassAmp.hh.

41{ _useBirthFact = true; }

Referenced by EvtRelBreitWignerBarrierFact::getRandMass().

◆ addBirthFactFF()

void EvtMassAmp::addBirthFactFF ( )
inline

Definition at line 43 of file EvtMassAmp.hh.

43{ _useBirthFactFF = true; }

Referenced by EvtRelBreitWignerBarrierFact::getRandMass().

◆ addDeathFact()

void EvtMassAmp::addDeathFact ( )
inline

Definition at line 42 of file EvtMassAmp.hh.

42{ _useDeathFact = true; }

Referenced by EvtRelBreitWignerBarrierFact::getRandMass().

◆ addDeathFactFF()

void EvtMassAmp::addDeathFactFF ( )
inline

Definition at line 44 of file EvtMassAmp.hh.

44{ _useDeathFactFF = true; }

Referenced by EvtRelBreitWignerBarrierFact::getRandMass().

◆ addFactorPn()

void EvtMassAmp::addFactorPn ( double factor)
inline

Definition at line 46 of file EvtMassAmp.hh.

46{ _addfactor = factor; }

Referenced by EvtRelBreitWignerBarrierFact::getRandMass().

◆ amplitude()

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

Implements EvtAmplitude< EvtPoint1D >.

Definition at line 48 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 // Birth vertex factors
64
65 if ( _useBirthFact )
66 {
67
68 assert( _vb );
69 if ( ( m + _vb->mB() ) < _vb->mAB() )
70 {
71 EvtTwoBodyKine vb( m, _vb->mB(), _vb->mAB() );
72 double phsp = _vb->phaseSpaceFactor( vb, EvtTwoBodyKine::AB );
73 amp *= phsp;
74
75 if ( _fixUpMassForMax ) { amp *= sqrt( ( vb.p() / _vb->pD() ) ); }
76 if ( _useBirthFactFF )
77 {
78
79 assert( _vb );
80 amp *= _vb->formFactor( vb );
81 }
82 }
83 else
84 {
85 if ( _vb->L() != 0 ) amp = 0.;
86 }
87 }
88
89 // Decay vertex factors
90
91 if ( _useDeathFact )
92 {
93 amp *= _vd.phaseSpaceFactor( vd, EvtTwoBodyKine::AB );
94 if ( _fixUpMassForMax ) { amp *= sqrt( ( vd.p() / _vd.pD() ) ); }
95 }
96 if ( _useDeathFactFF ) amp *= _vd.formFactor( vd );
97
98 // AddFactorPn
99
100 if ( fabs( _addfactor ) > 0.00000001 )
101 { // addFactorPn, pingrg-2011-1-6
102 assert( _vb );
103 double phsp;
104 if ( ( m + _vb->mB() ) < _vb->mAB() )
105 {
106 EvtTwoBodyKine vb( m, _vb->mB(), _vb->mAB() );
107 phsp = vb.p( EvtTwoBodyKine::AB );
108 }
109 else
110 {
111 if ( _vb->L() != 0 ) phsp = 0.;
112 }
113
114 amp *= pow( phsp, _addfactor );
115 // std::cout<<"EvtMassAmp::addFactorPn= "<<pow(phsp,_addfactor)<<std::endl;
116 }
117
118 return amp;
119}
double value() const
Definition EvtPoint1D.hh:25

◆ clone()

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

Implements EvtAmplitude< EvtPoint1D >.

Definition at line 37 of file EvtMassAmp.hh.

37{ return new EvtMassAmp( *this ); }
EvtMassAmp(const EvtPropBreitWignerRel &prop, const EvtTwoBodyVertex &vd)
Definition EvtMassAmp.cc:20

◆ fixUpMassForMax()

void EvtMassAmp::fixUpMassForMax ( )
inline

Definition at line 45 of file EvtMassAmp.hh.

45{ _fixUpMassForMax = true; }

◆ setBirthVtx()

void EvtMassAmp::setBirthVtx ( const EvtTwoBodyVertex & vb)
inline

Definition at line 39 of file EvtMassAmp.hh.

39{ _vb = new EvtTwoBodyVertex( vb ); }

Referenced by EvtRelBreitWignerBarrierFact::getRandMass().


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