BOSS 8.0.0
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 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 25 of file EvtD0mixDalitz.hh.

Constructor & Destructor Documentation

◆ EvtD0mixDalitz()

EvtD0mixDalitz::EvtD0mixDalitz ( )
inline

Definition at line 100 of file EvtD0mixDalitz.hh.

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

Referenced by clone().

◆ ~EvtD0mixDalitz()

virtual EvtD0mixDalitz::~EvtD0mixDalitz ( )
inlinevirtual

Definition at line 110 of file EvtD0mixDalitz.hh.

110{};

Member Function Documentation

◆ clone()

EvtDecayBase * EvtD0mixDalitz::clone ( )
inlinevirtual

Implements EvtDecayBase.

Definition at line 114 of file EvtD0mixDalitz.hh.

114{ return new EvtD0mixDalitz; }

◆ decay()

void EvtD0mixDalitz::decay ( EvtParticle * p)
virtual

Implements EvtDecayBase.

Definition at line 104 of file EvtD0mixDalitz.cc.

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

◆ getName()

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

Implements EvtDecayBase.

Definition at line 113 of file EvtD0mixDalitz.hh.

113{ model_name = "D0MIXDALITZ"; }

◆ init()

void EvtD0mixDalitz::init ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 38 of file EvtD0mixDalitz.cc.

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

◆ initProbMax()

void EvtD0mixDalitz::initProbMax ( )
inlinevirtual

Reimplemented from EvtDecayBase.

Definition at line 115 of file EvtD0mixDalitz.hh.

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

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