CMS 3D CMS Logo

SteppingHelixStateInfo.h
Go to the documentation of this file.
1 #ifndef SteppingHelixPropagator_SteppingHelixStateInfo_h
2 #define SteppingHelixPropagator_SteppingHelixStateInfo_h
3 
10 //
11 // Original Author: Vyacheslav Krutelyov
12 // Created: Wed Jan 3 16:01:24 CST 2007
13 //
14 //
15 
17 
18 #include "CLHEP/Matrix/SymMatrix.h"
19 #include "CLHEP/Vector/ThreeVector.h"
20 
21 class MagneticField;
22 class MagVolume;
23 class Surface;
26 
29 
30 public:
31  typedef CLHEP::Hep3Vector Vector;
32  typedef CLHEP::Hep3Vector Point;
33 
35 
37 
39  : path_(0),
40  radPath_(0),
41  dir(0),
42  magVol(nullptr),
44  field(nullptr),
45  dEdx(0),
46  dEdXPrime(0),
47  radX0(1e12),
49  isValid_(false),
51  status_(UNDEFINED) {}
53 
55 
57  void getFreeState(FreeTrajectoryState& fts) const;
58 
59  GlobalPoint position() const { return GlobalPoint(r3.x(), r3.y(), r3.z()); }
60  GlobalVector momentum() const { return GlobalVector(p3.x(), p3.y(), p3.z()); }
61  int charge() const { return q; }
62  double path() const { return isValid_ ? path_ : 0; }
63  double radPath() const { return isValid_ ? radPath_ : 0; }
64 
65  bool isValid() const { return isValid_; }
66  bool hasErrorPropagated() const { return hasErrorPropagated_; }
67 
68  Result status() const { return status_; }
69 
70 protected:
71  struct VolumeBounds {
72  VolumeBounds() : zMin(0), zMax(1e4), rMin(0), rMax(1e4), th1(0), th2(0) {}
73  VolumeBounds(double r0, double r1, double z0, double z1) : zMin(z0), zMax(z1), rMin(r0), rMax(r1), th1(0), th2(0) {}
74  VolumeBounds(double r0, double r1, double z0, double z1, double t1, double t2)
75  : zMin(z0), zMax(z1), rMin(r0), rMax(r1), th1(t1), th2(t2) {}
76  double zMin;
77  double zMax;
78  double rMin;
79  double rMax;
80  double th1;
81  double th2;
82  };
83 
84  int q;
85  Vector p3;
86  Point r3;
89  double path_;
90  double radPath_;
91  double dir;
92  Vector bf;
93  Vector bfGradLoc;
94  const MagVolume* magVol;
95  bool isYokeVol; //will be set (most likely) only for the barrel volumes (850>r>3.8, z<667)
97 
99  double dEdx;
100  double dEdXPrime;
101  double radX0;
102 
104  bool isValid_;
106 
108 };
109 #endif
void getFreeState(FreeTrajectoryState &fts) const
convert internal structure into the fts
#define nullptr
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
AlgebraicSymMatrix55 covCurv
GlobalVector momentum() const
GlobalPoint position() const
TrajectoryStateOnSurface getStateOnSurface(const Surface &surf, bool returnTangentPlane=false) const
AlgebraicSymMatrix55 matDCovCurv
const MagneticField * field
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
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