CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
GlobalErrorBase.h
Go to the documentation of this file.
1 #ifndef GlobalErrorType_H
2 #define GlobalErrorType_H
3 
7 //
8 // Exceptions
9 //
11 
25 template <class T, class ErrorWeightType>
27 {
28 
29 public:
31  class NullMatrix{};
32 
37 
41  GlobalErrorBase(const NullMatrix &) {}
42 
43 
48  GlobalErrorBase(T c11, T c21, T c22, T c31, T c32, T c33) {
49  theCartesianError(0,0)=c11;
50  theCartesianError(1,0)=c21;
51  theCartesianError(1,1)=c22;
52  theCartesianError(2,0)=c31;
53  theCartesianError(2,1)=c32;
54  theCartesianError(2,2)=c33;
55  }
56 
61  theCartesianError(err) { }
62 
64 
65  T cxx() const {
66  return theCartesianError(0,0);
67  }
68 
69  T cyx() const {
70  return theCartesianError(1,0);
71  }
72 
73  T cyy() const {
74  return theCartesianError(1,1);
75  }
76 
77  T czx() const {
78  return theCartesianError(2,0);
79  }
80 
81  T czy() const {
82  return theCartesianError(2,1);
83  }
84 
85  T czz() const {
86  return theCartesianError(2,2);
87  }
88 
93  const AlgebraicSymMatrix33 & matrix() const {
94  return theCartesianError;
95  }
96  const AlgebraicSymMatrix33 & matrix_new() const {
97  return theCartesianError;
98  }
99 
100 
101  T rerr(const GlobalPoint& aPoint) const {
102  T r2 = aPoint.perp2();
103  T x2 = aPoint.x()*aPoint.x();
104  T y2 = aPoint.y()*aPoint.y();
105  T xy = aPoint.x()*aPoint.y();
106  if(r2 != 0)
107  return std::max<T>(0, (1./r2)*(x2*cxx() + 2.*xy*cyx() + y2*cyy()));
108  else
109  return 0.5*(cxx() + cyy());
110  }
111 
112  T phierr(const GlobalPoint& aPoint) const {
113  T r2 = aPoint.perp2();
114  T x2 = aPoint.x()*aPoint.x();
115  T y2 = aPoint.y()*aPoint.y();
116  T xy = aPoint.x()*aPoint.y();
117  if (r2 != 0)
118  return std::max<T>(0, (1./(r2*r2))*(y2*cxx() - 2.*xy*cyx() + x2*cyy()));
119  else
120  return 0;
121  }
122 
125  }
128  }
129 
130 private:
131 
133 
134 };
135 
136 #endif
137 
138 
AlgebraicSymMatrix33 theCartesianError
GlobalErrorBase operator-(const GlobalErrorBase &err) const
const AlgebraicSymMatrix33 & matrix() const
T y() const
Definition: PV3DBase.h:63
T perp2() const
Definition: PV3DBase.h:71
const AlgebraicSymMatrix33 & matrix_new() const
T phierr(const GlobalPoint &aPoint) const
GlobalErrorBase(const NullMatrix &)
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepSym< double, 3 > > AlgebraicSymMatrix33
Tag to request a null error matrix.
GlobalErrorBase operator+(const GlobalErrorBase &err) const
GlobalErrorBase(const AlgebraicSymMatrix33 &err)
GlobalErrorBase(T c11, T c21, T c22, T c31, T c32, T c33)
T rerr(const GlobalPoint &aPoint) const
long double T
T x() const
Definition: PV3DBase.h:62