51 double m2 =
v[0] *
v[0] -
v[1] *
v[1] -
v[2] *
v[2] -
v[3] *
v[3];
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 ) *
v[1] +
93 ( -sk * ct * cp - ck * sp ) *
v[2] + st * cp *
v[3];
94 double y = ( ck * ct * sp + sk * cp ) *
v[1] +
95 ( -sk * ct * sp + ck * cp ) *
v[2] + st * sp *
v[3];
96 double z = -ck * st *
v[1] + sk * st *
v[2] + ct *
v[3];
105 s <<
"(" << v.
v[0] <<
"," << v.
v[1] <<
"," << v.
v[2] <<
"," << v.
v[3] <<
")";
112 double e = p4.
get( 0 );
123 double bx, by, bz, gamma, b2;
129 double bxx = bx * bx;
130 double byy = by * by;
131 double bzz = bz * bz;
133 b2 = bxx + byy + bzz;
135 if ( b2 > 0.0 && b2 < 1.0 ) {
136 gamma = 1.0 / sqrt( 1.0 - b2 );
138 double gb2 = ( gamma - 1.0 ) / b2;
140 double gb2xy = gb2 * bx * by;
141 double gb2xz = gb2 * bx * bz;
142 double gb2yz = gb2 * by * bz;
144 double gbx = gamma * bx;
145 double gby = gamma * by;
146 double gbz = gamma * bz;
154 v[0] = gamma * e2 - gbx * px2 - gby * py2 - gbz * pz2;
156 v[1] = -gbx * e2 + gb2 * bxx * px2 + px2 + gb2xy * py2 + gb2xz * pz2;
158 v[2] = -gby * e2 + gb2 * byy * py2 + py2 + gb2xy * px2 + gb2yz * pz2;
160 v[3] = -gbz * e2 + gb2 * bzz * pz2 + pz2 + gb2yz * py2 + gb2xz * px2;
162 v[0] = gamma * e2 + gbx * px2 + gby * py2 + gbz * pz2;
164 v[1] = gbx * e2 + gb2 * bxx * px2 + px2 + gb2xy * py2 + gb2xz * pz2;
166 v[2] = gby * e2 + gb2 * byy * py2 + py2 + gb2xy * px2 + gb2yz * pz2;
168 v[3] = gbz * e2 + gb2 * bzz * pz2 + pz2 + gb2yz * py2 + gb2xz * px2;
181 temp.
v[1] =
v[2] * p2.
v[3] -
v[3] * p2.
v[2];
182 temp.
v[2] =
v[3] * p2.
v[1] -
v[1] * p2.
v[3];
183 temp.
v[3] =
v[1] * p2.
v[2] -
v[2] * p2.
v[1];
194 temp =
v[1] *
v[1] +
v[2] *
v[2] +
v[3] *
v[3];
208 temp =
v[1] * p2.
v[1];
209 temp +=
v[2] * p2.
v[2];
210 temp +=
v[3] * p2.
v[3];
226 return -1.0 /
mass() * ( l * p3 );
233 return 1 /
mass2() * ( ( *this ) * p1 ) * ( ( *
this ) * p2 ) - p1 * p2;
246 return sqrt(
mag2r3( p1 ) );
EvtTensor3C directProd(const EvtVector3C &c1, const EvtVector3C &c2)
void applyRotateEuler(double alpha, double beta, double gamma)
double dotr3(const EvtVector4R &p1, const EvtVector4R &p2) const
double magr3(const EvtVector4R &p1) const
double Square(double x) const
EvtTensor4C dual(const EvtTensor4C &t2)
EvtVector4R cross(const EvtVector4R &v2)
EvtVector4C cont2(const EvtVector4C &v4) const
ostream & operator<<(ostream &s, const EvtVector4R &v)
double mag2r3(const EvtVector4R &p1) const
EvtVector4R boostTo(const EvtVector4R &rs, const EvtVector4R &p4, bool inverse)
void applyBoostTo(const EvtVector4R &p4, bool inverse=false)
const EvtComplex & get(int) const
double scalartripler3(const EvtVector4R &p1, const EvtVector4R &p2, const EvtVector4R &p3) const
double real(const EvtComplex &c)
double dot(const EvtVector4R &v2) const
EvtVector4R rotateEuler(const EvtVector4R &rs, double alpha, double beta, double gamma)