00001 #ifndef _TRACKER_CURVILINEARTRAJECTORYPARAMETERS_H_ 00002 #define _TRACKER_CURVILINEARTRAJECTORYPARAMETERS_H_ 00003 00004 00005 #include "DataFormats/TrajectoryState/interface/TrackCharge.h" 00006 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h" 00007 00008 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00009 #include "DataFormats/GeometryVector/interface/GlobalVector.h" 00010 00011 #include <cmath> 00012 00013 00014 00029 class CurvilinearTrajectoryParameters { 00030 public: 00031 00033 00034 CurvilinearTrajectoryParameters() {} 00035 00036 00043 CurvilinearTrajectoryParameters(const AlgebraicVector5& v, bool charged = true); 00044 00056 CurvilinearTrajectoryParameters(double aQbp, double alambda, double aphi, double axT, double ayT, bool charged = true); 00057 00058 00062 CurvilinearTrajectoryParameters(const GlobalPoint& aX,const GlobalVector& aP,TrackCharge aCharge); 00063 00065 TrackCharge charge() const {return theCharge;} 00066 00068 double signedInverseMomentum() const { 00069 return charge()==0 ? 0. : theQbp; 00070 } 00071 00072 00077 AlgebraicVector5 vector() const ; 00078 00079 00080 double Qbp() const { return theQbp; } 00081 double lambda() const { return thelambda; } 00082 double phi() const { return thephi; } 00083 double xT() const { return thexT; } 00084 double yT() const { return theyT; } 00085 00086 bool updateP(double dP); 00087 00088 private: 00089 double theQbp; 00090 double thelambda; 00091 double thephi; 00092 double thexT; 00093 double theyT; 00094 00095 TrackCharge theCharge; 00096 }; 00097 00098 00099 #endif