Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/clhep/include/CLHEP/Vector/RotationX.icc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 // HepRotationX class
  8 //
  9 
 10 #include <cmath>
 11 #include "CLHEP/Units/PhysicalConstants.h"
 12 
 13 namespace CLHEP {
 14 
 15 inline double HepRotationX::yy() const { return its_c; }
 16 inline double HepRotationX::yz() const { return -its_s; }
 17 inline double HepRotationX::zy() const { return its_s; }
 18 inline double HepRotationX::zz() const { return its_c; }
 19 
 20 inline double HepRotationX::xx() const { return 1.0; }
 21 inline double HepRotationX::xy() const { return 0.0; }
 22 inline double HepRotationX::xz() const { return 0.0; }
 23 inline double HepRotationX::yx() const { return 0.0; }
 24 inline double HepRotationX::zx() const { return 0.0; }
 25 
 26 inline HepRep3x3 HepRotationX::rep3x3() const {
 27   return HepRep3x3 ( 1.0,    0.0,      0.0,
 28                      0.0,  its_c,   -its_s,
 29                      0.0,  its_s,    its_c  );
 30 }
 31 
 32 inline HepRotationX::HepRotationX() : its_d(0.0), its_s(0.0), its_c(1.0) {}
 33 
 34 inline HepRotationX::HepRotationX(const HepRotationX & orig) : 
 35   its_d(orig.its_d), its_s(orig.its_s), its_c(orig.its_c)
 36 {}
 37 
 38 inline HepRotationX::HepRotationX(double dd, double ss, double cc) :
 39   its_d(dd), its_s(ss), its_c(cc)
 40 {}
 41 
 42 inline HepRotationX & HepRotationX::operator= (const HepRotationX & orig) {
 43   its_d = orig.its_d;
 44   its_s = orig.its_s; 
 45   its_c = orig.its_c;
 46   return *this;
 47 }
 48 
 49 inline HepRotationX::~HepRotationX() {}
 50 
 51 inline Hep3Vector HepRotationX::colX() const 
 52         { return Hep3Vector ( 1.0, 0.0, 0.0 ); }
 53 inline Hep3Vector HepRotationX::colY() const 
 54         { return Hep3Vector ( 0.0,  its_c,  its_s ); }
 55 inline Hep3Vector HepRotationX::colZ() const 
 56         { return Hep3Vector ( 0.0, -its_s,  its_c ); }
 57  
 58 inline Hep3Vector HepRotationX::rowX() const 
 59         { return Hep3Vector ( 1.0, 0.0, 0.0 ); }
 60 inline Hep3Vector HepRotationX::rowY() const 
 61         { return Hep3Vector ( 0.0,  its_c, -its_s ); }
 62 inline Hep3Vector HepRotationX::rowZ() const 
 63         { return Hep3Vector ( 0.0,  its_s,  its_c ); }
 64 
 65 inline double  HepRotationX::getPhi  () const { return phi();   }
 66 inline double  HepRotationX::getTheta() const { return theta(); }
 67 inline double  HepRotationX::getPsi  () const { return psi();   }
 68 inline double  HepRotationX::getDelta() const { return its_d; }
 69 inline Hep3Vector HepRotationX::getAxis () const { return axis();  }
 70 
 71 inline double  HepRotationX::delta() const { return its_d; }
 72 inline Hep3Vector HepRotationX::axis() const { return Hep3Vector(1,0,0); }
 73 
 74 inline HepAxisAngle HepRotationX::axisAngle() const {
 75   return HepAxisAngle ( axis(), delta() );
 76 }
 77 
 78 inline void HepRotationX::getAngleAxis
 79       (double & ddelta, Hep3Vector & aaxis) const {
 80   ddelta = its_d;
 81   aaxis  = getAxis();
 82 }
 83 
 84 inline HepLorentzVector HepRotationX::col1() const 
 85         { return HepLorentzVector (colX(), 0); }
 86 inline HepLorentzVector HepRotationX::col2() const
 87         { return HepLorentzVector (colY(), 0); }
 88 inline HepLorentzVector HepRotationX::col3() const
 89         { return HepLorentzVector (colZ(), 0); }
 90 inline HepLorentzVector HepRotationX::col4() const
 91         { return HepLorentzVector (0,0,0,1); }
 92 inline HepLorentzVector HepRotationX::row1() const
 93         { return HepLorentzVector (rowX(), 0); }
 94 inline HepLorentzVector HepRotationX::row2() const
 95         { return HepLorentzVector (rowY(), 0); }
 96 inline HepLorentzVector HepRotationX::row3() const
 97         { return HepLorentzVector (rowZ(), 0); }
 98 inline HepLorentzVector HepRotationX::row4() const
 99         { return HepLorentzVector (0,0,0,1); }
100 inline double HepRotationX::xt() const { return 0.0; }
101 inline double HepRotationX::yt() const { return 0.0; }
102 inline double HepRotationX::zt() const { return 0.0; }
103 inline double HepRotationX::tx() const { return 0.0; }
104 inline double HepRotationX::ty() const { return 0.0; }
105 inline double HepRotationX::tz() const { return 0.0; }
106 inline double HepRotationX::tt() const { return 1.0; }
107 
108 inline HepRep4x4 HepRotationX::rep4x4() const {
109   return HepRep4x4 ( 1.0,   0.0,    0.0, 0.0,
110                      0.0, its_c, -its_s, 0.0,
111                      0.0, its_s,  its_c, 0.0,
112                      0.0,   0.0,    0.0, 1.0 );
113 }
114 
115 inline bool HepRotationX::isIdentity() const {
116   return ( its_d==0 );
117 }
118 
119 inline int HepRotationX::compare ( const HepRotationX & r  ) const {
120   if (its_d > r.its_d) return 1; else if (its_d < r.its_d) return -1; else return 0;
121 }
122 
123 inline bool HepRotationX::operator==(const HepRotationX & r)  const
124   { return (its_d==r.its_d); }
125 inline bool HepRotationX::operator!=(const HepRotationX & r)  const
126   { return (its_d!=r.its_d); }
127 inline bool HepRotationX::operator>=(const HepRotationX & r)  const
128   { return (its_d>=r.its_d); }
129 inline bool HepRotationX::operator<=(const HepRotationX & r)  const
130   { return (its_d<=r.its_d); }
131 inline bool HepRotationX::operator> (const HepRotationX & r)  const
132   { return (its_d> r.its_d); }
133 inline bool HepRotationX::operator< (const HepRotationX & r)  const
134   { return (its_d< r.its_d); }
135 
136 inline void HepRotationX::rectify() { 
137   its_d = proper(its_d);  // Just in case!
138   its_s = std::sin(its_d);
139   its_c = std::cos(its_d);
140 } 
141 
142 inline Hep3Vector HepRotationX::operator() (const Hep3Vector & p) const {
143   double x = p.x();
144   double y = p.y();
145   double z = p.z();
146   return  Hep3Vector(  x,
147                        y * its_c - z * its_s,
148                        z * its_c + y * its_s  );
149 }
150 
151 inline Hep3Vector HepRotationX::operator * (const Hep3Vector & p) const {
152   return operator()(p);
153 }
154 
155 inline HepLorentzVector HepRotationX::operator()
156       ( const HepLorentzVector & w ) const {
157   return  HepLorentzVector( operator() (w.vect()) , w.t() );
158 }
159 
160 inline HepLorentzVector HepRotationX::operator * 
161           (const HepLorentzVector & p) const {
162   return operator()(p);
163 }
164 
165 inline HepRotationX & HepRotationX::operator *= (const HepRotationX & m1) {
166   return *this = (*this) * (m1);
167 }
168 
169 inline HepRotationX & HepRotationX::transform(const HepRotationX & m1) {
170   return *this = m1 * (*this);
171 }
172 
173 inline double HepRotationX::proper( double ddelta ) {
174   // -PI < d <= PI
175   if ( std::fabs(ddelta) < CLHEP::pi ) {
176     return  ddelta;
177   } else {
178     double x = ddelta / (CLHEP::twopi);
179     return  (CLHEP::twopi) * ( x + std::floor(.5-x) );
180   }
181 }  // proper()
182 
183 inline HepRotationX HepRotationX::operator * ( const HepRotationX & rx ) const {
184   return HepRotationX ( HepRotationX::proper(its_d+rx.its_d),
185                         its_s*rx.its_c + its_c*rx.its_s,
186                         its_c*rx.its_c - its_s*rx.its_s );
187 }
188 
189 inline HepRotationX HepRotationX::inverse() const {
190   return HepRotationX( proper(-its_d), -its_s, its_c ); 
191 }
192 
193 inline HepRotationX inverseOf(const HepRotationX & r) {
194   return r.inverse();
195 }
196 
197 inline HepRotationX & HepRotationX::invert() {
198   return *this=inverse();
199 }
200 
201 inline double HepRotationX::getTolerance() {
202   return Hep4RotationInterface::tolerance;
203 }       
204 inline double HepRotationX::setTolerance(double tol) {
205   return Hep4RotationInterface::setTolerance(tol);
206 }
207 
208 }  // namespace CLHEP
209