Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

TrackTrajectory.h

Go to the documentation of this file.
00001 // ================================================
00002 // TrackTrajectory class description
00003 // ================================================
00004 //
00005 // THIS TEXT TO BE REPLACED BY ATLAS STANDARD FORMAT
00006 //
00007 //
00008 // This version....
00009 //
00010 //
00011 // Namespace Atlfast::
00012 //
00013 // class: TrackTrajectory
00014 //
00015 // Description: 
00016 //
00017 //  Simple concrete class to represent a track trajectory
00018 //   
00019 // ................................................................
00020 //
00021 
00022 #ifndef ATLFAST_TRACKTRAJECTORY_H
00023 #define ATLFAST_TRACKTRAJECTORY_H
00024 
00025 
00026 #include "AtlfastEvent/Phi.h"
00027 #include "AtlfastEvent/ITrackTrajectory.h"
00028 #include "CLHEP/Vector/ThreeVector.h"
00029 #include "CLHEP/Geometry/Point3D.h"
00030 
00031 namespace Atlfast {
00032 
00033 
00034   class TrackTrajectory: public virtual ITrackTrajectory {
00035     
00036   private:
00037     
00038     // Trajectory state variables
00039     double m_impactParameter ;
00040     double m_zPerigee ;
00041     Phi    m_phi ;
00042     double m_cotTheta ;
00043     double m_invPtCharge ;
00044     ::HepPoint3D m_startPoint ; 
00045     double m_curvature ;
00046     
00047     // Purely for speed, also store track parameters as a 3-momentum
00048     Hep3Vector m_threeMomentum ;
00049     
00050     // To set state variables, but after checking for legality
00051     void set_impactParameter( double val );
00052     void set_zPerigee( double val ) ;
00053     void set_phi( const Phi& val ) ;
00054     void set_cotTheta( double val ) ;
00055     void set_invPtCharge( double val ) ;
00056     void set_startPoint( HepPoint3D val) ;
00057     void set_curvature( double val) ;
00058     
00059     // To convert state variables to 3-momentum
00060     void convertToThreeMomentum() ;
00061     
00062     
00063     
00064   public:
00065     
00066     // Explicit Constructor
00067     TrackTrajectory(
00068                     double impactParameter,
00069                     double zPerigee,
00070                     Phi  phi,
00071                     double cotTheta,
00072                     double invPtCharge,
00073                     double curvature,
00074                     HepPoint3D startPoint
00075                     );
00076     
00077     // Constructor from a 3-momentum, vertex, charge and magnetic field
00078     TrackTrajectory( 
00079                     const Hep3Vector& p, 
00080                     const Hep3Vector& vertex,  
00081                     double charge, 
00082                     double bField 
00083                     );
00084     
00085     // Copy Constructor
00086     TrackTrajectory( const TrackTrajectory& src ) ;
00087     
00088     // Destructor
00089     ~TrackTrajectory() ;
00090     
00091     // Assignment 
00092     TrackTrajectory& operator=( const TrackTrajectory& src ) ;
00093     
00094     // Implementation of ITrackTrajectory interface
00095     virtual double impactParameter() const ;
00096     virtual double zPerigee()        const ;
00097     virtual double phi()             const ;
00098     virtual double eta()             const ;
00099     virtual double cotTheta()        const ;
00100     virtual double pT()              const ;
00101     virtual Hep3Vector threeMomentum() const ;
00102     virtual operator Hep3Vector()      const ;
00103     virtual double invPtCharge()     const ;
00104     virtual double radius()          const ;
00105     virtual int    signOfCharge()    const ;
00106     virtual HepPoint3D startPoint()  const ; 
00107     virtual double curvature()       const ;
00108     
00109   };
00110   
00111 } // End namespace
00112 
00113 #endif

Generated on Wed May 1 14:35:47 2002 for AtlfastEvent by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001