00001 #ifndef KinematicState_H 00002 #define KinematicState_H 00003 00004 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicParameters.h" 00005 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicParametersError.h" 00006 #include "RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h" 00007 #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h" 00008 #include "MagneticField/Engine/interface/MagneticField.h" 00009 00018 class KinematicState{ 00019 00020 public: 00021 00027 KinematicState() 00028 {vl = false;} 00029 00035 KinematicState(const KinematicParameters& parameters, 00036 const KinematicParametersError& error, const TrackCharge& charge, 00037 const MagneticField* field); 00038 00039 bool operator==(const KinematicState& other) const; 00040 00045 ParticleMass mass() const; 00046 00047 KinematicParameters kinematicParameters() const; 00048 00049 KinematicParametersError kinematicParametersError() const; 00050 00051 GlobalVector globalMomentum() const; 00052 00053 GlobalPoint globalPosition() const; 00054 00055 TrackCharge particleCharge() const; 00056 00061 FreeTrajectoryState freeTrajectoryState() const; 00062 00063 bool isValid() const 00064 {return vl;} 00065 00066 const MagneticField* magneticField() const {return theField;} 00067 00068 00069 private: 00070 00071 const MagneticField* theField; 00072 KinematicParameters param; 00073 KinematicParametersError err; 00074 TrackCharge ch; 00075 00076 bool vl; 00077 }; 00078 #endif