54 const double factor =
m_eSq / ( denom * denom * 3.0 );
56 const double fTerm0 = 2.0 * sqrt( 2.0 ) * cos(
m_thetaMix ) /
m_f0;
57 m_mixSq = factor * pow( fTerm8 + fTerm0, 2 );
119 const double mSq = m * m;
120 const double num = 1.0 - ( 4.0 * mSq / s );
121 const double denom = 1.0 - ( 4.0 * mSq /
m_rhoMassSq );
122 const double ratio = denom > 0.0 ? num / denom : 0.0;
138 const double mRhoWidthL =
m_rhoMass * rhoWidthL;
141 const double mRhoWidthPi =
m_rhoMass * rhoWidthPi;
143 const double denomLL = mSqDiffL * mSqDiffL + mRhoWidthL * mRhoWidthL;
144 const double denomPiPi = mSqDiffPi * mSqDiffPi + mRhoWidthPi * mRhoWidthPi;
146 if ( denomLL > 0.0 && denomPiPi > 0.0 ) {
148 const double denomProd = denomLL * denomPiPi;
152 ( ( mSqDiffPi * mSqDiffL ) - mRhoWidthL * mRhoWidthPi ) /
157 ( mRhoWidthPi * mSqDiffL + mRhoWidthL * mSqDiffPi ) /
160 ampSq = realAmp * realAmp + imagAmp * imagAmp;
168 const double sumSq = a * a + b * b + c * c;
169 const double prod = a * b + b * c + c * a;
170 const double L = sumSq - 2.0 * prod;
177 const double zeroProb( 0.0 );
180 const double mEta = p->
mass();
188 const double sLL = pLL.
mass2();
190 const double sPiPi = pPiPi.
mass2();
201 const double sinThp = sqrt( 1.0 - cosThp * cosThp );
204 const double sinThk = sqrt( 1.0 - cosThk * cosThk );
207 const double sinPhi = sin( phi );
209 const double betaLL = sqrt( 1.0 - (
m_4LepMassSq / sLL ) );
210 const double betaPiPi = sqrt( 1.0 - (
m_4PiMassSq / sPiPi ) );
212 const double betaProd = ( 1.0 - pow( betaLL * sinThp * sinPhi, 2 ) ) *
213 sPiPi * pow( betaPiPi * sinThk, 2 );
214 const double L =
lambda( mEta * mEta, sLL, sPiPi );
215 const double ampSq =
m_eSq *
F0( sLL, sPiPi ) *
m_mixSq * L * betaProd /
void setProb(double prob)
double EvtDecayAngleChi(const EvtVector4R &, const EvtVector4R &, const EvtVector4R &, const EvtVector4R &, const EvtVector4R &)
double getArg(unsigned int j)
double rhoWidth(double s, double m) const
void decay(EvtParticle *p) override
void updateMassPars(double mLep, double mPi)
std::string getName() override
void initProbMax() override
static double getMeanMass(EvtId i)
void setProbMax(double prbmx)
double F0(double sLL, double sPiPi) const
double initializePhaseSpace(unsigned int numdaughter, EvtId *daughters, bool forceResetMasses=false, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
void checkSpinParent(EvtSpinType::spintype sp)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
double ampSquared(EvtParticle *p) const
static EvtId getId(const std::string &name)
const EvtVector4R & getP4() const
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
static double getWidth(EvtId i)
double EvtDecayAngle(const EvtVector4R &, const EvtVector4R &, const EvtVector4R &)
EvtParticle * getDaug(int i)
double lambda(double a, double b, double c) const
EvtDecayBase * clone() override
EvtId getDaug(int i) const