21#include "EvtGenBase/EvtPatches.hh"
25#include "EvtGenBase/EvtVector4R.hh"
26#include "EvtGenBase/EvtVector3R.hh"
27#include "EvtGenBase/EvtVector4C.hh"
28#include "EvtGenBase/EvtTensor4C.hh"
36 v[0]=e; v[1]=p1; v[2]=p2; v[3]=p3;
41 double m2=v[0]*v[0]-v[1]*v[1]-v[2]*v[2]-v[3]*v[3];
53 double alpha,
double beta,
double gamma){
90 double x=( ck*ct*cp-sk*sp)*v[1]+( -sk*ct*cp-ck*sp)*v[2]+st*cp*v[3];
91 double y=( ck*ct*sp+sk*cp)*
v[1]+(-sk*ct*sp+ck*cp)*
v[2]+st*sp*
v[3];
92 double z=-ck*st*
v[1]+sk*st*
v[2]+ct*
v[3];
102 s<<
"("<<
v.v[0]<<
","<<
v.v[1]<<
","<<
v.v[2]<<
","<<
v.v[3]<<
")";
122 double bx,by,bz,gamma,b2;
141 gamma=1.0/sqrt(1-b2);
144 double gb2=(gamma-1.0)/b2;
146 double gb2xy=gb2*bx*by;
147 double gb2xz=gb2*bx*bz;
148 double gb2yz=gb2*by*bz;
159 v[0]=gamma*
e2+gbx*px2+gby*py2+gbz*pz2;
161 v[1]=gbx*
e2+gb2*bxx*px2+px2+gb2xy*py2+gb2xz*pz2;
163 v[2]=gby*
e2+gb2*byy*py2+py2+gb2xy*px2+gb2yz*pz2;
165 v[3]=gbz*
e2+gb2*bzz*pz2+pz2+gb2yz*py2+gb2xz*px2;
179 temp.v[1] = v[2]*p2.v[3] - v[3]*p2.v[2];
180 temp.v[2] = v[3]*p2.v[1] - v[1]*p2.v[3];
181 temp.v[3] = v[1]*p2.v[2] - v[2]*p2.v[1];
192 temp = v[1]*v[1]+v[2]*v[2]+v[3]*v[3];
207 temp += v[2]*p2.v[2];
208 temp += v[3]*p2.v[3];
224 return -1.0/
mass() * (l * p3);
231 return 1/
mass2() * ((*this) * p1) * ((*
this) * p2) - p1 * p2;
238 return Square((*
this) * p1)/
mass2() - p1.
mass2();
250 return (v[1]==0 && v[2]==0 && v[3]==0 )?0: atan2(sqrt(v[1]*v[1]+v[2]*v[2]),
v[3]);
255 return (v[1]==0 && v[2]==0)?0: atan2(v[2],v[1]);
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
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)
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)