2// ---------------------------------------------------------------------------
4// This file is a part of the CLHEP - a Class Library for High Energy Physics.
6// This is the definitions of the inline member functions of the
14// ---------- Constructors and Assignment:
16inline HepBoostY::HepBoostY() : beta_(0.0), gamma_(1.0) {}
18inline HepBoostY::HepBoostY(const HepBoostY & b) :
22inline HepBoostY & HepBoostY::operator = (const HepBoostY & b) {
28inline HepBoostY::HepBoostY(double bbeta) { set(bbeta); }
31inline HepBoostY::HepBoostY( double bbeta, double ggamma ) :
32 beta_(bbeta), gamma_(ggamma) {}
34// ---------- Accessors:
36inline double HepBoostY::beta() const {
40inline double HepBoostY::gamma() const {
44inline Hep3Vector HepBoostY::boostVector() const {
45 return Hep3Vector( 0, beta_, 0 );
48inline Hep3Vector HepBoostY::getDirection() const {
49 return Hep3Vector( 0.0, 1.0, 0.0 );
52inline double HepBoostY::xx() const { return 1.0;}
53inline double HepBoostY::xy() const { return 0.0;}
54inline double HepBoostY::xz() const { return 0.0;}
55inline double HepBoostY::xt() const { return 0.0;}
56inline double HepBoostY::yx() const { return 0.0;}
57inline double HepBoostY::yy() const { return gamma();}
58inline double HepBoostY::yz() const { return 0.0;}
59inline double HepBoostY::yt() const { return beta()*gamma();}
60inline double HepBoostY::zx() const { return 0.0;}
61inline double HepBoostY::zy() const { return 0.0;}
62inline double HepBoostY::zz() const { return 1.0;}
63inline double HepBoostY::zt() const { return 0.0;}
64inline double HepBoostY::tx() const { return 0.0;}
65inline double HepBoostY::ty() const { return beta()*gamma();}
66inline double HepBoostY::tz() const { return 0.0;}
67inline double HepBoostY::tt() const { return gamma();}
69inline HepLorentzVector HepBoostY::col1() const {
70 return HepLorentzVector ( 1, 0, 0, 0 );
72inline HepLorentzVector HepBoostY::col2() const {
73 return HepLorentzVector ( 0, gamma(), 0, beta()*gamma() );
75inline HepLorentzVector HepBoostY::col3() const {
76 return HepLorentzVector ( 0, 0, 1, 0 );
78inline HepLorentzVector HepBoostY::col4() const {
79 return HepLorentzVector ( 0, beta()*gamma(), 0, gamma() );
82inline HepLorentzVector HepBoostY::row1() const {
83 return HepLorentzVector ( col1() );
85inline HepLorentzVector HepBoostY::row2() const {
86 return HepLorentzVector ( col2() );
88inline HepLorentzVector HepBoostY::row3() const {
89 return HepLorentzVector ( col3() );
91inline HepLorentzVector HepBoostY::row4() const {
92 return HepLorentzVector ( col4() );
95// ---------- Comparisons:
97inline int HepBoostY::compare( const HepBoostY & b ) const {
98 if (beta() < b.beta()) {
100 } else if (beta() > b.beta()) {
107inline bool HepBoostY::operator == ( const HepBoostY & b ) const {
108 return beta_ == b.beta_;
110inline bool HepBoostY::operator != ( const HepBoostY & b ) const {
111 return beta_ != b.beta_;
113inline bool HepBoostY::operator <= ( const HepBoostY & b ) const {
114 return beta_ <= b.beta_;
116inline bool HepBoostY::operator >= ( const HepBoostY & b ) const {
117 return beta_ >= b.beta_;
119inline bool HepBoostY::operator < ( const HepBoostY & b ) const {
120 return beta_ < b.beta_;
122inline bool HepBoostY::operator > ( const HepBoostY & b ) const {
123 return beta_ > b.beta_;
126inline bool HepBoostY::isIdentity() const {
127 return ( beta() == 0 );
130inline double HepBoostY::distance2( const HepBoostY & b ) const {
131 double d = beta()*gamma() - b.beta()*b.gamma();
135inline double HepBoostY::howNear(const HepBoostY & b) const {
136 return std::sqrt(distance2(b)); }
137inline double HepBoostY::howNear(const HepBoost & b) const {
138 return std::sqrt(distance2(b)); }
139inline double HepBoostY::howNear(const HepRotation & r) const {
140 return std::sqrt(distance2(r)); }
141inline double HepBoostY::howNear(const HepLorentzRotation & lt) const {
142 return std::sqrt(distance2(lt)); }
144inline bool HepBoostY::isNear(const HepBoostY & b,
145 double epsilon) const {
146 return (distance2(b) <= epsilon*epsilon);
148inline bool HepBoostY::isNear(const HepBoost & b,
149 double epsilon) const {
150 return (distance2(b) <= epsilon*epsilon);
153// ---------- Properties:
155double HepBoostY::norm2() const {
156 double bg = beta_*gamma_;
160// ---------- Application:
162inline HepLorentzVector
163HepBoostY::operator * (const HepLorentzVector & p) const {
164 double bg = beta_*gamma_;
165 return HepLorentzVector( p.x(),
166 gamma_*p.y() + bg*p.t(),
168 gamma_*p.t() + bg*p.y());
171HepLorentzVector HepBoostY::operator() (const HepLorentzVector & w) const {
175// ---------- Operations in the group of 4-Rotations
177inline HepBoostY HepBoostY::inverse() const {
178 return HepBoostY( -beta(), gamma() );
181inline HepBoostY inverseOf ( const HepBoostY & b ) {
182 return HepBoostY( -b.beta(), b.gamma());
185inline HepBoostY & HepBoostY::invert() {
190// ---------- Tolerance:
192inline double HepBoostY::getTolerance() {
193 return Hep4RotationInterface::tolerance;
195inline double HepBoostY::setTolerance(double tol) {
196 return Hep4RotationInterface::setTolerance(tol);