This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / PHOS / CLHEP / Vector / LorentzVector.icc
1 // -*- C++ -*-
2 // $Id$
3 // ---------------------------------------------------------------------------
4 //
5 // This file is a part of the CLHEP - a Class Library for High Energy Physics.
6 // 
7 // This is the definitions of the inline member functions of the
8 // HepLorentzVector class.
9 //
10
11 #ifdef HEP_DEBUG_INLINE
12 #define inline
13 #endif
14
15 inline HepDouble HepLorentzVector::x() const { return pp.x(); }
16 inline HepDouble HepLorentzVector::y() const { return pp.y(); }
17 inline HepDouble HepLorentzVector::z() const { return pp.z(); }
18 inline HepDouble HepLorentzVector::t() const { return ee; }
19
20 inline HepLorentzVector::
21 HepLorentzVector(HepDouble x, HepDouble y, HepDouble z, HepDouble t)
22   : pp(x, y, z), ee(t) {}
23
24 inline HepLorentzVector::HepLorentzVector(const Hep3Vector & p, HepDouble e)
25   : pp(p), ee(e) {}
26
27 inline HepLorentzVector::HepLorentzVector(const HepLorentzVector & p)
28   : pp(p.x(), p.y(), p.z()), ee(p.t()) {}
29
30 inline HepLorentzVector::~HepLorentzVector() {}
31
32 inline HepLorentzVector::operator Hep3Vector () const { return pp; }
33 inline HepLorentzVector::operator Hep3Vector & () { return pp; }
34
35 inline void HepLorentzVector::setX(HepDouble a) { pp.setX(a); } 
36 inline void HepLorentzVector::setY(HepDouble a) { pp.setY(a); }
37 inline void HepLorentzVector::setZ(HepDouble a) { pp.setZ(a); }
38 inline void HepLorentzVector::setT(HepDouble a) { ee = a;}
39
40 inline HepDouble HepLorentzVector::px() const { return pp.x(); }
41 inline HepDouble HepLorentzVector::py() const { return pp.y(); }
42 inline HepDouble HepLorentzVector::pz() const { return pp.z(); }
43 inline HepDouble HepLorentzVector::e()  const { return ee; }
44
45 inline void HepLorentzVector::setPx(HepDouble a) { pp.setX(a); } 
46 inline void HepLorentzVector::setPy(HepDouble a) { pp.setY(a); }
47 inline void HepLorentzVector::setPz(HepDouble a) { pp.setZ(a); }
48 inline void HepLorentzVector::setE(HepDouble a)  { ee = a;}
49
50 inline Hep3Vector HepLorentzVector::vect() const { return pp; } 
51 inline void HepLorentzVector::setVect(const Hep3Vector &p) { pp = p; } 
52
53 inline HepDouble HepLorentzVector::theta() const { return pp.theta(); }
54 inline HepDouble HepLorentzVector::cosTheta() const { return pp.cosTheta(); }
55 inline HepDouble HepLorentzVector::phi() const { return pp.phi(); }
56 inline HepDouble HepLorentzVector::rho() const { return pp.mag(); }
57
58 inline void HepLorentzVector::setTheta(HepDouble a) { pp.setTheta(a); }
59 inline void HepLorentzVector::setPhi(HepDouble a) { pp.setPhi(a); }
60 inline void HepLorentzVector::setRho(HepDouble a) { pp.setMag(a); }
61
62 inline HepDouble HepLorentzVector::operator () (int i) const {
63   if (i==3) { return ee; } else { return pp(i); }
64 }
65
66 inline HepLorentzVector &
67 HepLorentzVector::operator = (const HepLorentzVector & q) {
68   pp = q.vect();
69   ee = q.t();
70   return *this;
71 }
72
73 inline HepLorentzVector
74 HepLorentzVector::operator + (const HepLorentzVector & q) const {
75   return HepLorentzVector(x()+q.x(), y()+q.y(), z()+q.z(), t()+q.t());
76 }
77
78 inline HepLorentzVector &
79 HepLorentzVector::operator += (const HepLorentzVector & q) {
80   pp += q.vect();
81   ee += q.t();
82   return *this;
83 }
84
85 inline HepLorentzVector
86 HepLorentzVector::operator - (const HepLorentzVector & q) const {
87   return HepLorentzVector(x()-q.x(), y()-q.y(), z()-q.z(), t()-q.t());
88 }
89
90 inline HepLorentzVector &
91 HepLorentzVector::operator -= (const HepLorentzVector & q) {
92   pp -= q.vect();
93   ee -= q.t();
94   return *this;
95 }
96
97 inline HepLorentzVector HepLorentzVector::operator - () const {
98   return HepLorentzVector(-x(), -y(), -z(), -t());
99 }
100
101 inline HepBoolean
102 HepLorentzVector::operator == (const HepLorentzVector & q) const {
103   return (vect()==q.vect() && t()==q.t());
104 }
105
106 inline HepBoolean
107 HepLorentzVector::operator != (const HepLorentzVector & q) const {
108   return (vect()!=q.vect() || t()!=q.t());
109 }
110
111 inline HepDouble HepLorentzVector::perp2() const {
112   return pp.perp2();
113
114
115 inline HepDouble HepLorentzVector::perp() const {
116   return pp.perp();
117 }
118
119 inline HepDouble HepLorentzVector::perp2(const Hep3Vector &v) const {
120   return pp.perp2(v);
121 }
122
123 inline HepDouble HepLorentzVector::perp(const Hep3Vector &v) const {
124   return pp.perp(v);
125 }
126
127 inline HepDouble HepLorentzVector::angle(const Hep3Vector &v) const {
128   return pp.angle(v);
129 }
130
131 inline HepDouble HepLorentzVector::mag2() const {
132   return t()*t() - pp.mag2();
133 }
134
135 inline HepDouble HepLorentzVector::mag() const {
136   HepDouble mm = mag2();
137   return mm < 0.0 ? -sqrt(-mm) : sqrt(mm);
138 }
139
140 inline HepDouble HepLorentzVector::m2() const { return mag2(); }
141 inline HepDouble HepLorentzVector::m() const { return mag(); }
142
143
144 inline HepDouble HepLorentzVector::dot(const HepLorentzVector & q) const {
145   return t()*q.t() - z()*q.z() - y()*q.y() - x()*q.x();
146 }
147
148 inline HepDouble
149 HepLorentzVector::operator * (const HepLorentzVector & q) const {
150   return dot(q);
151 }
152
153 inline HepDouble HepLorentzVector::plus() const {
154   return t() + z();
155 }
156
157 inline HepDouble HepLorentzVector::minus() const {
158   return t() - z();
159 }
160
161 inline Hep3Vector HepLorentzVector::boostVector() const {
162   return Hep3Vector(x()/t(), y()/t(), z()/t());
163 }
164
165 inline void HepLorentzVector::boost(const Hep3Vector & b){
166   boost(b.x(), b.y(), b.z());
167 }
168
169 inline void HepLorentzVector::rotateX(HepDouble a) { pp.rotateX(a); }
170 inline void HepLorentzVector::rotateY(HepDouble a) { pp.rotateY(a); }
171 inline void HepLorentzVector::rotateZ(HepDouble a) { pp.rotateZ(a); }
172 inline void HepLorentzVector::rotateUz(Hep3Vector &v) { pp.rotateUz(v); }
173 inline void HepLorentzVector::rotate(HepDouble a, const Hep3Vector &v) {
174  pp.rotate(a,v);
175 }
176
177 inline HepLorentzVector &
178 HepLorentzVector::operator *= (const HepRotation & m) {
179   pp *= m;
180   return *this;
181 }
182
183 inline HepLorentzVector &
184 HepLorentzVector::transform(const HepRotation & m) {
185   pp.transform(m);
186   return *this;
187 }
188
189 #ifdef HEP_DEBUG_INLINE
190 #undef inline
191 #endif