CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/TrackingTools/GeomPropagators/interface/AnalyticalImpactPointExtrapolator.h

Go to the documentation of this file.
00001 #ifndef AnalyticalImpactPointExtrapolator_h_
00002 #define AnalyticalImpactPointExtrapolator_h_
00003 
00004 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00005 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
00006 
00007 #include "DataFormats/GeometryCommonDetAlgo/interface/DeepCopyPointerByClone.h"
00008 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
00009 
00010 class FreeTrajectoryState;
00011 class TrajectoryStateOnSurface;
00012 class IterativeHelixExtrapolatorToLine;
00013 class MagneticField; 
00014 
00026 class AnalyticalImpactPointExtrapolator {
00027 
00028 public:
00029 
00031   AnalyticalImpactPointExtrapolator ( const MagneticField* field);
00032 
00034   AnalyticalImpactPointExtrapolator (const Propagator&, const MagneticField*);
00035 
00037   TrajectoryStateOnSurface extrapolate (const FreeTrajectoryState& fts, 
00038                                         const GlobalPoint& vtx) const;
00040   TrajectoryStateOnSurface extrapolate (const TrajectoryStateOnSurface tsos, 
00041                                         const GlobalPoint& vtx) const;
00042 
00043 private:
00045   TrajectoryStateOnSurface extrapolateFullState(const TrajectoryStateOnSurface tsos, 
00046                                                 const GlobalPoint& vertex) const;
00048   TrajectoryStateOnSurface extrapolateSingleState(const FreeTrajectoryState& fts, 
00049                                                   const GlobalPoint& vertex) const;
00051   bool propagateWithHelix (const IterativeHelixExtrapolatorToLine& extrapolator,
00052                            const GlobalPoint& vertex,
00053                            GlobalPoint& x, GlobalVector& p, double& s) const;
00054 
00055 private:
00056   DeepCopyPointerByClone<Propagator> thePropagator;
00057   const MagneticField* theField;
00058 };
00059 
00060 #endif