24#include "EvtGenBase/EvtPatches.hh"
26#include "EvtGenBase/EvtConst.hh"
27#include "EvtGenBase/EvtParticle.hh"
28#include "EvtGenBase/EvtGenKine.hh"
29#include "EvtGenBase/EvtPDL.hh"
30#include "EvtGenBase/EvtReport.hh"
31#include "EvtGenBase/EvtVector4C.hh"
32#include "EvtGenModels/EvtVSSBMixCPT.hh"
33#include "EvtGenBase/EvtId.hh"
35#include "EvtGenBase/EvtRandom.hh"
41 model_name=
"VSS_BMIX";
55 report(
ERROR,
"EvtGen") <<
"EvtVSSBMix generator expected "
56 <<
" at least 1 argument (deltam) but found:"<<
getNArg()<<endl;
57 report(
ERROR,
"EvtGen") <<
"Will terminate execution!"<<endl;
66 report(
ERROR,
"EvtGen") <<
"EvtVSSBMixCPT generator allows "
67 <<
" 4 daughters only if 1=3 and 2=4"
68 <<
" (but 3 and 4 are aliased "<<endl;
69 report(
ERROR,
"EvtGen") <<
"Will terminate execution!"<<endl;
83 report(
ERROR,
"EvtGen") <<
"EvtVSSBMixCPT generator expected daughters "
84 <<
"to be charge conjugate." << endl
87 report(
ERROR,
"EvtGen") <<
"Will terminate execution!"<<endl;
92 report(
ERROR,
"EvtGen") <<
"EvtVSSBMixCPT generator expected daughters "
93 <<
"to have the same lifetime." << endl
97 report(
ERROR,
"EvtGen") <<
"Will terminate execution!"<<endl;
152 double dm= 1e-12*
getArg(0);
155 double qop2 =
abs(_qoverp*_qoverp);
156 _chib0_b0bar=qop2*(
x*
x+
y*
y)/(qop2*(x*x+
y*
y)+2+
x*
x-
y*
y);
157 _chib0bar_b0=(1/qop2)*(x*x+
y*
y)/((1/qop2)*(x*x+
y*
y)+2+
x*
x-
y*
y);
159 report(
INFO,
"EvtGen") <<
"VSS_BMIXCPT will generate mixing and CPT/CP effects in mixing:"
164 <<
"using parameters:" << endl << endl
165 <<
" delta(m) = " << dm <<
" hbar/ps" << endl
166 <<
" _freq = " << _freq <<
" hbar/mm" << endl
167 <<
" dgog = " << dgog <<endl
168 <<
" dGamma = " << _dGamma <<
" hbar/mm" <<endl
169 <<
" q/p = " << _qoverp << endl
170 <<
" z = " << _z << endl
171 <<
" tau = " << tau <<
" ps" << endl
172 <<
" x = " <<
x << endl
173 <<
" chi(B0->B0bar) = " << _chib0_b0bar << endl
174 <<
" chi(B0bar->B0) = " << _chib0bar_b0 << endl
175 <<
" Af = " << _A_f << endl
176 <<
" Abarf = " << _Abar_f << endl
177 <<
" Afbar = " << _A_fbar << endl
178 <<
" Abarfbar = " << _Abar_fbar << endl
199 if ( rndm < 0.5 ) { tempDaug[0]=
getDaug(0); tempDaug[1]=
getDaug(3); }
222 int mixed= (rndm < 0.5) ? 1 : 0;
228 EvtId mixedId2= mixedId;
231 s1->
init(mixedId, p1);
232 s2->
init(mixedId2, p2);
243 s1->
init(unmixedId, p1);
244 s2->
init(unmixedId2, p2);
255 EvtComplex exp1(-0.25*_dGamma*dct,0.5*_freq*dct);
264 EvtId stateAtDeltaTeq0 = (s2->
getId()==B0) ? B0B : B0;
280 if ( !mixed&&stateAtDeltaTeq0==B0 ) {
281 osc_amp= BB*_A_f+barBB*_Abar_f;
283 if ( !mixed&&stateAtDeltaTeq0==B0B ) {
284 osc_amp= barBbarB*_Abar_fbar+BbarB*_A_fbar;
287 if ( mixed&&stateAtDeltaTeq0==B0 ) {
288 osc_amp=barBB*_Abar_fbar+BB*_A_fbar;
290 if ( mixed&&stateAtDeltaTeq0==B0B ) {
291 osc_amp=BbarB*_A_f+barBbarB*_Abar_f;
295 double norm=1.0/p1.
d3mag();
double sin(const BesAngle a)
double cos(const BesAngle a)
EvtComplex exp(const EvtComplex &c)
double arg(const EvtComplex &c)
ostream & report(Severity severity, const char *facility)
void vertex(const EvtComplex &)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
static std::string name(EvtId i)
static EvtId chargeConj(EvtId id)
static EvtId getId(const std::string &name)
static double getctau(EvtId i)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
const EvtVector4R & getP4() const
void setLifetime(double tau)
EvtParticle * getDaug(int i)
void deleteDaughters(bool keepChannel=false)
virtual EvtVector4C eps(int i) const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
void getName(std::string &name)
void decay(EvtParticle *p)