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 {
8 public:
9 
12 
13  void initializeTrajectory(const HepGeom::Vector3D<double> &, const HepGeom::Point3D<double> &, double q, double Field);
14 
15  void setCotTheta(double cotTheta);
16  void setCurvature(double curvature);
17  void setZ0(double z0);
18  void setD0(double d0);
19  void setPhi0(double phi0);
20 
21  double getCotTheta() const { return _cotTheta; }
22  double getCurvature() const { return _curvature; }
23  double getZ0() const { return _z0; };
24  double getD0() const { return _d0; };
25  double getPhi0() const { return _phi0;};
26 
27  // Get sines and cosines of Phi0 and Theta
28  double getSinPhi0() const;
29  double getCosPhi0() const;
30  double getSinTheta() const;
31  double getCosTheta() const;
32 
33  // Get Position as a function of (three-dimensional) path length
34  HepGeom::Point3D<double> getPosition(double s = 0.0) const;
35 
36  // Get Direction as a function of (three-dimensional) path length
37  HepGeom::Vector3D<double> getDirection(double s = 0.0) const;
38 
40  double getPathLengthAtRhoEquals(double rho) const;
41  double getPathLengthAtZ(double z) const;
42 
43  double getZAtR(double r) const;
44  double getL2DAtR(double r) const;
45 
46  //needed whenever _sinPhi0, _cosPh0, _sinTheta, or _cosTheta is used.
47  void _refreshCache() const;
48 
49  // neede whenever _ss or _cc are used.
50  void _cacheSinesAndCosines(double s) const;
51 
52 private:
53 
54  // This is the GflashTrajectory:
55  double _cotTheta;
56  double _curvature;
57  double _z0;
58  double _d0;
59  double _phi0;
60 
61  // This is the cache
62  mutable bool _isStale;
63  mutable double _sinPhi0;
64  mutable double _cosPhi0;
65  mutable double _sinTheta;
66  mutable double _cosTheta;
67  mutable double _s;
68 
69  mutable double _aa;
70  mutable double _ss;
71  mutable double _cc;
72 
73 };
74 
75 #endif
76 
77 
double getL2DAtR(double r) const
double getPathLengthAtZ(double z) const
void _refreshCache() const
double getCosPhi0() const
void setCurvature(double curvature)
double getSinPhi0() const
void setPhi0(double phi0)
HepGeom::Point3D< double > getPosition(double s=0.0) const
double getCotTheta() const
T curvature(T InversePt, const edm::EventSetup &iSetup)
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
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)