Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/clhep/include/CLHEP/Vector/TwoVector.h

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 ]

Diff markup

Differences between /externals/clhep/include/CLHEP/Vector/TwoVector.h (Version 11.3.0) and /externals/clhep/include/CLHEP/Vector/TwoVector.h (Version 4.0)


  1 // -*- C++ -*-                                      1 
  2 // CLASSDOC OFF                                   
  3 // -------------------------------------------    
  4 // CLASSDOC ON                                    
  5 //                                                
  6 // This file is a part of the CLHEP - a Class     
  7 //                                                
  8 // Hep2Vector is a general 2-vector class defi    
  9 // dimension using double components.   It com    
 10 // PlaneVector class (the PhysicsVectors Plane    
 11 // PlaneVector to Hep2Vector).                    
 12 //                                                
 13 // .SS See Also                                   
 14 // ThreeVector.h                                  
 15 //                                                
 16 // .SS Authors                                    
 17 // John Marraffino and Mark Fischler              
 18 //                                                
 19                                                   
 20 #ifndef HEP_TWOVECTOR_H                           
 21 #define HEP_TWOVECTOR_H                           
 22                                                   
 23 #include <iostream>                               
 24                                                   
 25 #include "CLHEP/Vector/ThreeVector.h"             
 26                                                   
 27 namespace CLHEP {                                 
 28                                                   
 29 // Declarations of classes and global methods     
 30 class Hep2Vector;                                 
 31 std::ostream & operator << (std::ostream &, co    
 32 std::istream & operator >> (std::istream &, He    
 33 inline double operator * (const Hep2Vector & a    
 34 inline Hep2Vector operator * (const Hep2Vector    
 35 inline Hep2Vector operator * (double a, const     
 36        Hep2Vector operator / (const Hep2Vector    
 37 inline Hep2Vector operator + (const Hep2Vector    
 38 inline Hep2Vector operator - (const Hep2Vector    
 39                                                   
 40 /**                                               
 41  * @author                                        
 42  * @ingroup vector                                
 43  */                                               
 44 class Hep2Vector {                                
 45                                                   
 46 public:                                           
 47                                                   
 48   enum { X=0, Y=1, NUM_COORDINATES=2, SIZE=NUM    
 49   // Safe indexing of the coordinates when usi    
 50                                                   
 51   inline Hep2Vector( double x = 0.0, double y     
 52   // The constructor.                             
 53                                                   
 54   inline Hep2Vector(const Hep2Vector & p);        
 55   inline Hep2Vector(Hep2Vector && p) = default    
 56   // The copy and move constructors.              
 57                                                   
 58   explicit Hep2Vector( const Hep3Vector & );      
 59   // "demotion" constructor"                      
 60   // WARNING -- THIS IGNORES THE Z COMPONENT O    
 61   //    SO IN GENERAL, Hep2Vector(v)==v WILL N    
 62                                                   
 63   inline ~Hep2Vector();                           
 64   // The destructor.                              
 65                                                   
 66   inline double x() const;                        
 67   inline double y() const;                        
 68   // The components in cartesian coordinate sy    
 69                                                   
 70          double operator () (int i) const;        
 71   inline double operator [] (int i) const;        
 72   // Get components by index.  0-based.           
 73                                                   
 74          double & operator () (int i);            
 75   inline double & operator [] (int i);            
 76   // Set components by index.  0-based.           
 77                                                   
 78   inline void setX(double x);                     
 79   inline void setY(double y);                     
 80   inline void set (double x, double y);           
 81   // Set the components in cartesian coordinat    
 82                                                   
 83   inline double phi() const;                      
 84   // The azimuth angle.                           
 85                                                   
 86   inline double mag2() const;                     
 87   // The magnitude squared.                       
 88                                                   
 89   inline double mag() const;                      
 90   // The magnitude.                               
 91                                                   
 92   inline double r() const;                        
 93   // r in polar coordinates (r, phi):  equal t    
 94                                                   
 95   inline void setPhi(double phi);                 
 96   // Set phi keeping mag constant.                
 97                                                   
 98   inline void setMag(double r);                   
 99   // Set magnitude keeping phi constant.          
100                                                   
101   inline void setR(double r);                     
102   // Set R keeping phi constant.  Same as setM    
103                                                   
104   inline void setPolar(double r, double phi);     
105   // Set by polar coordinates.                    
106                                                   
107   inline Hep2Vector & operator = (const Hep2Ve    
108   inline Hep2Vector & operator = (Hep2Vector &    
109   // The copy and move assignment operators.      
110                                                   
111   inline bool operator == (const Hep2Vector &     
112   inline bool operator != (const Hep2Vector &     
113   // Comparisons.                                 
114                                                   
115   int compare (const Hep2Vector & v) const;       
116   bool operator > (const Hep2Vector & v) const    
117   bool operator < (const Hep2Vector & v) const    
118   bool operator>= (const Hep2Vector & v) const    
119   bool operator<= (const Hep2Vector & v) const    
120   // dictionary ordering according to y, then     
121                                                   
122   static inline double getTolerance();            
123   static double setTolerance(double tol);         
124                                                   
125   double howNear (const Hep2Vector &p) const;     
126   bool isNear  (const Hep2Vector & p, double e    
127                                                   
128   double howParallel (const Hep2Vector &p) con    
129   bool isParallel                                 
130     (const Hep2Vector & p, double epsilon=tole    
131                                                   
132   double howOrthogonal (const Hep2Vector &p) c    
133   bool isOrthogonal                               
134     (const Hep2Vector & p, double epsilon=tole    
135                                                   
136   inline Hep2Vector & operator += (const Hep2V    
137   // Addition.                                    
138                                                   
139   inline Hep2Vector & operator -= (const Hep2V    
140   // Subtraction.                                 
141                                                   
142   inline Hep2Vector operator - () const;          
143   // Unary minus.                                 
144                                                   
145   inline Hep2Vector & operator *= (double a);     
146   // Scaling with real numbers.                   
147                                                   
148   inline Hep2Vector unit() const;                 
149   // Unit vector parallel to this.                
150                                                   
151   inline Hep2Vector orthogonal() const;           
152   // Vector orthogonal to this.                   
153                                                   
154   inline double dot(const Hep2Vector &p) const    
155   // Scalar product.                              
156                                                   
157   inline double angle(const Hep2Vector &) cons    
158   // The angle w.r.t. another 2-vector.           
159                                                   
160   void rotate(double);                            
161   // Rotates the Hep2Vector.                      
162                                                   
163   operator Hep3Vector () const;                   
164   // Cast a Hep2Vector as a Hep3Vector.           
165                                                   
166   // The remaining methods are friends, thus d    
167   // - - - - - - - - - - - - - - - - - - - - -    
168                                                   
169   friend std::ostream & operator<< (std::ostre    
170   // Output to a stream.                          
171                                                   
172   inline friend double operator * (const Hep2V    
173            const Hep2Vector & b);                 
174   // Scalar product.                              
175                                                   
176   inline friend Hep2Vector operator * (const H    
177   // v*c                                          
178                                                   
179   inline friend Hep2Vector operator * (double     
180   // c*v                                          
181                                                   
182          friend Hep2Vector operator / (const H    
183   // v/c                                          
184                                                   
185   inline friend Hep2Vector operator + (const H    
186                const Hep2Vector & b);             
187   // v1+v2                                        
188                                                   
189   inline friend Hep2Vector operator - (const H    
190                 const Hep2Vector & b);            
191   // v1-v2                                        
192                                                   
193   static const int ZMpvToleranceTicks = 100;      
194                                                   
195 private:                                          
196                                                   
197   double dx;                                      
198   double dy;                                      
199   // The components.                              
200                                                   
201   static double tolerance;                        
202   // default tolerance criterion for isNear()     
203                                                   
204 };  // Hep2Vector                                 
205                                                   
206 static const Hep2Vector X_HAT2(1.0, 0.0);         
207 static const Hep2Vector Y_HAT2(0.0, 1.0);         
208                                                   
209 }  // namespace CLHEP                             
210                                                   
211 #include "CLHEP/Vector/TwoVector.icc"             
212                                                   
213 #endif /* HEP_TWOVECTOR_H */                      
214