CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
NavPropagator.h
Go to the documentation of this file.
1 #ifndef NavPropagator_H_
2 #define NavPropagator_H_
3 
6 
11 
12 #include <map>
13 
14 class MagneticField;
16 class RKPropagatorInS;
17 class NavVolume;
18 class MagVolume;
19 
20 
21 class NavPropagator : public Propagator {
22 
23 public:
24 
25  NavPropagator( const MagneticField* field,
27 
29  //
30  // use base class methods where necessary:
31  // - propagation from TrajectoryStateOnSurface
32  // (will use propagation from FreeTrajectoryState)
33  // - propagation to general Surface
34  // (will use specialised methods for planes or cylinders)
35  //
38 
41  const Plane& plane) const {
42  return propagateWithPath(ts,plane).first;
43  }
45  std::pair<TrajectoryStateOnSurface,double>
47  const Plane& plane) const;
48 
51  const Plane& plane) const {
52  return propagateWithPath(ts,plane).first;
53  }
55  std::pair<TrajectoryStateOnSurface,double>
57  const Plane& plane) const;
58 
61  const Cylinder& cylinder) const {
62  return propagateWithPath(fts,cylinder).first;
63  }
65  std::pair<TrajectoryStateOnSurface,double>
67  const Cylinder& cylinder) const;
68 
69  virtual NavPropagator * clone() const {return new NavPropagator(*this);}
70 
71  virtual const MagneticField* magneticField() const;
72 
73 private:
74 
75  typedef std::pair<TrajectoryStateOnSurface,double> TsosWP;
77  typedef std::map<const MagVolume*, NavVolume*> MagVolumeMap;
79 
80 
83  bool isIronVolume[272];
84 
85 
86  const NavVolume* findVolume( const TrajectoryStateOnSurface& inputState) const;
87 
88  const NavVolume* navVolume( const MagVolume* magVolume) const;
89 
90  bool destinationCrossed( const TSOS& startState,
91  const TSOS& endState, const Plane& plane) const;
92 
94 
95  std::pair<TrajectoryStateOnSurface,double>
96  propagateInVolume( const NavVolume* currentVolume,
97  const TrajectoryStateOnSurface& startingState,
98  const Plane& targetPlane) const;
99 
105 };
106 
107 #endif
std::pair< TrajectoryStateOnSurface, double > propagateInVolume(const NavVolume *currentVolume, const TrajectoryStateOnSurface &startingState, const Plane &targetPlane) const
const VolumeBasedMagneticField * theField
Definition: NavPropagator.h:81
MagVolumeMap theNavVolumeMap
Definition: NavPropagator.h:82
TrajectoryStateOnSurface TSOS
Definition: NavPropagator.h:78
NavPropagator(const MagneticField *field, PropagationDirection dir=alongMomentum)
PropagationDirection
virtual const MagneticField * magneticField() const
const NavVolume * navVolume(const MagVolume *magVolume) const
Definition: Plane.h:17
bool destinationCrossed(const TSOS &startState, const TSOS &endState, const Plane &plane) const
const NavVolume * findVolume(const TrajectoryStateOnSurface &inputState) const
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:77
TrajectoryStateOnSurface propagate(const FreeTrajectoryState &ts, const Plane &plane) const
propagation of FTS to plane
Definition: NavPropagator.h:50
std::pair< TrajectoryStateOnSurface, double > TsosWP
Definition: NavPropagator.h:75
bool isIronVolume[272]
Definition: NavPropagator.h:83
const VolumeMediumProperties theIronMedium
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:12
RKPropagatorInS PropagatorType
Definition: NavPropagator.h:76
const VolumeMediumProperties theAirMedium
TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &ts, const Plane &plane) const
propagation of TSOS to plane
Definition: NavPropagator.h:40
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const TrajectoryStateOnSurface &, const Plane &plane) const
propagation of TSOS to plane with path length
virtual NavPropagator * clone() const
Definition: NavPropagator.h:69
const VolumeMultipleScatteringEstimator theMSEstimator
const VolumeEnergyLossEstimator theELEstimator
const VolumeMaterialEffectsUpdator theMaterialUpdator
TrajectoryStateOnSurface noNextVolume(TrajectoryStateOnSurface startingState) const
TrajectoryStateOnSurface propagate(const FreeTrajectoryState &fts, const Cylinder &cylinder) const
propagation to cylinder
Definition: NavPropagator.h:60
dbl *** dir
Definition: mlp_gen.cc:35
std::map< const MagVolume *, NavVolume * > MagVolumeMap
Definition: NavPropagator.h:77