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 #include "GaudiKernel/StreamBuffer.h"
00031 
00032 namespace Atlfast {
00033 
00034 
00035   class TrackTrajectory: public virtual ITrackTrajectory {
00036     
00037   private:
00038     
00039     // Trajectory state variables
00040     double m_impactParameter ;
00041     double m_zPerigee ;
00042     Phi    m_phi ;
00043     double m_cotTheta ;
00044     double m_invPtCharge ;
00045     HepPoint3D m_startPoint ; 
00046     double m_curvature ;
00047     
00048     // Purely for speed, also store track parameters as a 3-momentum
00049     Hep3Vector m_threeMomentum ;
00050     
00051     // To set state variables, but after checking for legality
00052     void set_impactParameter( double val );
00053     void set_zPerigee( double val ) ;
00054     void set_phi( const Phi& val ) ;
00055     void set_cotTheta( double val ) ;
00056     void set_invPtCharge( double val ) ;
00057     void set_startPoint( HepPoint3D val) ;
00058     void set_curvature( double val) ;
00059     
00060     // To convert state variables to 3-momentum
00061     void convertToThreeMomentum() ;
00062     
00063     
00064     
00065   public:
00066     
00067     // Explicit Constructor
00068     TrackTrajectory(
00069                     double impactParameter,
00070                     double zPerigee,
00071                     const Phi&  phi,
00072                     double cotTheta,
00073                     double invPtCharge,
00074                     double curvature,
00075                     HepPoint3D startPoint
00076                     );
00077     
00078     // Constructor from a 3-momentum, vertex, charge and magnetic field
00079     TrackTrajectory( 
00080                     const Hep3Vector& p, 
00081                     const Hep3Vector& vertex,  
00082                     double charge, 
00083                     double bField 
00084                     );
00085     
00086     // Copy Constructor
00087     TrackTrajectory( const TrackTrajectory& src ) ;
00088     
00089     // Destructor
00090     ~TrackTrajectory() ;
00091     
00092     // Assignment 
00093     TrackTrajectory& operator=( const TrackTrajectory& src ) ;
00094     
00095     // Implementation of ITrackTrajectory interface
00096     virtual double impactParameter() const ;
00097     virtual double zPerigee()        const ;
00098     virtual double phi()             const ;
00099     virtual double eta()             const ;
00100     virtual double cotTheta()        const ;
00101     virtual double pT()              const ;
00102     virtual Hep3Vector threeMomentum() const ;
00103     virtual operator Hep3Vector()      const ;
00104     virtual double invPtCharge()     const ;
00105     virtual double radius()          const ;
00106     virtual int    signOfCharge()    const ;
00107     virtual HepPoint3D startPoint()  const ; 
00108     virtual double curvature()       const ;
00109     
00110     //    StreamBuffer& serialize(StreamBuffer& s);       //persistancy
00111     //    StreamBuffer& serialize(StreamBuffer& s) const; //persistancy
00112     
00113     
00114     
00115   };
00116   
00117 } // End namespace
00118 
00119 #endif

Generated on Wed May 1 14:11:32 2002 for AtlfastAlgs by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001