31 return Vector(vector1.x + vector2.x , vector1.y + vector2.y , vector1.z + vector2.z);
35 friend void operator +=(
Vector& vector1,
const Vector& vector2)
37 vector1 = vector1 + vector2;
42 return Vector(vector1.x - vector2.x , vector1.y - vector2.y , vector1.z - vector2.z);
46 friend void operator -=(
Vector& vector1,
const Vector& vector2)
48 vector1 = vector1 - vector2;
53 return Vector(-vec.x,-vec.y,-vec.z);
57 friend double operator *(
const Vector& vector1,
const Vector& vector2)
59 return ((vector1.x * vector2.x) + (vector1.y * vector2.y) + (vector1.z * vector2.z));
64 friend Vector operator /(
const Vector &v,
const double& a)
66 return Vector(v.x / a, v.y / a, v.z / a);
70 friend Vector operator *(
const double& a,
const Vector& v)
72 return Vector(a*v.x , a*v.y , a*v.z);
75 friend Vector operator *(
const Vector& v,
const double& a)
77 return Vector(a*v.x , a*v.y , a*v.z);
82 friend ostream& operator <<(ostream& outs,
const Vector& vec);
85 double operator [](
int i)
const 101 Vector(
double x_inp,
double y_inp,
double z_inp);
108 Vector(
double theta,
double phi);
117 Vector RotateX(
double angle)
const;
122 Vector RotateY(
double angle)
const;
127 Vector RotateZ(
double angle)
const;
135 double Dot(
const Vector &vec)
const;
144 double Mag2()
const {
return X()*X()* +
Y()*
Y() + Z()*Z(); }
149 double Angle(
const Vector &vec)
const;
158 Vector Orthogonal()
const;
166 double GetX()
const {
return x; }
167 double GetY()
const {
return y; }
168 double GetZ()
const {
return z; }
169 double X()
const {
return x; }
170 double Y()
const {
return y; }
171 double Z()
const {
return z; }
175 double Theta()
const;
180 void SetX(
double inp) { x = inp; angles_need_updating = true ;}
181 void SetY(
double inp) { y = inp; angles_need_updating = true ;}
182 void SetZ(
double inp) { z = inp; angles_need_updating = true ;}
183 void SetXYZ(
double inpx,
double inpy,
double inpz)
188 angles_need_updating =
true;
190 void Reset(
double x_inp,
double y_inp,
double z_inp) { SetXYZ(x_inp, y_inp, z_inp); }
197 mutable double theta;
199 mutable bool angles_need_updating;
202 void UpdateThetaPhi()
const;
Inelasticity distributions: stores parametrizations and picks inelasticities.
This class represents a three-vector. Operators are overloaded to provide for the familiar operations...