38 double mp2 = p.
mass2();
39 double mq2 = q.
mass2();
40 double md2 = d.
mass2();
42 double cost = ( pd * mq2 - pq * qd ) /
43 std::sqrt( ( pq * pq - mq2 * mp2 ) * ( qd * qd - mq2 * md2 ) );
57 p4_d1p =
boostTo( p4_d1, p4_p,
true );
58 p4_d2p =
boostTo( p4_d2, p4_p,
true );
59 p4_h1p =
boostTo( p4_h1, p4_p,
true );
60 p4_h2p =
boostTo( p4_h2, p4_p,
true );
67 d1_perp = p4_d1p - ( D.
dot( p4_d1p ) / D.
dot( D ) ) * D;
68 h1_perp = p4_h1p - ( D.
dot( p4_h1p ) / D.
dot( D ) ) * D;
72 d1_prime = D.
cross( d1_perp );
74 d1_perp = d1_perp / d1_perp.
d3mag();
75 d1_prime = d1_prime / d1_prime.
d3mag();
79 x = d1_perp.
dot( h1_perp );
80 y = d1_prime.
dot( h1_perp );
82 double chi = std::atan2( y, x );
100 return q.
mass() * ( p * l ) /
108 double eq = ( p * q ) / p.
mass();
109 double ed = ( p * d ) / p.
mass();
110 double mq = q.
mass();
111 double q2 = p.
mag2r3( q );
112 double qd = p.
dotr3( q, d );
113 double zq = p.
dotr3( z, q );
114 double zd = p.
dotr3( z, d );
115 double alpha = ( eq - mq ) / ( q2 * mq ) * qd - ed / mq;
118 double x = ( zq * ( qd + alpha * q2 ) - q2 * ( zd + alpha * zq ) ) /
121 double phi = std::atan2( y, x );
136 const double MSq = M * M;
137 const double mSum = m1 + m2;
138 const double mDiff = m1 - m2;
139 double result = ( MSq - mDiff * mDiff ) * ( MSq - mSum * mSum );
143 return std::sqrt( result ) / ( 2 * M );
double real(const EvtComplex &c)
EvtComplex exp(const EvtComplex &c)
double EvtDecayPlaneNormalAngle(const EvtVector4R &p, const EvtVector4R &q, const EvtVector4R &d1, const EvtVector4R &d2)
double EvtDecayAnglePhi(const EvtVector4R &z, const EvtVector4R &p, const EvtVector4R &q, const EvtVector4R &d)
double EvtDecayAngle(const EvtVector4R &p, const EvtVector4R &q, const EvtVector4R &d)
EvtComplex wignerD(int j, int m1, int m2, double phi, double theta, double gamma)
double EvtDecayAngleChi(const EvtVector4R &p4_p, const EvtVector4R &p4_d1, const EvtVector4R &p4_d2, const EvtVector4R &p4_h1, const EvtVector4R &p4_h2)
double twoBodyMomentum(const double M, const double m1, const double m2)
EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger &rs, const EvtVector4R p4)
EvtTensor4C dual(const EvtTensor4C &t2)
static const double twoPi
EvtVector4C cont2(const EvtVector4C &v4) const
const EvtComplex & get(int) const
double dot(const EvtVector4R &v2) const
double dotr3(const EvtVector4R &p1, const EvtVector4R &p2) const
double scalartripler3(const EvtVector4R &p1, const EvtVector4R &p2, const EvtVector4R &p3) const
double mag2r3(const EvtVector4R &p1) const
EvtVector4R cross(const EvtVector4R &v2) const
static double d(int j, int m1, int m2, double theta)
EvtTensor3C directProd(const EvtVector3C &c1, const EvtVector3C &c2)