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;
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 
45  const Plane& plane) const
46  {
47  // should be implemented (in case underlying propagator has an independent
48  // implementation)
49  return propagateWithPath(tsos,plane).first;
50  }
51 
53  const Plane& plane) const
54  {
55  // should be implemented (in case underlying propagator has an independent
56  // implementation)
57  return propagateWithPath(fts,plane).first;
58  }
59 
60  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const TrajectoryStateOnSurface& tsos,
61  const Plane& plane) const;
62 
63  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const FreeTrajectoryState& fts,
64  const Plane& plane) const;
65 
67  const Cylinder& cylinder) const
68  {
69  // should be implemented (in case underlying propagator has an independent
70  // implementation)
71  return propagateWithPath(tsos,cylinder).first;
72  }
73 
75  const Cylinder& cylinder) const
76  {
77  // should be implemented (in case underlying propagator has an independent
78  // implementation)
79  return propagateWithPath(fts,cylinder).first;
80  }
81 
82  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const TrajectoryStateOnSurface& tsos,
83  const Cylinder& cylinder) const;
84 
85  virtual std::pair<TrajectoryStateOnSurface,double> propagateWithPath (const FreeTrajectoryState& fts,
86  const Cylinder& cylinder) const;
87 
89  virtual bool setMaxDirectionChange( float phiMax) {
90  return theGeometricalPropagator->setMaxDirectionChange(phiMax);
91  }
93  virtual void setPropagationDirection (PropagationDirection dir) const;
94 
95  enum MaterialLocation {atSource, atDestination, fromDirection};
104  void setMaterialLocation (const MaterialLocation location) {
105  theMaterialLocation = location;
106  }
109  return *theGeometricalPropagator;
110  }
113  return *theMEUpdator;
114  }
115 
116  virtual const MagneticField* magneticField() const {return field;}
117 
118 
119  virtual PropagatorWithMaterial* clone() const
120  {
121  return new PropagatorWithMaterial(*this);
122  }
123 
124 private:
126  bool materialAtSource() const dso_internal;
127 
128 private:
129  // Geometrical propagator
130 
131  defaultRKPropagator::Product rkProduct;
132  DeepCopyPointerByClone<Propagator> theGeometricalPropagator;
133 
134 
135  // Material effects
137  typedef std::pair<TrajectoryStateOnSurface,double> TsosWP;
138  // Use material at source?
139  MaterialLocation theMaterialLocation;
141  bool useRungeKutta_;
142 };
143 
144 #endif
145 
146 
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
tuple field
Definition: statics.py:62
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:17
dbl *** dir
Definition: mlp_gen.cc:35
Unlimited (trivial) bounds.