CMS 3D CMS Logo

GflashTrajectory.h
Go to the documentation of this file.
1 #ifndef GflashTrajectory_H
2 #define GflashTrajectory_H 1
3 
5 
7 public:
10 
11  void initializeTrajectory(const HepGeom::Vector3D<double> &, const HepGeom::Point3D<double> &, double q, double Field);
12 
13  void setCotTheta(double cotTheta);
14  void setCurvature(double curvature);
15  void setZ0(double z0);
16  void setD0(double d0);
17  void setPhi0(double phi0);
18 
19  double getCotTheta() const { return _cotTheta; }
20  double getCurvature() const { return _curvature; }
21  double getZ0() const { return _z0; };
22  double getD0() const { return _d0; };
23  double getPhi0() const { return _phi0; };
24 
25  // Get sines and cosines of Phi0 and Theta
26  double getSinPhi0() const;
27  double getCosPhi0() const;
28  double getSinTheta() const;
29  double getCosTheta() const;
30 
31  // Get Position as a function of (three-dimensional) path length
32  HepGeom::Point3D<double> getPosition(double s = 0.0) const;
33 
34  // Get Direction as a function of (three-dimensional) path length
35  HepGeom::Vector3D<double> getDirection(double s = 0.0) const;
36 
38  double getPathLengthAtRhoEquals(double rho) const;
39  double getPathLengthAtZ(double z) const;
40 
41  double getZAtR(double r) const;
42  double getL2DAtR(double r) const;
43 
44  // needed whenever _sinPhi0, _cosPh0, _sinTheta, or _cosTheta is used.
45  void _refreshCache() const;
46 
47  // neede whenever _ss or _cc are used.
48  void _cacheSinesAndCosines(double s) const;
49 
50 private:
51  // This is the GflashTrajectory:
52  double _cotTheta;
53  double _curvature;
54  double _z0;
55  double _d0;
56  double _phi0;
57 
58  // This is the cache
59  mutable bool _isStale;
60  mutable double _sinPhi0;
61  mutable double _cosPhi0;
62  mutable double _sinTheta;
63  mutable double _cosTheta;
64  mutable double _s;
65 
66  mutable double _aa;
67  mutable double _ss;
68  mutable double _cc;
69 };
70 
71 #endif
HepGeom::Point3D< double > getPosition(double s=0.0) const
double getSinTheta() const
double getPhi0() const
void _refreshCache() const
void setCurvature(double curvature)
T curvature(T InversePt, const MagneticField &field)
void setPhi0(double phi0)
double getPathLengthAtRhoEquals(double rho) const
void setZ0(double z0)
void setD0(double d0)
double getZAtR(double r) const
double getPathLengthAtZ(double z) const
double getCurvature() const
double getCotTheta() const
double getSinPhi0() const
void getGflashTrajectoryPoint(GflashTrajectoryPoint &point, double s) const
void _cacheSinesAndCosines(double s) const
double getL2DAtR(double r) const
static constexpr float d0
HepGeom::Vector3D< double > getDirection(double s=0.0) const
double getCosPhi0() const
double getD0() const
double getZ0() const
double getCosTheta() const
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
void setCotTheta(double cotTheta)
void initializeTrajectory(const HepGeom::Vector3D< double > &, const HepGeom::Point3D< double > &, double q, double Field)