37 return "YMSTOYNSPIPICLEO";
61 <<
"EvtYmSToYnSpipiCLEO generator expected "
62 <<
" pi+ and pi- (or pi0 and pi0) "
63 <<
"as 2nd and 3rd daughter. " << endl;
65 <<
"Will terminate execution!" << endl;
87 double ReB_over_A =
getArg( 0 );
88 double ImB_over_A =
getArg( 1 );
108 bool acceptX =
false;
110 while (
false == acceptX ) {
135 masses[0] = s1->
mass();
136 masses[1] = s2->
mass();
145 double costheta = -p4[0].
dot( P_YmS_X ) /
148 if ( costheta < 0 ) {
149 costheta = -p4[1].
dot( P_YmS_X ) /
154 costheta = -p4[1].
dot( P_YmS_X ) /
161 P_pi1 =
boostTo( p4[0], P_YmS_X );
162 P_pi2 =
boostTo( p4[1], P_YmS_X );
180 double Q = ( mX * mX - 2.0 * m_pi * m_pi );
182 double deltaEmax = -2.0 *
183 sqrt( P_nS.
get( 0 ) * P_nS.
get( 0 ) - M_nS * M_nS ) *
184 sqrt( 0.25 - pow( m_pi / mX, 2.0 ) );
186 double sumE = ( M_mS * M_mS - M_nS * M_nS + mX * mX ) / ( 2.0 * M_mS );
189 ( pow( sumE, 2.0 ) - pow( deltaEmax * costheta, 2.0 ) );
192 ( pow( ReB_over_A, 2.0 ) + pow( ImB_over_A, 2.0 ) ) * E1E2 *
194 2.0 * ReB_over_A * Q * E1E2;
204 double dPS = sqrt( ( M_mS * M_mS - pow( M_nS + mX, 2.0 ) ) *
205 ( M_mS * M_mS - pow( M_nS - mX, 2.0 ) ) ) *
206 sqrt( mX * mX - 4 * m_pi * m_pi );
209 double dG = M2 * dPS;
EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger &rs, const EvtVector4R p4)
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 getDaug(int i) const
double getProbMax(double prob)
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 double PhaseSpace(int ndaug, double mass[30], EvtVector4R p4[30], double mp)
static std::string name(EvtId i)
static EvtId getId(const std::string &name)
virtual EvtVector4C epsParent(int i) const
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
const EvtVector4R & getP4() const
EvtParticle * getDaug(const int i)
virtual EvtVector4C eps(int i) const
void makeDaughters(size_t ndaug, const EvtId *id)
double dot(const EvtVector4R &v2) const
std::string getName() const override
EvtDecayBase * clone() const override
void initProbMax() override
void decay(EvtParticle *p) override