CMS 3D CMS Logo

/data/git/CMSSW_5_3_11_patch5/src/RecoVertex/KinematicFitPrimitives/interface/TrackKinematicStatePropagator.h

Go to the documentation of this file.
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