85 double sp = sin( phi );
86 double st = sin( theta );
87 double sk = sin( ksi );
88 double cp = cos( phi );
89 double ct = cos( theta );
90 double ck = cos( ksi );
92 double x = ( ck * ct * cp - sk * sp ) *
m_v[1] +
93 ( -sk * ct * cp - ck * sp ) *
m_v[2] + st * cp *
m_v[3];
94 double y = ( ck * ct * sp + sk * cp ) *
m_v[1] +
95 ( -sk * ct * sp + ck * cp ) *
m_v[2] + st * sp *
m_v[3];
96 double z = -ck * st *
m_v[1] + sk * st *
m_v[2] + ct *
m_v[3];
105 s <<
"(" << v.
m_v[0] <<
"," << v.
m_v[1] <<
"," << v.
m_v[2] <<
","
113 double e = p4.
get( 0 );
124 double bx, by, bz, gamma, b2;
130 double bxx = bx * bx;
131 double byy = by * by;
132 double bzz = bz * bz;
134 b2 = bxx + byy + bzz;
136 if ( b2 > 0.0 && b2 < 1.0 ) {
137 gamma = 1.0 / sqrt( 1.0 - b2 );
139 double gb2 = ( gamma - 1.0 ) / b2;
141 double gb2xy = gb2 * bx * by;
142 double gb2xz = gb2 * bx * bz;
143 double gb2yz = gb2 * by * bz;
145 double gbx = gamma * bx;
146 double gby = gamma * by;
147 double gbz = gamma * bz;
155 m_v[0] = gamma * e2 - gbx * px2 - gby * py2 - gbz * pz2;
157 m_v[1] = -gbx * e2 + gb2 * bxx * px2 + px2 + gb2xy * py2 +
160 m_v[2] = -gby * e2 + gb2 * byy * py2 + py2 + gb2xy * px2 +
163 m_v[3] = -gbz * e2 + gb2 * bzz * pz2 + pz2 + gb2yz * py2 +
166 m_v[0] = gamma * e2 + gbx * px2 + gby * py2 + gbz * pz2;
168 m_v[1] = gbx * e2 + gb2 * bxx * px2 + px2 + gb2xy * py2 + gb2xz * pz2;
170 m_v[2] = gby * e2 + gb2 * byy * py2 + py2 + gb2xy * px2 + gb2yz * pz2;
172 m_v[3] = gbz * e2 + gb2 * bzz * pz2 + pz2 + gb2yz * py2 + gb2xz * px2;
212 temp =
m_v[1] * p2.
m_v[1];
213 temp +=
m_v[2] * p2.
m_v[2];
214 temp +=
m_v[3] * p2.
m_v[3];
230 return -1.0 /
mass() * ( l * p3 );
237 return 1 /
mass2() * ( ( *this ) * p1 ) * ( ( *
this ) * p2 ) - p1 * p2;
250 return sqrt(
mag2r3( p1 ) );
double real(const EvtComplex &c)
EvtTensor4C dual(const EvtTensor4C &t2)
EvtVector4R rotateEuler(const EvtVector4R &rs, double alpha, double beta, double gamma)
ostream & operator<<(ostream &s, const EvtVector4R &v)
EvtVector4R boostTo(const EvtVector4R &rs, const EvtVector4R &p4, bool inverse)
EvtVector4C cont2(const EvtVector4C &v4) const
const EvtComplex & get(int) const
double dot(const EvtVector4R &v2) const
void applyRotateEuler(double alpha, double beta, double gamma)
double magr3(const EvtVector4R &p1) const
double dotr3(const EvtVector4R &p1, const EvtVector4R &p2) const
double scalartripler3(const EvtVector4R &p1, const EvtVector4R &p2, const EvtVector4R &p3) const
double Square(double x) const
double mag2r3(const EvtVector4R &p1) const
EvtVector4R cross(const EvtVector4R &v2) const
void applyBoostTo(const EvtVector4R &p4, bool inverse=false)
EvtTensor3C directProd(const EvtVector3C &c1, const EvtVector3C &c2)