59 for (
int i = 1; i <= (
getNDaug() - 1 ); i++ ) {
100 <<
"Have not yet implemented this final state in BCPSINPI model"
103 for (
int id = 0;
id < (
getNDaug() - 1 );
id++ )
112 <<
"Have not yet implemented this final state in BCPSINPI model"
115 for (
int id = 0;
id < (
getNDaug() - 1 );
id++ )
125 return ( M * M + m1 * m1 - m2 * m2 ) / ( 2 * M );
130 double e1 =
energy1( M, m1, m2 );
131 return sqrt( e1 * e1 - m1 * m1 );
151 double p1 =
mom1( M, m1, m2 );
178 if ( M < m1 +
m_mA1 )
215 EvtIdSet thePis{
"pi+",
"pi-",
"pi0" };
224 double Q2 = Q.
mass2();
228 bool foundHadCurr =
false;
239 hardCur =
Fpi( p1, p2 ) * ( p1 - p2 );
243 int diffPi( 0 ), samePi1( 0 ), samePi2( 0 );
270 hardCur = BA1 * ( ( p1 - p3 ) -
271 ( Q * ( Q * ( p1 - p3 ) ) / Q2 ) *
Fpi( p2, p3 ) +
273 ( Q * ( Q * ( p2 - p3 ) ) / Q2 ) *
Fpi( p1, p3 ) );
277 if ( !foundHadCurr ) {
279 <<
"Have not yet implemented this final state in BCNPI model"
283 for (
id = 0;
id < (
getNDaug() - 1 );
id++ )
303 for (
int i = 0; i < 3; i++ ) {
309 amp2 += pow(
abs( amp ), 2 );
318 amp2 += pow(
abs( amp ), 2 );
328 double m1 = q1.
mass();
329 double m2 = q2.
mass();
336 double pPiRho = ( 1.0 /
m_mRho ) *
337 sqrt( ( dRho * dRho ) / 4.0 - m1 * m1 * m2 * m2 );
340 double pPiRhopr = ( 1.0 /
m_mRhopr ) *
341 sqrt( ( dRhopr * dRhopr ) / 4.0 - m1 * m1 * m2 * m2 );
343 double dQ = mQ2 - m1 * m1 - m2 * m2;
344 double pPiQ = ( 1.0 / sqrt( mQ2 ) ) *
345 sqrt( ( dQ * dQ ) / 4.0 - m1 * m1 * m2 * m2 );
348 pow( ( pPiQ / pPiRho ), 3 );
353 pow( ( pPiQ / pPiRhopr ), 3 );
363 if ( m2 > (
m_mRho + mPi ) ) {
364 return m2 * ( 1.623 + 10.38 / m2 - 9.32 / ( m2 * m2 ) +
365 0.65 / ( m2 * m2 * m2 ) );
367 double t1 = m2 - 9.0 * mPi * mPi;
368 return 4.1 * pow( t1, 3.0 ) * ( 1.0 - 3.3 * t1 + 5.8 * t1 * t1 );
375 <<
"Defining EvtBcToNPi model: Bc -> V + npi and Bc -> P + npi decays\n"
376 <<
"from A.V. Berezhnoy, A.K. Likhoded, A.V. Luchinsky: "
377 <<
"Phys.Rev.D 82, 014012 (2010) and arXiV:1104.0808." << endl;
EvtComplex exp(const EvtComplex &c)
double abs(const EvtComplex &c)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
EvtTensor4C dual(const EvtTensor4C &t2)
double energy1(double M, double m1, double m2)
EvtComplex Fpi(EvtVector4R q1, EvtVector4R q2)
double pi3G(double m2, int dupD)
double mom1(double M, double m1, double m2)
void decay(EvtParticle *p) override
void initProbMax() override
std::string getName() const override
EvtBcToNPi(bool printAuthorInfo=false)
EvtDecayBase * clone() const override
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 checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
const EvtId * getDaugs() const
static EvtSpinType::spintype getSpinType(EvtId i)
static double getMass(EvtId i)
static std::string name(EvtId i)
static double getMeanMass(EvtId i)
virtual EvtVector4C epsParent(int i) const
double initializePhaseSpace(size_t numdaughter, const EvtId *daughters, bool forceResetMasses=false, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
void setDiagonalSpinDensity()
EvtSpinType::spintype getSpinType() const
const EvtVector4R & getP4() const
void setP4(const EvtVector4R &p4)
EvtParticle * getDaug(const int i)
void makeDaughters(size_t ndaug, const EvtId *id)
EvtSpinDensity getSpinDensityForward()
void init(EvtId part_n, double e, double px, double py, double pz)
double normalizedProb(const EvtSpinDensity &d)
static const EvtTensor4C & g()
EvtVector4C cont2(const EvtVector4C &v4) const
void applyBoostTo(const EvtVector4R &p4, bool inverse=false)
EvtTensor3C directProd(const EvtVector3C &c1, const EvtVector3C &c2)