CLHEP 2.4.7.1
C++ Class Library for High Energy Physics
BoostX.icc
Go to the documentation of this file.
1// -*- C++ -*-
2// ---------------------------------------------------------------------------
3//
4// This file is a part of the CLHEP - a Class Library for High Energy Physics.
5//
6// This is the definitions of the inline member functions of the
7// HepBoostX class
8//
9
10#include <cmath>
11
12namespace CLHEP {
13
14// ---------- Constructors and Assignment:
15
16inline HepBoostX::HepBoostX() : beta_(0.0), gamma_(1.0) {}
17
18inline HepBoostX::HepBoostX(const HepBoostX & b) :
19 beta_ (b.beta_),
20 gamma_(b.gamma_) {}
21
23 beta_ = b.beta_;
24 gamma_ = b.gamma_;
25 return *this;
26}
27
28inline HepBoostX::HepBoostX(double bbeta) { set(bbeta); }
29
30// - Protected method:
31inline HepBoostX::HepBoostX( double bbeta, double ggamma ) :
32 beta_(bbeta), gamma_(ggamma) {}
33
34// ---------- Accessors:
35
36inline double HepBoostX::beta() const {
37 return beta_;
38}
39
40inline double HepBoostX::gamma() const {
41 return gamma_;
42}
43
45 return Hep3Vector( beta_, 0, 0 );
46}
47
49 return Hep3Vector(1.0, 0.0, 0.0);
50}
51
52inline double HepBoostX::xx() const { return gamma();}
53inline double HepBoostX::xy() const { return 0.0;}
54inline double HepBoostX::xz() const { return 0.0;}
55inline double HepBoostX::xt() const { return beta()*gamma();}
56inline double HepBoostX::yx() const { return 0.0;}
57inline double HepBoostX::yy() const { return 1.0;}
58inline double HepBoostX::yz() const { return 0.0;}
59inline double HepBoostX::yt() const { return 0.0;}
60inline double HepBoostX::zx() const { return 0.0;}
61inline double HepBoostX::zy() const { return 0.0;}
62inline double HepBoostX::zz() const { return 1.0;}
63inline double HepBoostX::zt() const { return 0.0;}
64inline double HepBoostX::tx() const { return beta()*gamma();}
65inline double HepBoostX::ty() const { return 0.0;}
66inline double HepBoostX::tz() const { return 0.0;}
67inline double HepBoostX::tt() const { return gamma();}
68
70 return HepLorentzVector ( gamma(), 0, 0, beta()*gamma() );
71}
73 return HepLorentzVector ( 0, 1, 0, 0 );
74}
76 return HepLorentzVector ( 0, 0, 1, 0 );
77}
79 return HepLorentzVector ( beta()*gamma(), 0, 0, gamma() );
80}
81
83 return HepLorentzVector ( col1() );
84}
86 return HepLorentzVector ( col2() );
87}
89 return HepLorentzVector ( col3() );
90}
92 return HepLorentzVector ( col4() );
93}
94
95// ---------- Comparisons:
96
97inline int HepBoostX::compare( const HepBoostX & b ) const {
98 if (beta() < b.beta()) {
99 return -1;
100 } else if (beta() > b.beta()) {
101 return 1;
102 } else {
103 return 0;
104 }
105}
106
107inline bool HepBoostX::operator == ( const HepBoostX & b ) const {
108 return beta_ == b.beta_;
109}
110inline bool HepBoostX::operator != ( const HepBoostX & b ) const {
111 return beta_ != b.beta_;
112}
113inline bool HepBoostX::operator <= ( const HepBoostX & b ) const {
114 return beta_ <= b.beta_;
115}
116inline bool HepBoostX::operator >= ( const HepBoostX & b ) const {
117 return beta_ >= b.beta_;
118}
119inline bool HepBoostX::operator < ( const HepBoostX & b ) const {
120 return beta_ < b.beta_;
121}
122inline bool HepBoostX::operator > ( const HepBoostX & b ) const {
123 return beta_ > b.beta_;
124}
125
126inline bool HepBoostX::isIdentity() const {
127 return ( beta() == 0 );
128}
129
130inline double HepBoostX::distance2( const HepBoostX & b ) const {
131 double d = beta()*gamma() - b.beta()*b.gamma();
132 return d*d;
133}
134
135inline double HepBoostX::howNear(const HepBoostX & b) const {
136 return std::sqrt(distance2(b)); }
137inline double HepBoostX::howNear(const HepBoost & b) const {
138 return std::sqrt(distance2(b)); }
139inline double HepBoostX::howNear(const HepRotation & r) const {
140 return std::sqrt(distance2(r)); }
141inline double HepBoostX::howNear(const HepLorentzRotation & lt) const {
142 return std::sqrt(distance2(lt)); }
143
144inline bool HepBoostX::isNear(const HepBoostX & b,
145 double epsilon) const {
146 return (distance2(b) <= epsilon*epsilon);
147}
148inline bool HepBoostX::isNear(const HepBoost & b,
149 double epsilon) const {
150 return (distance2(b) <= epsilon*epsilon);
151}
152
153// ---------- Properties:
154
155inline double HepBoostX::norm2() const {
156 double bg = beta_*gamma_;
157 return bg*bg;
158}
159
160// ---------- Application:
161
162inline HepLorentzVector
164 double bg = beta_*gamma_;
165 return HepLorentzVector(gamma_*p.x() + bg*p.t(),
166 p.y(),
167 p.z(),
168 gamma_*p.t() + bg*p.x());
169}
170
171inline HepLorentzVector
173 return operator*(w);
174}
175
176// ---------- Operations in the group of 4-Rotations
177
179 return HepBoostX( -beta(), gamma() );
180}
181
182inline HepBoostX inverseOf ( const HepBoostX & b ) {
183 return HepBoostX( -b.beta(), b.gamma());
184}
185
187 beta_ = -beta_;
188 return *this;
189}
190
191// ---------- Tolerance:
192
196inline double HepBoostX::setTolerance(double tol) {
198}
199
200} // namespace CLHEP
static double setTolerance(double tol)
double tz() const
Definition BoostX.icc:66
double yt() const
Definition BoostX.icc:59
double distance2(const HepBoostX &b) const
Definition BoostX.icc:130
HepLorentzVector col3() const
Definition BoostX.icc:75
double zt() const
Definition BoostX.icc:63
bool operator!=(const HepBoostX &b) const
Definition BoostX.icc:110
double beta() const
Definition BoostX.icc:36
HepBoostX & invert()
Definition BoostX.icc:186
HepLorentzVector operator*(const HepLorentzVector &w) const
Definition BoostX.icc:163
bool operator>=(const HepBoostX &b) const
Definition BoostX.icc:116
HepLorentzVector row3() const
Definition BoostX.icc:88
double norm2() const
Definition BoostX.icc:155
double tt() const
Definition BoostX.icc:67
double xt() const
Definition BoostX.icc:55
HepLorentzVector row4() const
Definition BoostX.icc:91
HepLorentzVector operator()(const HepLorentzVector &w) const
Definition BoostX.icc:172
double zz() const
Definition BoostX.icc:62
HepLorentzVector col2() const
Definition BoostX.icc:72
HepLorentzVector row1() const
Definition BoostX.icc:82
HepBoostX & set(double beta)
HepBoostX & operator=(const HepBoostX &m)
Definition BoostX.icc:22
bool isNear(const HepBoostX &b, double epsilon=Hep4RotationInterface::tolerance) const
Definition BoostX.icc:144
Hep3Vector boostVector() const
Definition BoostX.icc:44
double zx() const
Definition BoostX.icc:60
static double getTolerance()
Definition BoostX.icc:193
double xy() const
Definition BoostX.icc:53
Hep3Vector getDirection() const
Definition BoostX.icc:48
double yy() const
Definition BoostX.icc:57
double xx() const
Definition BoostX.icc:52
int compare(const HepBoostX &b) const
Definition BoostX.icc:97
double zy() const
Definition BoostX.icc:61
bool operator<(const HepBoostX &b) const
Definition BoostX.icc:119
bool operator>(const HepBoostX &b) const
Definition BoostX.icc:122
static double setTolerance(double tol)
Definition BoostX.icc:196
bool operator==(const HepBoostX &b) const
Definition BoostX.icc:107
double gamma_
Definition BoostX.h:208
double gamma() const
Definition BoostX.icc:40
double yx() const
Definition BoostX.icc:56
HepLorentzVector col1() const
Definition BoostX.icc:69
HepLorentzVector row2() const
Definition BoostX.icc:85
double ty() const
Definition BoostX.icc:65
double tx() const
Definition BoostX.icc:64
double howNear(const HepBoostX &b) const
Definition BoostX.icc:135
bool operator<=(const HepBoostX &b) const
Definition BoostX.icc:113
HepLorentzVector col4() const
Definition BoostX.icc:78
double xz() const
Definition BoostX.icc:54
double yz() const
Definition BoostX.icc:58
HepBoostX inverse() const
Definition BoostX.icc:178
bool isIdentity() const
Definition BoostX.icc:126
HepBoost inverseOf(const HepBoost &lt)
Definition Boost.icc:266