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 
20 
23 
24 class MagneticField;
25 class PropagatorWithMaterial final : public Propagator {
26 
27 public:
39  const MagneticField * mf=0,const float maxDPhi=1.6,
40  bool useRungeKutta=false, float ptMin=-1.,bool useOldGeoPropLogic=true);
41 
42  virtual ~PropagatorWithMaterial();
43 
44 
45 
48 
49 
50 private:
51  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const TrajectoryStateOnSurface& tsos,
52  const Plane& plane) const override;
53 
54  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const FreeTrajectoryState& fts,
55  const Plane& plane) const override;
56 
57  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const TrajectoryStateOnSurface& tsos,
58  const Cylinder& cylinder) const override;
59 
60  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const FreeTrajectoryState& fts,
61  const Cylinder& cylinder) const override;
62 
63 public:
65  virtual bool setMaxDirectionChange( float phiMax) {
67  }
69  virtual void setPropagationDirection (PropagationDirection dir) override;
70 
80  void setMaterialLocation (const MaterialLocation location) {
81  theMaterialLocation = location;
82  }
86  }
89  return *theMEUpdator;
90  }
91 
92  virtual const MagneticField* magneticField() const {return field;}
93 
94 
95  virtual PropagatorWithMaterial* clone() const
96  {
97  return new PropagatorWithMaterial(*this);
98  }
99 
100 private:
103 
104 private:
105  // Geometrical propagator
106 
107  defaultRKPropagator::Product rkProduct;
109 
110 
111  // Material effects
113  typedef std::pair<TrajectoryStateOnSurface,double> TsosWP;
114  // Use material at source?
118 };
119 
120 #endif
121 
122 
virtual const MagneticField * magneticField() const
void setMaterialLocation(const MaterialLocation location)
bool materialAtSource() const
Inclusion of material at the source?
defaultRKPropagator::Product rkProduct
std::pair< TrajectoryStateOnSurface, double > TsosWP
PropagationDirection
virtual bool setMaxDirectionChange(float phiMax)
Definition: Propagator.h:165
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.
tuple useRungeKutta
DeepCopyPointerByClone< MaterialEffectsUpdator > theMEUpdator
DeepCopyPointerByClone< Propagator > theGeometricalPropagator
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:15
const MaterialEffectsUpdator & materialEffectsUpdator() const
Access to the MaterialEffectsUpdator.
virtual PropagatorWithMaterial * clone() const
MaterialLocation theMaterialLocation
string const
Definition: compareJSON.py:14
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:53
virtual void setPropagationDirection(PropagationDirection dir) override
Propagation direction.
#define dso_internal
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const TrajectoryStateOnSurface &tsos, const Plane &plane) const override
virtual bool setMaxDirectionChange(float phiMax)
Limit on change in azimuthal angle.
dbl *** dir
Definition: mlp_gen.cc:35
const MagneticField * field