53 <<
"EvtVSSBMix generator expected "
54 <<
" at least 1 argument (deltam) but found:" <<
getNArg() << endl;
56 <<
"Will terminate execution!" << endl;
66 <<
"EvtVSSBMixCPT generator allows "
67 <<
" 4 daughters only if 1=3 and 2=4"
68 <<
" (but 3 and 4 are aliased " << endl;
70 <<
"Will terminate execution!" << endl;
85 <<
"EvtVSSBMixCPT generator expected daughters "
86 <<
"to be charge conjugate." << endl
90 <<
"Will terminate execution!" << endl;
96 <<
"EvtVSSBMixCPT generator expected daughters "
97 <<
"to have the same lifetime." << endl
101 <<
"Will terminate execution!" << endl;
162 double dm = 1e-12 *
getArg( 0 );
164 double y = dgog * 0.5;
167 ( qop2 * ( x * x + y * y ) + 2 + x * x -
170 ( ( 1 / qop2 ) * ( x * x + y * y ) + 2 + x * x -
175 <<
"VSS_BMIXCPT will generate mixing and CPT/CP effects in mixing:"
182 <<
"using parameters:" << endl
184 <<
" delta(m) = " << dm <<
" hbar/ps" << endl
185 <<
" freq = " <<
m_freq <<
" hbar/mm" << endl
186 <<
" dgog = " << dgog << endl
187 <<
" dGamma = " <<
m_dGamma <<
" hbar/mm" << endl
189 <<
" z = " <<
m_z << endl
190 <<
" tau = " << tau <<
" ps" << endl
191 <<
" x = " << x << endl
194 <<
" Af = " <<
m_A_f << endl
251 int mixed = ( rndm < 0.5 ) ? 1 : 0;
257 EvtId mixedId2 = mixedId;
258 if (
getNDaug() == 4 && rndm < 0.25 )
260 if (
getNDaug() == 4 && rndm > 0.25 )
262 s1->
init( mixedId, p1 );
263 s2->
init( mixedId2, p2 );
271 if (
getNDaug() == 4 && rndm < 0.75 )
273 if (
getNDaug() == 4 && rndm > 0.75 )
275 s1->
init( unmixedId, p1 );
276 s2->
init( unmixedId2, p2 );
296 EvtId stateAtDeltaTeq0 = ( s2->
getId() == B0 ) ? B0B : B0;
313 if ( !mixed && stateAtDeltaTeq0 == B0 ) {
316 if ( !mixed && stateAtDeltaTeq0 == B0B ) {
320 if ( mixed && stateAtDeltaTeq0 == B0 ) {
323 if ( mixed && stateAtDeltaTeq0 == B0B ) {
328 double norm = 1.0 / p1.
d3mag();
329 vertex( 0, norm * osc_amp * p1 * ( p->
eps( 0 ) ) );
330 vertex( 1, norm * osc_amp * p1 * ( p->
eps( 1 ) ) );
331 vertex( 2, norm * osc_amp * p1 * ( p->
eps( 2 ) ) );
342 return "deltaGammaOverGamma";
346 return "qOverPPhase";
362 return "AbarfbarPhase";
EvtComplex exp(const EvtComplex &c)
double arg(const EvtComplex &c)
double abs(const EvtComplex &c)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
void vertex(const EvtComplex &)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(unsigned int j)
void setProbMax(double prbmx)
EvtId getParentId() const
EvtId getDaug(int i) const
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
const EvtId * getDaugs() const
static std::string name(EvtId i)
static EvtId chargeConj(EvtId id)
static double getctau(EvtId i)
static EvtId getId(const std::string &name)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
double initializePhaseSpace(size_t numdaughter, const EvtId *daughters, bool forceResetMasses=false, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
const EvtVector4R & getP4() const
void setLifetime(double tau)
EvtParticle * getDaug(const int i)
void deleteDaughters(bool keepChannel=false)
double getLifetime() const
virtual EvtVector4C eps(int i) const
EvtDecayBase * clone() const override
void decay(EvtParticle *p) override
std::string getName() const override
std::string getParamName(int i) override
std::string getParamDefault(int i) override
void initProbMax() override