CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/src/TrackingTools/GeomPropagators/interface/AnalyticalTrajectoryExtrapolatorToLine.h

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