CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PropagatorWithMaterial.h
Go to the documentation of this file.
1 #ifndef _COMMONRECO_PROPAGATORWITHMATERIAL_H_
2 #define _COMMONRECO_PROPAGATORWITHMATERIAL_H_
3 
22 
26 
28 
29 public:
41  const MagneticField * mf=0,const float maxDPhi=1.6,
42  bool useRungeKutta=false, float ptMin=-1.,bool useOldGeoPropLogic=true);
43 
44  virtual ~PropagatorWithMaterial();
45 
47  const Plane& plane) const
48  {
49  // should be implemented (in case underlying propagator has an independent
50  // implementation)
51  return propagateWithPath(tsos,plane).first;
52  }
53 
55  const Plane& plane) const
56  {
57  // should be implemented (in case underlying propagator has an independent
58  // implementation)
59  return propagateWithPath(fts,plane).first;
60  }
61 
62  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const TrajectoryStateOnSurface& tsos,
63  const Plane& plane) const;
64 
65  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const FreeTrajectoryState& fts,
66  const Plane& plane) const;
67 
69  const Cylinder& cylinder) const
70  {
71  // should be implemented (in case underlying propagator has an independent
72  // implementation)
73  return propagateWithPath(tsos,cylinder).first;
74  }
75 
77  const Cylinder& cylinder) const
78  {
79  // should be implemented (in case underlying propagator has an independent
80  // implementation)
81  return propagateWithPath(fts,cylinder).first;
82  }
83 
84  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const TrajectoryStateOnSurface& tsos,
85  const Cylinder& cylinder) const;
86 
87  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const FreeTrajectoryState& fts,
88  const Cylinder& cylinder) const;
89 
91  virtual bool setMaxDirectionChange( float phiMax) {
92  return theGeometricalPropagator->setMaxDirectionChange(phiMax);
93  }
95  virtual void setPropagationDirection (PropagationDirection dir) const;
96 
97  enum MaterialLocation {atSource, atDestination, fromDirection};
106  void setMaterialLocation (const MaterialLocation location) {
107  theMaterialLocation = location;
108  }
111  return *theGeometricalPropagator;
112  }
115  return *theMEUpdator;
116  }
117 
118  virtual const MagneticField* magneticField() const {return field;}
119 
120 
121  virtual PropagatorWithMaterial* clone() const
122  {
123  return new PropagatorWithMaterial(*this);
124  }
125 
126 private:
128  bool materialAtSource() const dso_internal;
129 
130 private:
131  // Geometrical propagator
132 
133  defaultRKPropagator::Product rkProduct;
134  DeepCopyPointerByClone<Propagator> theGeometricalPropagator;
135 
136 
137  // Material effects
139  typedef std::pair<TrajectoryStateOnSurface,double> TsosWP;
140  // Use material at source?
141  MaterialLocation theMaterialLocation;
143  bool useRungeKutta_;
144 };
145 
146 #endif
147 
148 
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &fts, const Plane &plane) const
std::pair< TrajectoryStateOnSurface, double > TsosWP
virtual TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Cylinder &cylinder) const
const Propagator & geometricalPropagator() const
Access to the geometrical propagator.
PropagationDirection
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &fts, const Cylinder &cylinder) const
Definition: Plane.h:17
void setMaterialLocation(const MaterialLocation location)
virtual TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Plane &plane) const
virtual bool setMaxDirectionChange(float phiMax)
Limit on change in azimuthal angle.
#define dso_internal
Definition: Visibility.h:13
virtual const MagneticField * magneticField() const
virtual PropagatorWithMaterial * clone() const
const MaterialEffectsUpdator & materialEffectsUpdator() const
Access to the MaterialEffectsUpdator.
string const
Definition: compareJSON.py:14
#define private
Definition: FWFileEntry.h:18
dbl *** dir
Definition: mlp_gen.cc:35
Unlimited (trivial) bounds.