00001 #ifndef TrackKinematicStatePropagator_H 00002 #define TrackKinematicStatePropagator_H 00003 00004 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h" 00005 #include "DataFormats/GeometryVector/interface/GlobalTag.h" 00006 #include "DataFormats/GeometryVector/interface/Point3DBase.h" 00007 #include "DataFormats/GeometryVector/interface/Vector3DBase.h" 00008 #include "TrackingTools/TrajectoryParametrization/interface/GlobalTrajectoryParameters.h" 00009 #include "TrackingTools/GeomPropagators/interface/HelixBarrelPlaneCrossingByCircle.h" 00010 #include "DataFormats/GeometrySurface/interface/BoundPlane.h" 00011 00018 class TrackKinematicStatePropagator : public KinematicStatePropagator 00019 { 00020 public: 00021 00022 TrackKinematicStatePropagator() {} 00023 00024 virtual ~TrackKinematicStatePropagator() {} 00025 00026 00031 virtual KinematicState propagateToTheTransversePCA(const KinematicState& state, const GlobalPoint& referencePoint) const; 00032 00033 virtual std::pair<HelixBarrelPlaneCrossingByCircle,BoundPlane::BoundPlanePointer> planeCrossing(const FreeTrajectoryState& par, 00034 const GlobalPoint& point) const; 00035 00040 virtual KinematicStatePropagator * clone() const 00041 {return new TrackKinematicStatePropagator(*this);} 00042 00043 private: 00044 00049 virtual KinematicState propagateToTheTransversePCACharged(const KinematicState& state, const GlobalPoint& referencePoint) const; 00050 00051 virtual KinematicState propagateToTheTransversePCANeutral(const KinematicState& state, const GlobalPoint& referencePoint) const; 00052 00053 typedef Point3DBase< double, GlobalTag> GlobalPointDouble; 00054 typedef Vector3DBase< double, GlobalTag> GlobalVectorDouble; 00055 00056 }; 00057 #endif