CMS 3D CMS Logo

SteppingHelixStateInfo.h
Go to the documentation of this file.
1 #ifndef SteppingHelixPropagator_SteppingHelixStateInfo_h
2 #define SteppingHelixPropagator_SteppingHelixStateInfo_h
3 
4 
5 
12 //
13 // Original Author: Vyacheslav Krutelyov
14 // Created: Wed Jan 3 16:01:24 CST 2007
15 //
16 //
17 
19 
20 
21 #include "CLHEP/Matrix/SymMatrix.h"
22 #include "CLHEP/Vector/ThreeVector.h"
23 
24 
25 
26 class MagneticField;
27 class MagVolume;
28 class Surface;
31 
34  public:
35  typedef CLHEP::Hep3Vector Vector;
36  typedef CLHEP::Hep3Vector Point;
37 
38  enum Result {
39  OK=0,
48  };
49 
51 
53  path_(0), radPath_(0), dir(0), magVol(nullptr), isYokeVol(false), field(nullptr), dEdx(0), dEdXPrime(0), radX0(1e12),
56 
58 
60  void getFreeState(FreeTrajectoryState& fts) const;
61 
62  GlobalPoint position() const {return GlobalPoint(r3.x(), r3.y(), r3.z());}
63  GlobalVector momentum() const {return GlobalVector(p3.x(), p3.y(), p3.z());}
64  int charge() const {return q;}
65  double path() const {return isValid_ ? path_ : 0;}
66  double radPath() const {return isValid_ ? radPath_ : 0;}
67 
68  bool isValid() const {return isValid_;}
69  bool hasErrorPropagated() const {return hasErrorPropagated_;}
70 
71  Result status() const {return status_;}
72 
73  protected:
74  struct VolumeBounds {
75  VolumeBounds(): zMin(0), zMax(1e4), rMin(0), rMax(1e4), th1(0), th2(0) {}
76  VolumeBounds(double r0, double r1, double z0, double z1):
77  zMin(z0), zMax(z1), rMin(r0), rMax(r1), th1(0), th2(0) {}
78  VolumeBounds(double r0, double r1, double z0, double z1, double t1, double t2):
79  zMin(z0), zMax(z1), rMin(r0), rMax(r1), th1(t1), th2(t2) {}
80  double zMin;
81  double zMax;
82  double rMin;
83  double rMax;
84  double th1;
85  double th2;
86  };
87 
88 
89  int q;
90  Vector p3;
91  Point r3;
94  double path_;
95  double radPath_;
96  double dir;
97  Vector bf;
98  Vector bfGradLoc;
99  const MagVolume* magVol;
100  bool isYokeVol;//will be set (most likely) only for the barrel volumes (850>r>3.8, z<667)
102 
104  double dEdx;
105  double dEdXPrime;
106  double radX0;
107 
109  bool isValid_;
111 
113 };
114 #endif
void getFreeState(FreeTrajectoryState &fts) const
convert internal structure into the fts
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
AlgebraicSymMatrix55 covCurv
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
#define nullptr
GlobalVector momentum() const
auto const T2 &decltype(t1.eta()) t2
Definition: deltaR.h:16
GlobalPoint position() const
TrajectoryStateOnSurface getStateOnSurface(const Surface &surf, bool returnTangentPlane=false) const
AlgebraicSymMatrix55 matDCovCurv
const MagneticField * field
VolumeBounds(double r0, double r1, double z0, double z1, double t1, double t2)
VolumeBounds(double r0, double r1, double z0, double z1)
static const std::string ResultName[MAX_RESULT]
Global3DVector GlobalVector
Definition: GlobalVector.h:10