GENFIT  Rev:NoNumberAvailable
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
GblPoint.h
Go to the documentation of this file.
1 /*
2  * GblPoint.h
3  *
4  * Created on: Aug 18, 2011
5  * Author: kleinwrt
6  */
7 
8 #ifndef GBLPOINT_H_
9 #define GBLPOINT_H_
10 
11 #include <iostream>
12 #include <vector>
13 #include <math.h>
14 #include <stdexcept>
15 #include <TVectorD.h>
16 #include <TMatrixD.h>
17 #include <TMatrixDSym.h>
18 #include <TMatrixDSymEigen.h>
19 
20 #include <Math/SMatrix.h>
21 #include <Math/SVector.h>
22 
23 typedef ROOT::Math::SMatrix<double, 2> SMatrix22;
24 typedef ROOT::Math::SMatrix<double, 2, 3> SMatrix23;
25 typedef ROOT::Math::SMatrix<double, 2, 5> SMatrix25;
26 typedef ROOT::Math::SMatrix<double, 2, 7> SMatrix27;
27 typedef ROOT::Math::SMatrix<double, 3, 2> SMatrix32;
28 typedef ROOT::Math::SMatrix<double, 3> SMatrix33;
29 typedef ROOT::Math::SMatrix<double, 5> SMatrix55;
30 typedef ROOT::Math::SVector<double, 2> SVector2;
31 typedef ROOT::Math::SVector<double, 5> SVector5;
32 
33 
34 namespace gbl {
35 
37 
48 class GblPoint {
49 public:
50  GblPoint(const TMatrixD &aJacobian);
51  GblPoint(const SMatrix55 &aJacobian);
52  virtual ~GblPoint();
53  void addMeasurement(const TMatrixD &aProjection, const TVectorD &aResiduals,
54  const TVectorD &aPrecision, double minPrecision = 0.);
55  void addMeasurement(const TMatrixD &aProjection, const TVectorD &aResiduals,
56  const TMatrixDSym &aPrecision, double minPrecision = 0.);
57  void addMeasurement(const TVectorD &aResiduals, const TVectorD &aPrecision,
58  double minPrecision = 0.);
59  void addMeasurement(const TVectorD &aResiduals,
60  const TMatrixDSym &aPrecision, double minPrecision = 0.);
61  unsigned int hasMeasurement() const;
62  void getMeasurement(SMatrix55 &aProjection, SVector5 &aResiduals,
63  SVector5 &aPrecision) const;
64  void getMeasTransformation(TMatrixD &aTransformation) const;
65  void addScatterer(const TVectorD &aResiduals, const TVectorD &aPrecision);
66  void addScatterer(const TVectorD &aResiduals,
67  const TMatrixDSym &aPrecision);
68  bool hasScatterer() const;
69  void getScatterer(SMatrix22 &aTransformation, SVector2 &aResiduals,
70  SVector2 &aPrecision) const;
71  void getScatTransformation(TMatrixD &aTransformation) const;
72  void addLocals(const TMatrixD &aDerivatives);
73  unsigned int getNumLocals() const;
74  const TMatrixD& getLocalDerivatives() const;
75  void addGlobals(const std::vector<int> &aLabels,
76  const TMatrixD &aDerivatives);
77  unsigned int getNumGlobals() const;
78  std::vector<int> getGlobalLabels() const;
79  const TMatrixD& getGlobalDerivatives() const;
80  void setLabel(unsigned int aLabel);
81  unsigned int getLabel() const;
82  void setOffset(int anOffset);
83  int getOffset() const;
84  const SMatrix55& getP2pJacobian() const;
85  void addPrevJacobian(const SMatrix55 &aJac);
86  void addNextJacobian(const SMatrix55 &aJac);
87  void getDerivatives(int aDirection, SMatrix22 &matW, SMatrix22 &matWJ,
88  SVector2 &vecWd) const;
89  void printPoint(unsigned int level = 0) const;
90 
91 private:
92  unsigned int theLabel;
93  int theOffset;
97  unsigned int measDim;
101  bool transFlag;
103  bool scatFlag;
107  TMatrixD localDerivatives;
108  std::vector<int> globalLabels;
109  TMatrixD globalDerivatives;
110 };
111 }
112 #endif /* GBLPOINT_H_ */
void getDerivatives(int aDirection, SMatrix22 &matW, SMatrix22 &matWJ, SVector2 &vecWd) const
void addLocals(const TMatrixD &aDerivatives)
ROOT::Math::SMatrix< double, 5, 5 > SMatrix55
Definition: GblData.h:23
ROOT::Math::SMatrix< double, 2 > SMatrix22
Definition: GblPoint.h:23
void addNextJacobian(const SMatrix55 &aJac)
bool hasScatterer() const
SVector5 measResiduals
Measurement residuals.
Definition: GblPoint.h:99
ROOT::Math::SVector< double, 2 > SVector2
Definition: GblPoint.h:30
void getMeasurement(SMatrix55 &aProjection, SVector5 &aResiduals, SVector5 &aPrecision) const
Retrieve measurement of a point.
Definition: GblPoint.cc:160
SVector2 scatResiduals
Scattering residuals (initial kinks if iterating)
Definition: GblPoint.h:105
ROOT::Math::SMatrix< double, 2, 3 > SMatrix23
Definition: GblPoint.h:24
ROOT::Math::SMatrix< double, 2, 5 > SMatrix25
Definition: GblPoint.h:25
unsigned int theLabel
Label identifying point.
Definition: GblPoint.h:92
void addMeasurement(const TMatrixD &aProjection, const TVectorD &aResiduals, const TVectorD &aPrecision, double minPrecision=0.)
Add a measurement to a point.
Definition: GblPoint.cc:47
SMatrix55 nextJacobian
Jacobian to next scatterer (or last measurement)
Definition: GblPoint.h:96
const TMatrixD & getGlobalDerivatives() const
const TMatrixD & getLocalDerivatives() const
ROOT::Math::SVector< double, 5 > SVector5
Definition: GblPoint.h:31
bool transFlag
Transformation exists?
Definition: GblPoint.h:101
SMatrix55 p2pJacobian
Point-to-point jacobian from previous point.
Definition: GblPoint.h:94
void addGlobals(const std::vector< int > &aLabels, const TMatrixD &aDerivatives)
virtual ~GblPoint()
Definition: GblPoint.cc:35
TMatrixD globalDerivatives
Derivatives of measurement vs additional global (MP-II) parameters.
Definition: GblPoint.h:109
unsigned int hasMeasurement() const
Check for measurement at a point.
Definition: GblPoint.cc:150
SMatrix55 measProjection
Projection from measurement to local system.
Definition: GblPoint.h:98
Point on trajectory.
Definition: GblPoint.h:48
int theOffset
Offset number at point if not negative (else interpolation needed)
Definition: GblPoint.h:93
std::vector< int > globalLabels
Labels of global (MP-II) derivatives.
Definition: GblPoint.h:108
ROOT::Math::SMatrix< double, 5 > SMatrix55
Definition: GblPoint.h:29
TMatrixD localDerivatives
Derivatives of measurement vs additional local (fit) parameters.
Definition: GblPoint.h:107
ROOT::Math::SMatrix< double, 3, 2 > SMatrix32
Definition: GblPoint.h:27
void setLabel(unsigned int aLabel)
int getOffset() const
SMatrix22 scatTransformation
Transformation of diagonalization (of scat. precision matrix)
Definition: GblPoint.h:104
Namespace for the general broken lines package.
SMatrix55 prevJacobian
Jacobian to previous scatterer (or first measurement)
Definition: GblPoint.h:95
void addPrevJacobian(const SMatrix55 &aJac)
ROOT::Math::SMatrix< double, 2, 7 > SMatrix27
Definition: GblPoint.h:26
unsigned int getNumGlobals() const
GblPoint(const TMatrixD &aJacobian)
Create a point.
Definition: GblPoint.cc:18
void getScatTransformation(TMatrixD &aTransformation) const
std::vector< int > getGlobalLabels() const
TMatrixD measTransformation
Transformation of diagonalization (of meas. precision matrix)
Definition: GblPoint.h:102
void addScatterer(const TVectorD &aResiduals, const TVectorD &aPrecision)
Add a (thin) scatterer to a point.
Definition: GblPoint.cc:188
ROOT::Math::SMatrix< double, 3 > SMatrix33
Definition: GblPoint.h:28
bool scatFlag
Scatterer present?
Definition: GblPoint.h:103
SVector5 measPrecision
Measurement precision (diagonal of inverse covariance matrix)
Definition: GblPoint.h:100
unsigned int measDim
Dimension of measurement (1-5), 0 indicates absence of measurement.
Definition: GblPoint.h:97
SVector2 scatPrecision
Scattering precision (diagonal of inverse covariance matrix)
Definition: GblPoint.h:106
void getMeasTransformation(TMatrixD &aTransformation) const
Get measurement transformation (from diagonalization).
Definition: GblPoint.cc:171
unsigned int getLabel() const
void setOffset(int anOffset)
void printPoint(unsigned int level=0) const
unsigned int getNumLocals() const
void getScatterer(SMatrix22 &aTransformation, SVector2 &aResiduals, SVector2 &aPrecision) const
const SMatrix55 & getP2pJacobian() const