CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
GhostTrackPrediction.h
Go to the documentation of this file.
1 #ifndef RecoBTag_GhostTrackPrediction_h
2 #define RecoBTag_GhostTrackPrediction_h
3 
4 #include <cmath>
5 
6 #include <Math/SVector.h>
7 #include <Math/SMatrix.h>
8 
13 
14 class MagneticField;
19 
20 namespace reco {
21 
23  public:
24  // z0, tIP, dz/dr, phi
25 
26  typedef ROOT::Math::SVector<double, 4> Vector;
27  typedef ROOT::Math::SMatrix<double, 4, 4,
28  ROOT::Math::MatRepSym<double, 4> > Error;
29  typedef ROOT::Math::SMatrix<double, 6, 6,
30  ROOT::Math::MatRepSym<double, 6> > CartesianError;
31 
34  prediction_(prediction), covariance_(error)
35  {}
36 
37  GhostTrackPrediction(const GlobalPoint &priorPosition,
38  const GlobalError &priorError,
39  const GlobalVector &direction,
40  double coneRadius);
41  GhostTrackPrediction(const GlobalPoint &priorPosition,
42  const GlobalError &priorError,
43  const GlobalVector &direction,
44  const GlobalError &directionError)
45  { init(priorPosition, priorError, direction, directionError); }
46 
52 
53  double z() const { return prediction_[0]; }
54  double ip() const { return prediction_[1]; }
55  double cotTheta() const { return prediction_[2]; }
56  double phi() const { return prediction_[3]; }
57 
58  double rho2() const { return cotTheta() * cotTheta() + 1.; }
59  double rho() const { return std::sqrt(rho2()); }
60  double sz() const { return z() / rho(); }
61  double theta() const { return M_PI_2 - std::atan(cotTheta()); }
62  double eta() const { return -std::log(rho() - cotTheta()); }
63 
64  const Vector &prediction() const { return prediction_; }
65  const Error &covariance() const { return covariance_; }
66 
67  const GlobalPoint origin() const
68  { return GlobalPoint(-std::sin(phi()) * ip(), std::cos(phi()) * ip(), z()); }
69  const GlobalVector direction() const
70  { return GlobalVector(std::cos(phi()), std::sin(phi()), cotTheta()); }
71 
72  double lambda(const GlobalPoint &point) const
73  { return (point - origin()) * direction() / rho2(); }
74 
75  GlobalPoint position(double lambda = 0.) const
76  { return origin() + lambda * direction(); }
77  GlobalError positionError(double lambda = 0.) const;
78 
79  CartesianError cartesianError(double lambda = 0.) const;
80 
83  const MagneticField *fieldProvider) const;
85 
86  FreeTrajectoryState fts(const MagneticField *fieldProvider) const;
87 
88  Track track(double ndof = 0., double chi2 = 0.) const;
89 
90  private:
91  void init(const GlobalPoint &priorPosition,
92  const GlobalError &priorError,
93  const GlobalVector &direction,
94  const GlobalError &directionError);
95 
98 };
99 
100 }
101 #endif // RecoBTag_GhostTrackPrediction_h
const GlobalPoint origin() const
ROOT::Math::SMatrix< double, 4, 4, ROOT::Math::MatRepSym< double, 4 > > Error
double lambda(const GlobalPoint &point) const
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
#define M_PI_2
FreeTrajectoryState fts(const MagneticField *fieldProvider) const
GlobalTrajectoryParameters globalTrajectory(const MagneticField *fieldProvider) const
T sqrt(T t)
Definition: SSEVec.h:28
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
void init(const GlobalPoint &priorPosition, const GlobalError &priorError, const GlobalVector &direction, const GlobalError &directionError)
CurvilinearTrajectoryError curvilinearError() const
CartesianError cartesianError(double lambda=0.) const
GhostTrackPrediction(const Vector &prediction, const Error &error)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalVector
vector in glovbal coordinate system
Definition: Vector3D.h:28
Track track(double ndof=0., double chi2=0.) const
Log< T >::type log(const T &t)
Definition: Log.h:22
CurvilinearTrajectoryParameters curvilinearTrajectory() const
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalPoint
point in global coordinate system
Definition: Point3D.h:18
const Vector & prediction() const
const Error & covariance() const
GlobalPoint position(double lambda=0.) const
GhostTrackPrediction(const GlobalPoint &priorPosition, const GlobalError &priorError, const GlobalVector &direction, const GlobalError &directionError)
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > CartesianError
ROOT::Math::SVector< double, 4 > Vector
*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
Global3DVector GlobalVector
Definition: GlobalVector.h:10
GlobalError positionError(double lambda=0.) const
const GlobalVector direction() const