42 double m2 = v[0] * v[0] - v[1] * v[1] - v[2] * v[2] - v[3] * v[3];
44 if (
m2 > 0.0 ) {
return sqrt(
m2 ); }
73 double sk =
sin( ksi );
76 double ck =
cos( ksi );
79 ( ck * ct * cp - sk * sp ) * v[1] + ( -sk * ct * cp - ck * sp ) * v[2] + st * cp * v[3];
81 ( ck * ct * sp + sk * cp ) * v[1] + ( -sk * ct * sp + ck * cp ) * v[2] + st * sp * v[3];
82 double z = -ck * st * v[1] + sk * st * v[2] + ct * v[3];
91 s <<
"(" <<
v.v[0] <<
"," <<
v.v[1] <<
"," <<
v.v[2] <<
"," <<
v.v[3] <<
")";
98 double e = p4.
get( 0 );
109 double bx, by, bz, gamma, b2;
115 double bxx = bx * bx;
116 double byy = by * by;
117 double bzz = bz * bz;
119 b2 = bxx + byy + bzz;
121 if ( b2 == 0.0 ) {
return; }
125 gamma = 1.0 / sqrt( 1 - b2 );
127 double gb2 = ( gamma - 1.0 ) / b2;
129 double gb2xy = gb2 * bx * by;
130 double gb2xz = gb2 * bx * bz;
131 double gb2yz = gb2 * by * bz;
133 double gbx = gamma * bx;
134 double gby = gamma * by;
135 double gbz = gamma * bz;
142 v[0] = gamma *
e2 + gbx * px2 + gby * py2 + gbz * pz2;
144 v[1] = gbx *
e2 + gb2 * bxx * px2 + px2 + gb2xy * py2 + gb2xz * pz2;
146 v[2] = gby *
e2 + gb2 * byy * py2 + py2 + gb2xy * px2 + gb2yz * pz2;
148 v[3] = gbz *
e2 + gb2 * bzz * pz2 + pz2 + gb2yz * py2 + gb2xz * px2;
161 temp.v[1] = v[2] *
p2.v[3] - v[3] *
p2.v[2];
162 temp.v[2] = v[3] *
p2.v[1] - v[1] *
p2.v[3];
163 temp.v[3] = v[1] *
p2.v[2] - v[2] *
p2.v[1];
174 temp = v[1] * v[1] + v[2] * v[2] + v[3] * v[3];
188 temp = v[1] *
p2.v[1];
189 temp += v[2] *
p2.v[2];
190 temp += v[3] *
p2.v[3];
205 return -1.0 /
mass() * ( l * p3 );
211 return 1 /
mass2() * ( ( *this ) *
p1 ) * ( ( *
this ) *
p2 ) -
p1 *
p2;
217 return Square( ( *
this ) *
p1 ) /
mass2() -
p1.mass2();
225 return ( v[1] == 0 && v[2] == 0 && v[3] == 0 )
227 : atan2( sqrt( v[1] * v[1] + v[2] * v[2] ), v[3] );
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
EvtTensor4C dual(const EvtTensor4C &t2)
EvtVector4R boostTo(const EvtVector4R &rs, const EvtVector4R &p4)
EvtVector4R rotateEuler(const EvtVector4R &rs, double alpha, double beta, double gamma)
ostream & operator<<(ostream &s, const EvtVector4R &v)
double sin(const BesAngle a)
double cos(const BesAngle a)
**********Class see also m_nmax DOUBLE PRECISION m_amel DOUBLE PRECISION m_x2 DOUBLE PRECISION m_alfinv DOUBLE PRECISION m_Xenph INTEGER m_KeyWtm INTEGER m_idyfs DOUBLE PRECISION m_zini DOUBLE PRECISION m_q2 DOUBLE PRECISION m_Wt_KF DOUBLE PRECISION m_WtCut INTEGER m_KFfin *COMMON c_KarLud $ !Input CMS energy[GeV] $ !CMS energy after beam spread beam strahlung[GeV] $ !Beam energy spread[GeV] $ !z boost due to beam spread $ !electron beam mass *ff pair spectrum $ !minimum v
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
EvtVector4R cross(const EvtVector4R &v2)
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
void applyBoostTo(const EvtVector4R &p4)