50 double amag = fabs(
mag); cX = amag * sin(
theta) * cos(
phi);
56{
return cX == 0.0 && cY == 0.0 && cZ == 0.0 ? 0.0 : atan2(
perp(),cZ);}
59{
return cX == 0.0 && cY == 0.0 ? 0.0 : atan2(cY,cX);}
62{
return sqrt(cX*cX + cY*cY);}
65{
return (cX*cX + cY*cY);}
68{
return (cX*cX + cY*cY + cZ*cZ);}
71{
return sqrt(
mag2());}
73 double x()
const {
return cX;};
74 double y()
const {
return cY;};
75 double z()
const {
return cZ;};
77 void setX(
double _x){cX=_x;};
78 void setY(
double _y){cY=_y;};
79 void setZ(
double _z){cZ=_z;};
86 double arg =
dot(q)/sqrt(ptot2);
87 if(arg > 1.0) arg = 1.0;
88 if(arg < -1.0) arg = -1.0;
94 double s = sin(
angle);
double c = cos(
angle);
double yy = cY;
95 cY = c*yy - s*cZ; cZ = s*yy + c*cZ;
100 double s = sin(
angle);
double c = cos(
angle);
double zz = cZ;
101 cZ = c*zz - s*cX; cX = s*zz + c*cX;
106 double s = sin(
angle);
double c = cos(
angle);
double xx = cX;
107 cX = c*xx - s*cY; cY = s*xx + c*cY;
114 return vector3(cY*vec.
z()-vec.
y()*cZ, cZ*vec.
x()-vec.
z()*cX,
115 cX*vec.
y()-vec.
x()*cY);
118{
return (cX*vec.
x() + cY*vec.
y() + cZ*vec.
z());}
121 void print(
const char *_line =
"V3 ")
122 {printf(
"%s : %9.5f %9.5f %9.5f (Mag = %9.5f )\n",
123 _line,
x(),
y(),
z(),
mag());};
139{
return vector3(a.
x() - b.
x(), a.
y() - b.
y(), a.
z() - b.
z());}
149{ cX += p.cX; cY += p.cY; cZ += p.cZ;
return *
this; }
152{ cX -= p.cX; cY -= p.cY; cZ -= p.cZ;
return *
this; }
168lorentz4 (
double _px,
double _py,
double _pz,
double _e)
169{ fVect.
setXYZ(_px,_py,_pz);fE = _e;}
173double px()
const {
return fVect.
x();};
174 double py()
const {
return fVect.
y();};
175 double pz()
const {
return fVect.
z();};
176 double x()
const {
return fVect.
x();};
177 double y()
const {
return fVect.
y();};
178 double z()
const {
return fVect.
z();};
180 double phi()
const {
return fVect.
phi();};
182 double m2()
const {
return (fE*fE-fVect.
mag2());};
185 double e()
const {
return fE;};
186 double t()
const {
return fE;};
193 void setT(
double _eg){fE=_eg;};
195 void setXYZM(
double _x,
double _y,
double _z,
double _m)
197 setXYZE(_x,_y,_z,sqrt(_x*_x+_y*_y+_z*_z+_m*_m));
199 setXYZE(_x,_y,_z,sqrt(_x*_x+_y*_y+_z*_z));
202void setXYZE(
double _x,
double _y,
double _z,
double _e)
223 return mm < 0.0 ? -sqrt(-mm) : sqrt(mm);
236void boost(
double bx,
double by,
double bz)
238 double b2 = bx*bx + by*by + bz*bz;
240 double gamma = 1.0 / sqrt(1.0 - b2);
242 double bp = bx*
x() + by*
y() + bz*
z();
244 double gamma2 = b2 > 0 ? (gamma - 1.0)/b2 : 0.0;
246 setX(
x() + gamma2*bp*bx + gamma*bx*
t());
247 setY(
y() + gamma2*bp*by + gamma*by*
t());
248 setZ(
z() + gamma2*bp*bz + gamma*bz*
t());
249 setT(gamma*(
t() + bp));
252 void print(
const char *_line =
"LV ")
253 {printf(
"%s : %9.5f %9.5f %9.5f (Mag = %9.5f , M = %9.5f)\n",
278 fVect -= q.
vect(); fE -= q.
t();
return *
this;
lorentz4(double _px, double _py, double _pz, double _e)
Definition fizika.h:168
void boost(double bx, double by, double bz)
Definition fizika.h:236
void setY(double _p)
Definition fizika.h:191
void rotateY(double angle)
Definition fizika.h:215
lorentz4()
Definition fizika.h:167
void setZ(double _p)
Definition fizika.h:192
lorentz4 & operator+=(const lorentz4 &)
Definition fizika.h:272
double y() const
Definition fizika.h:177
double py() const
Definition fizika.h:174
double p() const
Definition fizika.h:183
lorentz4(vector3 v, double energy)
Definition fizika.h:170
void rotateX(double angle)
Definition fizika.h:213
vector3 boostVector()
Definition fizika.h:226
double m() const
Definition fizika.h:220
double x() const
Definition fizika.h:176
void setX(double _p)
Definition fizika.h:190
double e() const
Definition fizika.h:185
void setXYZE(double _x, double _y, double _z, double _e)
Definition fizika.h:202
double t() const
Definition fizika.h:186
double phi() const
Definition fizika.h:180
double m2() const
Definition fizika.h:182
void rotateZ(double angle)
Definition fizika.h:217
void setXYZM(double _x, double _y, double _z, double _m)
Definition fizika.h:195
double pz() const
Definition fizika.h:175
void boost(vector3 vb)
Definition fizika.h:231
void setT(double _eg)
Definition fizika.h:193
void setVectM(vector3 &_v, double _mass)
Definition fizika.h:208
lorentz4 & operator=(const lorentz4 &)
Definition fizika.h:263
lorentz4 & operator-=(const lorentz4 &)
Definition fizika.h:277
void print(const char *_line="LV ")
Definition fizika.h:252
double z() const
Definition fizika.h:178
vector3 vect() const
Definition fizika.h:187
~lorentz4()
Definition fizika.h:171
double theta() const
Definition fizika.h:179
lorentz4 operator-(const lorentz4 &) const
Definition fizika.h:274
lorentz4 operator+(const lorentz4 &) const
Definition fizika.h:269
double px() const
Definition fizika.h:173
vector3 & operator+=(const vector3 &)
Definition fizika.h:148
double mag2() const
Definition fizika.h:67
void rotateZ(double angle)
Definition fizika.h:104
void setXYZ(double x, double y, double z)
Definition fizika.h:47
double theta() const
Definition fizika.h:55
double perp2() const
Definition fizika.h:64
double z() const
Definition fizika.h:75
vector3 & operator-=(const vector3 &)
Definition fizika.h:151
double x() const
Definition fizika.h:73
void setZ(double _z)
Definition fizika.h:79
double mag() const
Definition fizika.h:70
void print(const char *_line="V3 ")
Definition fizika.h:121
~vector3()
Definition fizika.h:45
vector3 cross(const vector3 &vec) const
Definition fizika.h:112
const vector3 & operator=(const vector3 &vec)
Definition fizika.h:125
void setX(double _x)
Definition fizika.h:77
void setMagThetaPhi(double mag, double theta, double phi)
Definition fizika.h:48
double y() const
Definition fizika.h:74
double phi() const
Definition fizika.h:58
double perp() const
Definition fizika.h:61
vector3(double x, double y, double z)
Definition fizika.h:43
double dot(const vector3 &vec) const
Definition fizika.h:117
double angle(const vector3 &q)
Definition fizika.h:81
void rotateY(double angle)
Definition fizika.h:98
void setY(double _y)
Definition fizika.h:78
vector3()
Definition fizika.h:42
void rotateX(double angle)
Definition fizika.h:92
vector3 operator*(double a, const vector3 &b)
Definition fizika.h:141
vector3 operator+(const vector3 &a, const vector3 &b)
Definition fizika.h:135
vector3 operator-(const vector3 &a, const vector3 &b)
Definition fizika.h:138