File indexing completed on 2024-04-06 12:31:27
0001 #ifndef AnalyticalTrajectoryExtrapolatorToLine_h_
0002 #define AnalyticalTrajectoryExtrapolatorToLine_h_
0003
0004 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0005 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
0006 #include "DataFormats/GeometryCommonDetAlgo/interface/DeepCopyPointerByClone.h"
0007 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
0008
0009 #include "FWCore/Utilities/interface/Visibility.h"
0010
0011 class FreeTrajectoryState;
0012 class TrajectoryStateOnSurface;
0013 class Line;
0014 class IterativeHelixExtrapolatorToLine;
0015 class MagneticField;
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 class AnalyticalTrajectoryExtrapolatorToLine {
0029 public:
0030
0031 AnalyticalTrajectoryExtrapolatorToLine(const MagneticField* field);
0032
0033
0034 AnalyticalTrajectoryExtrapolatorToLine(const Propagator&);
0035
0036
0037 TrajectoryStateOnSurface extrapolate(const FreeTrajectoryState& fts, const Line& L) const;
0038
0039
0040 TrajectoryStateOnSurface extrapolate(const TrajectoryStateOnSurface tsos, const Line& L) const;
0041
0042 private:
0043
0044 TrajectoryStateOnSurface extrapolateFullState(const TrajectoryStateOnSurface tsos,
0045 const Line& line) const dso_internal;
0046
0047 TrajectoryStateOnSurface extrapolateSingleState(const FreeTrajectoryState& fts, const Line& line) const dso_internal;
0048
0049 bool propagateWithHelix(const IterativeHelixExtrapolatorToLine& extrapolator,
0050 const Line& line,
0051 GlobalPoint& x,
0052 GlobalVector& p,
0053 double& s) const dso_internal;
0054
0055 private:
0056 DeepCopyPointerByClone<Propagator> thePropagator;
0057 };
0058
0059 #endif