CLHEP VERSION Reference Documentation
CLHEP Home Page
CLHEP Documentation
CLHEP Bug Reports
Main Page
Namespaces
Classes
Files
File List
File Members
Geometry
CLHEP
Vector
Geometry/CLHEP/Vector/BoostZ.h
Go to the documentation of this file.
1
// -*- C++ -*-
2
//
3
// This file is a part of the CLHEP - a Class Library for High Energy Physics.
4
//
5
// This is the definition of the HepBoostZ class for performing specialized
6
// Lorentz transformations which are pure boosts in the Z direction, on
7
// objects of the HepLorentzVector class.
8
//
9
// HepLorentzRotation is a concrete implementation of Hep4RotationInterface.
10
//
11
// .SS See Also
12
// RotationInterfaces.h
13
// LorentzVector.h LorentzRotation.h
14
// Boost.h
15
//
16
// .SS Author
17
// Mark Fischler
18
19
#ifndef HEP_BOOSTZ_H
20
#define HEP_BOOSTZ_H
21
22
#ifdef GNUPRAGMA
23
#pragma interface
24
#endif
25
26
#include "CLHEP/Vector/defs.h"
27
#include "CLHEP/Vector/RotationInterfaces.h"
28
#include "CLHEP/Vector/LorentzVector.h"
29
30
namespace
CLHEP {
31
32
// Declarations of classes and global methods
33
class
HepBoostZ;
34
inline
HepBoostZ
inverseOf
(
const
HepBoostZ &
b
);
35
class
HepBoost;
36
class
HepRotation;
37
42
class
HepBoostZ
{
43
44
public
:
45
46
// ---------- Constructors and Assignment:
47
48
inline
HepBoostZ
();
49
// Default constructor. Gives a boost of 0.
50
51
inline
HepBoostZ
(
const
HepBoostZ
&
b
);
52
// Copy constructor.
53
54
inline
HepBoostZ
&
operator =
(
const
HepBoostZ
& m);
55
// Assignment.
56
57
HepBoostZ
&
set
(
double
beta
);
58
inline
HepBoostZ
(
double
beta
);
59
// Constructor from beta
60
61
// ---------- Accessors:
62
63
inline
double
beta
()
const
;
64
inline
double
gamma
()
const
;
65
inline
Hep3Vector
boostVector
()
const
;
66
inline
Hep3Vector
getDirection
()
const
;
67
68
inline
double
xx
()
const
;
69
inline
double
xy
()
const
;
70
inline
double
xz
()
const
;
71
inline
double
xt
()
const
;
72
inline
double
yx
()
const
;
73
inline
double
yy
()
const
;
74
inline
double
yz
()
const
;
75
inline
double
yt
()
const
;
76
inline
double
zx
()
const
;
77
inline
double
zy
()
const
;
78
inline
double
zz
()
const
;
79
inline
double
zt
()
const
;
80
inline
double
tx
()
const
;
81
inline
double
ty
()
const
;
82
inline
double
tz
()
const
;
83
inline
double
tt
()
const
;
84
// Elements of the matrix.
85
86
inline
HepLorentzVector
col1
()
const
;
87
inline
HepLorentzVector
col2
()
const
;
88
inline
HepLorentzVector
col3
()
const
;
89
inline
HepLorentzVector
col4
()
const
;
90
// orthosymplectic column vectors
91
92
inline
HepLorentzVector
row1
()
const
;
93
inline
HepLorentzVector
row2
()
const
;
94
inline
HepLorentzVector
row3
()
const
;
95
inline
HepLorentzVector
row4
()
const
;
96
// orthosymplectic row vectors
97
98
HepRep4x4
rep4x4
()
const
;
99
// 4x4 representation:
100
101
HepRep4x4Symmetric
rep4x4Symmetric
()
const
;
102
// Symmetric 4x4 representation.
103
104
// ---------- Decomposition:
105
106
void
decompose
(
HepRotation
& rotation,
HepBoost
& boost)
const
;
107
void
decompose
(
HepAxisAngle
& rotation,
Hep3Vector
& boost)
const
;
108
// Find R and B such that L = R*B -- trivial, since R is identity
109
110
void
decompose
(
HepBoost
& boost,
HepRotation
& rotation)
const
;
111
void
decompose
(
Hep3Vector
& boost,
HepAxisAngle
& rotation)
const
;
112
// Find R and B such that L = B*R -- trivial, since R is identity
113
114
// ---------- Comparisons:
115
116
inline
int
compare
(
const
HepBoostZ
& b )
const
;
117
// Dictionary-order comparison, in order of beta.
118
// Used in operator<, >, <=, >=
119
120
inline
bool
operator ==
(
const
HepBoostZ
& b)
const
;
121
inline
bool
operator !=
(
const
HepBoostZ
& b)
const
;
122
inline
bool
operator <=
(
const
HepBoostZ
& b)
const
;
123
inline
bool
operator >=
(
const
HepBoostZ
& b)
const
;
124
inline
bool
operator <
(
const
HepBoostZ
& b)
const
;
125
inline
bool
operator >
(
const
HepBoostZ
& b)
const
;
126
// Comparisons.
127
128
inline
bool
isIdentity
()
const
;
129
// Returns true if a null boost.
130
131
inline
double
distance2
(
const
HepBoostZ
& b )
const
;
132
double
distance2
(
const
HepBoost
& b )
const
;
133
// Defined as the distance2 between the vectors (gamma*betaVector)
134
135
double
distance2
(
const
HepRotation
& r )
const
;
136
double
distance2
(
const
HepLorentzRotation
& lt )
const
;
137
// Decompose lt = B*R; add norm2 to distance2 to between boosts.
138
139
inline
double
howNear
(
const
HepBoostZ
& b )
const
;
140
inline
double
howNear
(
const
HepBoost
& b )
const
;
141
inline
double
howNear
(
const
HepRotation
& r )
const
;
142
inline
double
howNear
(
const
HepLorentzRotation
& lt )
const
;
143
144
inline
bool
isNear
(
const
HepBoostZ
& b,
145
double
epsilon=
Hep4RotationInterface::tolerance
)
const
;
146
inline
bool
isNear
(
const
HepBoost
& b,
147
double
epsilon=
Hep4RotationInterface::tolerance
)
const
;
148
bool
isNear
(
const
HepRotation
& r,
149
double
epsilon=
Hep4RotationInterface::tolerance
)
const
;
150
bool
isNear
(
const
HepLorentzRotation
& lt,
151
double
epsilon=
Hep4RotationInterface::tolerance
)
const
;
152
153
// ---------- Properties:
154
155
inline
double
norm2
()
const
;
156
// distance2 (IDENTITY), which is beta^2 * gamma^2
157
158
void
rectify
();
159
// sets according to the stored beta
160
161
// ---------- Application:
162
163
inline
HepLorentzVector
operator()
(
const
HepLorentzVector
& w )
const
;
164
// Transform a Lorentz Vector.
165
166
inline
HepLorentzVector
operator*
(
const
HepLorentzVector
& w )
const
;
167
// Multiplication with a Lorentz Vector.
168
169
// ---------- Operations in the group of 4-Rotations
170
171
HepBoostZ
operator *
(
const
HepBoostZ
& b)
const
;
172
HepLorentzRotation
operator *
(
const
HepBoost
& b)
const
;
173
HepLorentzRotation
operator *
(
const
HepRotation
& r)
const
;
174
HepLorentzRotation
operator *
(
const
HepLorentzRotation
& lt)
const
;
175
// Product of two Lorentz Rotations (this) * lt - matrix multiplication
176
// Notice that the product of two pure boosts in different directions
177
// is no longer a pure boost.
178
179
inline
HepBoostZ
inverse
()
const
;
180
// Return the inverse.
181
182
inline
friend
HepBoostZ
inverseOf
(
const
HepBoostZ
& b );
183
// global methods to invert.
184
185
inline
HepBoostZ
&
invert
();
186
// Inverts the Boost matrix.
187
188
// ---------- I/O:
189
190
std::ostream &
print
( std::ostream & os )
const
;
191
// Output form is BOOSTZ (beta=..., gamma=...);
192
193
// ---------- Tolerance
194
195
static
inline
double
getTolerance
();
196
static
inline
double
setTolerance
(
double
tol);
197
198
protected
:
199
200
inline
HepLorentzVector
vectorMultiplication
201
(
const
HepLorentzVector
& w )
const
;
202
// Multiplication with a Lorentz Vector.
203
204
HepLorentzRotation
matrixMultiplication
(
const
HepRep4x4
& m)
const
;
205
HepLorentzRotation
matrixMultiplication
(
const
HepRep4x4Symmetric
& m)
const
;
206
207
inline
HepBoostZ
(
double
beta,
double
gamma);
208
209
double
beta_
;
210
double
gamma_
;
211
212
};
// HepBoostZ
213
214
inline
215
std::ostream &
operator
<<
216
( std::ostream & os,
const
HepBoostZ
&
b
) {
return
b
.print(os);}
217
218
}
// namespace CLHEP
219
220
#include "CLHEP/Vector/BoostZ.icc"
221
222
#ifdef ENABLE_BACKWARDS_COMPATIBILITY
223
// backwards compatibility will be enabled ONLY in CLHEP 1.9
224
using namespace
CLHEP;
225
#endif
226
227
#endif
/* HEP_BOOSTZ_H */
Generated on Mon May 6 2013 04:04:10 for CLHEP by
1.8.1.2