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

#include <EvtD0mixDalitz.hh>

+ Inheritance diagram for EvtD0mixDalitz:

Public Member Functions

 EvtD0mixDalitz ()
 
virtual ~EvtD0mixDalitz ()
 
void getName (std::string &model_name)
 
EvtDecayBaseclone ()
 
void initProbMax ()
 
void init ()
 
void decay (EvtParticle *p)
 
- Public Member Functions inherited from EvtDecayAmp
void makeDecay (EvtParticle *p)
 
void setWeight (double weight)
 
void vertex (const EvtComplex &amp)
 
void vertex (int i1, const EvtComplex &amp)
 
void vertex (int i1, int i2, const EvtComplex &amp)
 
void vertex (int i1, int i2, int i3, const EvtComplex &amp)
 
void vertex (int *i1, const EvtComplex &amp)
 
virtual ~EvtDecayAmp ()
 
- Public Member Functions inherited from EvtDecayBase
virtual void getName (std::string &name)=0
 
virtual void decay (EvtParticle *p)=0
 
virtual void makeDecay (EvtParticle *p)=0
 
virtual EvtDecayBaseclone ()=0
 
virtual void init ()
 
virtual void initProbMax ()
 
virtual std::string commandName ()
 
virtual void command (std::string cmd)
 
double getProbMax (double prob)
 
double resetProbMax (double prob)
 
 EvtDecayBase ()
 
virtual ~EvtDecayBase ()
 
virtual bool matchingDecay (const EvtDecayBase &other) const
 
EvtId getParentId ()
 
double getBranchingFraction ()
 
void disableCheckQ ()
 
void checkQ ()
 
int getNDaug ()
 
EvtIdgetDaugs ()
 
EvtId getDaug (int i)
 
int getNArg ()
 
int getPHOTOS ()
 
void setPHOTOS ()
 
void setVerbose ()
 
void setSummary ()
 
double * getArgs ()
 
std::string * getArgsStr ()
 
double getArg (int j)
 
std::string getArgStr (int j)
 
std::string getModelName ()
 
int getDSum ()
 
int summary ()
 
int verbose ()
 
void saveDecayInfo (EvtId ipar, int ndaug, EvtId *daug, int narg, std::vector< std::string > &args, std::string name, double brfr)
 
void printSummary ()
 
void setProbMax (double prbmx)
 
void noProbMax ()
 
void checkNArg (int a1, int a2=-1, int a3=-1, int a4=-1)
 
void checkNDaug (int d1, int d2=-1)
 
void checkSpinParent (EvtSpinType::spintype sp)
 
void checkSpinDaughter (int d1, EvtSpinType::spintype sp)
 
virtual int nRealDaughters ()
 

Additional Inherited Members

- Static Public Member Functions inherited from EvtDecayBase
static void findMasses (EvtParticle *p, int ndaugs, EvtId daugs[10], double masses[10])
 
static void findMass (EvtParticle *p)
 
static double findMaxMass (EvtParticle *p)
 
- Protected Member Functions inherited from EvtDecayBase
bool daugsDecayedByParentModel ()
 
- Protected Attributes inherited from EvtDecayAmp
EvtAmp _amp2
 
- Protected Attributes inherited from EvtDecayBase
bool _daugsDecayedByParentModel
 

Detailed Description

Definition at line 26 of file EvtD0mixDalitz.hh.

Constructor & Destructor Documentation

◆ EvtD0mixDalitz()

EvtD0mixDalitz::EvtD0mixDalitz ( )
inline

Definition at line 102 of file EvtD0mixDalitz.hh.

102 : _d1( 0 ), _d2( 0 ), _d3( 0 ),
103 _x( 0. ), _y( 0. ), _qp( 1. ),
104 _isKsPiPi( false ), _isRBWmodel( true )
105 {}

Referenced by clone().

◆ ~EvtD0mixDalitz()

virtual EvtD0mixDalitz::~EvtD0mixDalitz ( )
inlinevirtual

Definition at line 107 of file EvtD0mixDalitz.hh.

107{};

Member Function Documentation

◆ clone()

EvtDecayBase * EvtD0mixDalitz::clone ( )
inlinevirtual

Implements EvtDecayBase.

Definition at line 111 of file EvtD0mixDalitz.hh.

111{ return new EvtD0mixDalitz; }

◆ decay()

void EvtD0mixDalitz::decay ( EvtParticle p)
virtual

Implements EvtDecayBase.

Definition at line 117 of file EvtD0mixDalitz.cc.

118{
119 // Same structure for all of these decays.
120 part->initializePhaseSpace( getNDaug(), getDaugs() );
121 EvtVector4R pA = part->getDaug( _d1 )->getP4();
122 EvtVector4R pB = part->getDaug( _d2 )->getP4();
123 EvtVector4R pC = part->getDaug( _d3 )->getP4();
124
125 // Squared invariant masses.
126 double m2AB = ( pA + pB ).mass2();
127 double m2AC = ( pA + pC ).mass2();
128 double m2BC = ( pB + pC ).mass2();
129
130 // Dalitz amplitudes of the decay of the particle and that of the antiparticle.
131 EvtComplex ampDalitz;
132 EvtComplex ampAntiDalitz;
133
134 if ( _isKsPiPi )
135 { // For Ks pi pi
136 EvtDalitzPoint point ( _mKs, _mPi, _mPi, m2AB, m2BC, m2AC );
137 EvtDalitzPoint antiPoint( _mKs, _mPi, _mPi, m2AC, m2BC, m2AB );
138
139 ampDalitz = dalitzKsPiPi( point );
140 ampAntiDalitz = dalitzKsPiPi( antiPoint );
141 }
142 else
143 { // For Ks K K
144 EvtDalitzPoint point ( _mKs, _mK, _mK, m2AB, m2BC, m2AC );
145 EvtDalitzPoint antiPoint( _mKs, _mK, _mK, m2AC, m2BC, m2AB );
146
147 ampDalitz = dalitzKsKK( point );
148 ampAntiDalitz = dalitzKsKK( antiPoint );
149 }
150
151 //_i1 += ampDalitz * conj( ampDalitz ) / 1.e8;
152 //_iChi += ampAntiDalitz * conj( ampDalitz ) / 1.e8;
153 //_iChi2 += ampAntiDalitz * conj( ampAntiDalitz ) / 1.e8;
154
155 //std::cout << "INTEGRALS: " << _i1 << " " << _iChi << " " << _iChi2 << " " << _iChi / _i1 << " " << _iChi2 / _i1 << std::endl;
156
157 // Assume there's no direct CP violation.
158 EvtComplex barAOverA = ampAntiDalitz / ampDalitz;
159
160 // CP violation in the interference. _qp implements CP violation in the mixing.
161 EvtComplex chi = _qp * barAOverA;
162
163 // Generate a negative exponential life time. p( gt ) = ( 1 - y ) * e^{ - ( 1 - y ) gt }
164 double gt = -log( EvtRandom::Flat() ) / ( 1. - _y );
165 part->setLifetime( gt / _gamma );
166
167 // Compute time dependent amplitude.
168 EvtComplex amp = .5 * ampDalitz * exp( - _y * gt / 2. ) * ( ( 1. + chi ) * h1( gt ) + ( 1. - chi ) * h2( gt ) );
169
170 vertex( amp );
171
172 return;
173}
EvtComplex exp(const EvtComplex &c)
Definition: EvtComplex.hh:252
void vertex(const EvtComplex &amp)
Definition: EvtDecayAmp.hh:37
EvtId * getDaugs()
Definition: EvtDecayBase.hh:65
static double Flat()
Definition: EvtRandom.cc:74

◆ getName()

void EvtD0mixDalitz::getName ( std::string &  model_name)
inlinevirtual

Implements EvtDecayBase.

Definition at line 110 of file EvtD0mixDalitz.hh.

110{ model_name = "D0MIXDALITZ"; }

◆ init()

void EvtD0mixDalitz::init ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 40 of file EvtD0mixDalitz.cc.

41{
42 // check that there are 0 arguments
43 checkNDaug( 3 );
44
45 if ( getNArg() )
46 if ( getNArg() == 2 )
47 {
48 _x = getArg( 0 );
49 _y = getArg( 1 );
50 }
51 else if ( getNArg() == 4 )
52 {
53 _x = getArg( 0 );
54 _y = getArg( 1 );
55 _qp = EvtComplex( getArg( 2 ), getArg( 3 ) );
56 }
57 else if ( getNArg() == 5 )
58 {
59 _x = getArg( 0 );
60 _y = getArg( 1 );
61 _qp = EvtComplex( getArg( 2 ), getArg( 3 ) );
62 _isRBWmodel = ! getArg( 4 ); // RBW by default. If arg4 is set, do K-matrix.
63 }
64 else
65 {
66 report( ERROR, "EvtD0mixDalitz" ) << "Number of arguments for this model must be 0, 2, 4 or 5:" << std::endl
67 << "[ x y ][ qp.re qp.im ][ doK-matrix ]" << std::endl
68 << "Check your dec file." << std::endl;
69 exit( 1 );
70 }
71
72 checkSpinParent ( _SCALAR );
73 checkSpinDaughter( 0, _SCALAR );
74 checkSpinDaughter( 1, _SCALAR );
75 checkSpinDaughter( 2, _SCALAR );
76
77 readPDGValues();
78
79 // Get the EvtId of the D0 and its (3) daughters.
80 EvtId parId = getParentId();
81
82 EvtId dau[ 3 ];
83 for ( int index = 0; index < 3; index++ )
84 dau[ index ] = getDaug( index );
85
86 if ( parId == _D0 ) // Look for K0bar h+ h-. The order must be K[0SL] h+ h-
87 for ( int index = 0; index < 3; index++ )
88 if ( ( dau[ index ] == _K0B ) || ( dau[ index ] == _KS ) || ( dau[ index ] == _KL ) )
89 _d1 = index;
90 else if ( ( dau[ index ] == _PIP ) || ( dau[ index ] == _KP ) )
91 _d2 = index;
92 else if ( ( dau[ index ] == _PIM ) || ( dau[ index ] == _KM ) )
93 _d3 = index;
94 else
95 reportInvalidAndExit();
96 else if ( parId == _D0B ) // Look for K0 h+ h-. The order must be K[0SL] h- h+
97 for ( int index = 0; index < 3; index++ )
98 if ( ( dau[ index ] == _K0 ) || ( dau[ index ] == _KS ) || ( dau[ index ] == _KL ) )
99 _d1 = index;
100 else if ( ( dau[ index ] == _PIM ) || ( dau[ index ] == _KM ) )
101 _d2 = index;
102 else if ( ( dau[ index ] == _PIP ) || ( dau[ index ] == _KP ) )
103 _d3 = index;
104 else
105 reportInvalidAndExit();
106 else
107 reportInvalidAndExit();
108
109 // Check if we're dealing with Ks pi pi or with Ks K K.
110 _isKsPiPi = false;
111 if ( dau[ _d2 ] == _PIP || dau[ _d2 ] == _PIM )
112 _isKsPiPi = true;
113}
ostream & report(Severity severity, const char *facility)
Definition: EvtReport.cc:36
@ ERROR
Definition: EvtReport.hh:49
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
EvtId getParentId()
Definition: EvtDecayBase.hh:60
void checkNDaug(int d1, int d2=-1)
EvtId getDaug(int i)
Definition: EvtDecayBase.hh:66
Definition: EvtId.hh:27

◆ initProbMax()

void EvtD0mixDalitz::initProbMax ( )
inlinevirtual

Reimplemented from EvtDecayBase.

Definition at line 112 of file EvtD0mixDalitz.hh.

112{ setProbMax( 5200. ); }
void setProbMax(double prbmx)

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