![]() |
![]() |
00001 #ifndef AnalyticalTrajectoryExtrapolatorToLine_h_ 00002 #define AnalyticalTrajectoryExtrapolatorToLine_h_ 00003 00004 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00005 #include "DataFormats/GeometryVector/interface/GlobalVector.h" 00006 #include "DataFormats/GeometryCommonDetAlgo/interface/DeepCopyPointerByClone.h" 00007 #include "TrackingTools/GeomPropagators/interface/Propagator.h" 00008 00009 #include "FWCore/Utilities/interface/Visibility.h" 00010 00011 class FreeTrajectoryState; 00012 class TrajectoryStateOnSurface; 00013 class Line; 00014 class IterativeHelixExtrapolatorToLine; 00015 class MagneticField; 00016 00028 class AnalyticalTrajectoryExtrapolatorToLine { 00029 00030 public: 00032 AnalyticalTrajectoryExtrapolatorToLine (const MagneticField* field); 00033 00035 AnalyticalTrajectoryExtrapolatorToLine (const Propagator&); 00036 00038 TrajectoryStateOnSurface extrapolate (const FreeTrajectoryState& fts, 00039 const Line & L) const; 00040 00042 TrajectoryStateOnSurface extrapolate (const TrajectoryStateOnSurface tsos, 00043 const Line & L) const; 00044 00045 private: 00047 TrajectoryStateOnSurface extrapolateFullState (const TrajectoryStateOnSurface tsos, 00048 const Line& line) const dso_internal; 00050 TrajectoryStateOnSurface extrapolateSingleState (const FreeTrajectoryState& fts, 00051 const Line& line) const dso_internal; 00053 bool propagateWithHelix (const IterativeHelixExtrapolatorToLine& extrapolator, 00054 const Line& line, 00055 GlobalPoint& x, GlobalVector& p, double& s) const dso_internal; 00056 00057 private: 00058 DeepCopyPointerByClone<Propagator> thePropagator; 00059 }; 00060 00061 #endif 00062 00063 00064 00065