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 
24 
26 
27 public:
39  const MagneticField * mf=0,const float maxDPhi=1.6,
40  bool useRungeKutta=false, float ptMin=-1.,bool useOldGeoPropLogic=true);
44  const MaterialEffectsUpdator& MEUpdator,
45  const MagneticField * mf=0,
46  bool useRungeKutta=false);
47 
48  virtual ~PropagatorWithMaterial();
49 
51  const Plane& plane) const
52  {
53  // should be implemented (in case underlying propagator has an independent
54  // implementation)
55  return propagateWithPath(tsos,plane).first;
56  }
57 
59  const Plane& plane) const
60  {
61  // should be implemented (in case underlying propagator has an independent
62  // implementation)
63  return propagateWithPath(fts,plane).first;
64  }
65 
66  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const TrajectoryStateOnSurface& tsos,
67  const Plane& plane) const;
68 
69  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const FreeTrajectoryState& fts,
70  const Plane& plane) const;
71 
73  const Cylinder& cylinder) const
74  {
75  // should be implemented (in case underlying propagator has an independent
76  // implementation)
77  return propagateWithPath(tsos,cylinder).first;
78  }
79 
81  const Cylinder& cylinder) const
82  {
83  // should be implemented (in case underlying propagator has an independent
84  // implementation)
85  return propagateWithPath(fts,cylinder).first;
86  }
87 
88  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const TrajectoryStateOnSurface& tsos,
89  const Cylinder& cylinder) const;
90 
91  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const FreeTrajectoryState& fts,
92  const Cylinder& cylinder) const;
93 
95  virtual bool setMaxDirectionChange( float phiMax) {
97  }
99  virtual void setPropagationDirection (PropagationDirection dir) const;
100 
110  void setMaterialLocation (const MaterialLocation location) {
111  theMaterialLocation = location;
112  }
114  const Propagator& geometricalPropagator() const {
115  return *theGeometricalPropagator;
116  }
119  return *theMEUpdator;
120  }
121 
122  virtual const MagneticField* magneticField() const {return field;}
123 
124 
125  virtual PropagatorWithMaterial* clone() const
126  {
127  return new PropagatorWithMaterial(*this);
128  }
129 
130 private:
132  bool materialAtSource() const;
133 
134 private:
135  // Geometrical propagator
137 
138 
139  // Material effects
141  typedef std::pair<TrajectoryStateOnSurface,double> TsosWP;
142  // Use material at source?
146 };
147 
148 #endif
149 
150 
virtual const MagneticField * magneticField() const
void setMaterialLocation(const MaterialLocation location)
bool materialAtSource() const
Inclusion of material at the source?
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &fts, const Plane &plane) const
std::pair< TrajectoryStateOnSurface, double > TsosWP
PropagationDirection
virtual bool setMaxDirectionChange(float phiMax)
Definition: Propagator.h:157
Definition: Plane.h:17
PropagatorWithMaterial(PropagationDirection dir, const float mass, const MagneticField *mf=0, const float maxDPhi=1.6, bool useRungeKutta=false, float ptMin=-1., bool useOldGeoPropLogic=true)
const Propagator & geometricalPropagator() const
Access to the geometrical propagator.
DeepCopyPointerByClone< MaterialEffectsUpdator > theMEUpdator
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &fts, const Cylinder &cylinder) const
DeepCopyPointerByClone< Propagator > theGeometricalPropagator
const MaterialEffectsUpdator & materialEffectsUpdator() const
Access to the MaterialEffectsUpdator.
virtual TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Plane &plane) const
virtual PropagatorWithMaterial * clone() const
MaterialLocation theMaterialLocation
virtual TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Cylinder &cylinder) const
tuple mass
Definition: scaleCards.py:27
virtual bool setMaxDirectionChange(float phiMax)
Limit on change in azimuthal angle.
virtual void setPropagationDirection(PropagationDirection dir) const
Propagation direction.
dbl *** dir
Definition: mlp_gen.cc:35
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const TrajectoryStateOnSurface &tsos, const Plane &plane) const
const MagneticField * field