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;
89  double path_;
90  double radPath_;
91  double dir;
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
TrajectoryStateOnSurface getStateOnSurface(const Surface &surf, bool returnTangentPlane=false) const
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
AlgebraicSymMatrix55 covCurv
GlobalPoint position() const
void getFreeState(FreeTrajectoryState &fts) const
convert internal structure into the fts
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)
GlobalVector momentum() const
Structure Point Contains parameters of Gaussian fits to DMRs.
VolumeBounds(double r0, double r1, double z0, double z1)
static const std::string ResultName[MAX_RESULT]
Global3DVector GlobalVector
Definition: GlobalVector.h:10