Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:29:13

0001 #ifndef TrackKinematicStatePropagator_H
0002 #define TrackKinematicStatePropagator_H
0003 
0004 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h"
0005 #include "DataFormats/GeometryVector/interface/GlobalTag.h"
0006 #include "DataFormats/GeometryVector/interface/Point3DBase.h"
0007 #include "DataFormats/GeometryVector/interface/Vector3DBase.h"
0008 #include "TrackingTools/TrajectoryParametrization/interface/GlobalTrajectoryParameters.h"
0009 #include "TrackingTools/GeomPropagators/interface/HelixBarrelPlaneCrossingByCircle.h"
0010 #include "DataFormats/GeometrySurface/interface/BoundPlane.h"
0011 
0012 /**
0013  * Propagator for TransientTrack based KinematicStates.
0014  * Does not include the material.
0015  */
0016 
0017 class TrackKinematicStatePropagator final : public KinematicStatePropagator {
0018 public:
0019   TrackKinematicStatePropagator() {}
0020 
0021   ~TrackKinematicStatePropagator() override {}
0022 
0023   /**
0024    * Propagation to the point of closest approach in
0025    * transverse plane to the given point
0026    */
0027   KinematicState propagateToTheTransversePCA(const KinematicState& state,
0028                                              const GlobalPoint& referencePoint) const override;
0029 
0030   bool willPropagateToTheTransversePCA(const KinematicState& state, const GlobalPoint& point) const override;
0031 
0032   /**
0033    * Clone method reimplemented from
0034    * abstract class
0035    */
0036   KinematicStatePropagator* clone() const override { return new TrackKinematicStatePropagator(*this); }
0037 
0038 private:
0039   /**
0040    * Internal private methods, distinguishing between the propagation of neutrals
0041    * and propagation of cahrged tracks.
0042    */
0043   virtual KinematicState propagateToTheTransversePCACharged(const KinematicState& state,
0044                                                             const GlobalPoint& referencePoint) const;
0045 
0046   virtual KinematicState propagateToTheTransversePCANeutral(const KinematicState& state,
0047                                                             const GlobalPoint& referencePoint) const;
0048 
0049   typedef Point3DBase<double, GlobalTag> GlobalPointDouble;
0050   typedef Vector3DBase<double, GlobalTag> GlobalVectorDouble;
0051 };
0052 #endif