10 #pragma implementation
22 double bp2 = bx*bx + by*by + bz*bz;
27 double ggamma = 1.0 / std::sqrt(1.0 - bp2);
28 double bgamma = ggamma * ggamma / (1.0 + ggamma);
29 rep_.
xx_ = 1.0 + bgamma * bx * bx;
30 rep_.
yy_ = 1.0 + bgamma * by * by;
31 rep_.
zz_ = 1.0 + bgamma * bz * bz;
48 double length = ddirection.
mag();
50 std::cerr <<
"HepBoost::set() - "
51 <<
"Direction supplied to set HepBoost is zero." << std::endl;
55 set(bbeta*ddirection.
x()/length,
56 bbeta*ddirection.
y()/length,
57 bbeta*ddirection.
z()/length);
62 return set (bboost.
x(), bboost.
y(), bboost.
z());
97 double dr2 = r.
norm2();
106 double dr2 = r1.
norm2();
119 double db2 =
norm2();
120 if (db2 > epsilon*epsilon)
return false;
121 double dr2 = r.
norm2();
122 return (db2+dr2 <= epsilon*epsilon);
126 double epsilon)
const {
131 if (db2 > epsilon*epsilon)
return false;
132 double dr2 = r1.
norm2();
139 register double bgx =
rep_.
xt_;
140 register double bgy =
rep_.
yt_;
141 register double bgz =
rep_.
zt_;
142 return bgx*bgx+bgy*bgy+bgz*bgz;
163 std::cerr <<
"HepBoost::rectify() - "
164 <<
"Attempt to rectify a boost with non-positive gamma." << std::endl;
169 if ( boost.
mag2() >= 1 ) {
170 boost /= ( boost.
mag() * ( 1.0 + 1.0e-16 ) );
248 os <<
"Lorentz Boost( IDENTITY )";
252 "\n{beta = " <<
beta() <<
" gamma = " <<
gamma() <<
"}\n";
double howNear(const HepBoost &b) const
std::ostream & print(std::ostream &os) const
double distance2(const HepBoost &b) const
Hep3Vector boostVector() const
void decompose(HepRotation &rotation, HepBoost &boost) const
bool isNear(const HepBoost &b, double epsilon=Hep4RotationInterface::tolerance) const
HepRep4x4Symmetric rep4x4Symmetric() const
HepBoost & set(double betaX, double betaY, double betaZ)
void decompose(Hep3Vector &boost, HepAxisAngle &rotation) const
HepLorentzVector operator*(const HepLorentzVector &p) const
HepLorentzRotation matrixMultiplication(const HepRep4x4 &m) const