CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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
double getL2DAtR(double r) const
double getPathLengthAtZ(double z) const
void _refreshCache() const
double getCosPhi0() const
void setCurvature(double curvature)
double getSinPhi0() const
T curvature(T InversePt, const MagneticField &field)
void setPhi0(double phi0)
HepGeom::Point3D< double > getPosition(double s=0.0) const
double getCotTheta() const
void setZ0(double z0)
void setD0(double d0)
double getPhi0() const
double getSinTheta() const
double getCosTheta() const
void getGflashTrajectoryPoint(GflashTrajectoryPoint &point, double s) const
double getZ0() const
static constexpr float d0
double getZAtR(double r) const
void _cacheSinesAndCosines(double s) const
HepGeom::Vector3D< double > getDirection(double s=0.0) const
double getCurvature() const
double getD0() 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)
double getPathLengthAtRhoEquals(double rho) const
void initializeTrajectory(const HepGeom::Vector3D< double > &, const HepGeom::Point3D< double > &, double q, double Field)