BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtSVVNONCPEIGEN Class Reference

#include <EvtSVVNONCPEIGEN.hh>

Inheritance diagram for EvtSVVNONCPEIGEN:

Public Member Functions

 EvtSVVNONCPEIGEN ()
virtual ~EvtSVVNONCPEIGEN ()
void getName (std::string &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 28 of file EvtSVVNONCPEIGEN.hh.

Constructor & Destructor Documentation

◆ EvtSVVNONCPEIGEN()

EvtSVVNONCPEIGEN::EvtSVVNONCPEIGEN ( )
inline

Definition at line 31 of file EvtSVVNONCPEIGEN.hh.

31{}

Referenced by clone().

◆ ~EvtSVVNONCPEIGEN()

EvtSVVNONCPEIGEN::~EvtSVVNONCPEIGEN ( )
virtual

Definition at line 73 of file EvtSVVNONCPEIGEN.cc.

73{}

Member Function Documentation

◆ clone()

EvtDecayBase * EvtSVVNONCPEIGEN::clone ( )
virtual

Implements EvtDecayBase.

Definition at line 77 of file EvtSVVNONCPEIGEN.cc.

77{ return new EvtSVVNONCPEIGEN; }

◆ decay()

void EvtSVVNONCPEIGEN::decay ( EvtParticle * p)
virtual

Implements EvtDecayBase.

Definition at line 128 of file EvtSVVNONCPEIGEN.cc.

128 {
129
130 // added by Lange Jan4,2000
131 static EvtId B0 = EvtPDL::getId( "B0" );
132 static EvtId B0B = EvtPDL::getId( "anti-B0" );
133
134 double t;
135 EvtId other_b;
136 EvtId daugs[2];
137
138 // MB: flip selects the final of the decay
139 int flip = ( ( p->getId() == B0 ) ? 0 : 1 );
140 daugs[0] = getDaug( 0 );
141 daugs[1] = getDaug( 1 );
142 p->initializePhaseSpace( 2, daugs );
143
144 EvtCPUtil::OtherB( p, t, other_b, 0.5 );
145
146 EvtComplex amp[3];
147
148 double dmt2 = getArg( 0 ) * t / ( 2 * EvtConst::c );
149 double phiCKM = ( 2.0 * getArg( 1 ) + getArg( 2 ) ); // 2b+g
150 EvtComplex ePlusIPhi( cos( phiCKM ), sin( phiCKM ) );
151 EvtComplex eMinusIPhi( cos( -phiCKM ), sin( -phiCKM ) );
152
153 // flip == 0 : D*-rho+
154 // flip == 1 : D*+rho-
155
156 if ( !flip )
157 {
158 if ( other_b == B0B )
159 {
160 // At t=0 we have a B0
161 for ( int i = 0; i < 3; ++i )
162 {
163 amp[i] =
164 _A_f[i] * cos( dmt2 ) + eMinusIPhi * EvtComplex( 0.0, sin( dmt2 ) ) * _A_f[i + 3];
165 }
166 }
167 if ( other_b == B0 )
168 {
169 // At t=0 we have a B0bar
170 for ( int i = 0; i < 3; ++i )
171 {
172 amp[i] =
173 _A_f[i] * ePlusIPhi * EvtComplex( 0.0, sin( dmt2 ) ) + _A_f[i + 3] * cos( dmt2 );
174 }
175 }
176 }
177 else
178 {
179 if ( other_b == B0B )
180 {
181 // At t=0 we have a B0
182
183 // M.Baak 01/16/2004
184 // Note: \bar{H}+- = H-+
185 // If one wants to use the correct helicities for B0 and B0bar decays but the same
186 // formula-notation (as done in EvtSVV_HelAmp), count the B0bar helicities backwards.
187 // (Equivalently, one could flip the chi angle.)
188
189 for ( int i = 0; i < 3; ++i )
190 {
191 amp[i] = _A_f[8 - i] * cos( dmt2 ) +
192 eMinusIPhi * EvtComplex( 0.0, sin( dmt2 ) ) * _A_f[11 - i];
193 }
194 }
195 if ( other_b == B0 )
196 {
197 // At t=0 we have a B0bar
198 for ( int i = 0; i < 3; ++i )
199 {
200 amp[i] = _A_f[8 - i] * ePlusIPhi * EvtComplex( 0.0, sin( dmt2 ) ) +
201 _A_f[11 - i] * cos( dmt2 );
202 }
203 }
204 }
205
206 EvtSVVHelAmp::SVVHel( p, _amp2, daugs[0], daugs[1], amp[0], amp[1], amp[2] );
207
208 return;
209}
static void OtherB(EvtParticle *p, double &t, EvtId &otherb)
Definition EvtCPUtil.cc:225
static const double c
Definition EvtConst.hh:31
double getArg(int j)
EvtId getDaug(int i)
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
EvtId getId() const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
static void SVVHel(EvtParticle *parent, EvtAmp &amp, EvtId n_v1, EvtId n_v2, const EvtComplex &hp, const EvtComplex &h0, const EvtComplex &hm)
int t()
Definition t.c:1

◆ getName()

void EvtSVVNONCPEIGEN::getName ( std::string & name)
virtual

Implements EvtDecayBase.

Definition at line 75 of file EvtSVVNONCPEIGEN.cc.

75{ model_name = "SVV_NONCPEIGEN"; }

◆ init()

void EvtSVVNONCPEIGEN::init ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 79 of file EvtSVVNONCPEIGEN.cc.

79 {
80
81 // check that there are 27 arguments
82 checkNArg( 27, 15 );
83 checkNDaug( 2 );
84
87
88 // The ordering of A_f is :
89 // A_f[0-2] = A_f
90 // A_f[3-5] = Abar_f
91 // A_f[6-8] = A_fbar
92 // A_f[9-11] = Abar_fbar
93 //
94 // Each of the 4 amplitudes include the 3 different helicity states in
95 // the order +, 0, -. See more about helicity amplitude ordering in ::decay
96
97 int i = 0;
98 int j = ( getNArg() - 3 ) / 2;
99
100 for ( i = 0; i < j; ++i )
101 {
102 _A_f[i] = getArg( ( 2 * i ) + 3 ) *
103 EvtComplex( cos( getArg( ( 2 * i ) + 4 ) ), sin( getArg( ( 2 * i ) + 4 ) ) );
104 }
105
106 // If only 6 amplitudes are specified, calculate the last 6 from the first 6:
107 if ( 6 == j )
108 {
109 for ( i = 0; i < 3; ++i )
110 {
111 _A_f[6 + i] = _A_f[3 + i];
112 _A_f[9 + i] = _A_f[i];
113 }
114 }
115}
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)

◆ initProbMax()

void EvtSVVNONCPEIGEN::initProbMax ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 117 of file EvtSVVNONCPEIGEN.cc.

117 {
118 double probMax = 0;
119 for ( int i = 0; i < 12; ++i )
120 {
121 double amp = abs( _A_f[i] );
122 probMax += amp * amp;
123 }
124
125 setProbMax( probMax );
126}
void setProbMax(double prbmx)

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