Belle II Software  release-05-01-25
GblTrajectory.h
Go to the documentation of this file.
1 /*
2  * GblTrajectory.h
3  *
4  * Created on: Aug 18, 2011
5  * Author: kleinwrt
6  */
7 
30 #ifndef GBLTRAJECTORY_H_
31 #define GBLTRAJECTORY_H_
32 
33 #include "GblPoint.h"
34 #include "GblData.h"
35 #include "GblPoint.h"
36 #include "BorderedBandMatrix.h"
37 #include "MilleBinary.h"
38 #include "TMatrixDSymEigen.h"
39 
41 namespace gbl {
42 
44 
49 public:
50  GblTrajectory(const std::vector<GblPoint> &aPointList, bool flagCurv = true,
51  bool flagU1dir = true, bool flagU2dir = true);
52  GblTrajectory(const std::vector<GblPoint> &aPointList, unsigned int aLabel,
53  const TMatrixDSym &aSeed, bool flagCurv = true, bool flagU1dir =
54  true, bool flagU2dir = true);
56  const std::vector<std::pair<std::vector<GblPoint>, TMatrixD> > &aPointaAndTransList);
58  const std::vector<std::pair<std::vector<GblPoint>, TMatrixD> > &aPointaAndTransList,
59  const TMatrixD &extDerivatives, const TVectorD &extMeasurements,
60  const TVectorD &extPrecisions);
62  const std::vector<std::pair<std::vector<GblPoint>, TMatrixD> > &aPointaAndTransList,
63  const TMatrixD &extDerivatives, const TVectorD &extMeasurements,
64  const TMatrixDSym &extPrecisions);
65  virtual ~GblTrajectory();
66  bool isValid() const;
67  unsigned int getNumPoints() const;
68  unsigned int getResults(int aSignedLabel, TVectorD &localPar,
69  TMatrixDSym &localCov) const;
70  unsigned int getMeasResults(unsigned int aLabel, unsigned int &numRes,
71  TVectorD &aResiduals, TVectorD &aMeasErrors, TVectorD &aResErrors,
72  TVectorD &aDownWeights);
73  unsigned int getScatResults(unsigned int aLabel, unsigned int &numRes,
74  TVectorD &aResiduals, TVectorD &aMeasErrors, TVectorD &aResErrors,
75  TVectorD &aDownWeights);
76  unsigned int getLabels(std::vector<unsigned int> &aLabelList);
77  unsigned int getLabels(std::vector<std::vector<unsigned int> > &aLabelList);
78  unsigned int fit(double &Chi2, int &Ndf, double &lostWeight,
79  std::string optionList = "");
80  void milleOut(MilleBinary &aMille);
81  void printTrajectory(unsigned int level = 0);
82  void printPoints(unsigned int level = 0);
83  void printData();
84  std::vector<GblData> getData() {return theData;}
85 
86 private:
87  unsigned int numAllPoints;
88  std::vector<unsigned int> numPoints;
89  unsigned int numTrajectories;
90  unsigned int numOffsets;
91  unsigned int numInnerTrans;
92  unsigned int numCurvature;
93  unsigned int numParameters;
94  unsigned int numLocals;
95  unsigned int numMeasurements;
96  unsigned int externalPoint;
97  bool constructOK;
98  bool fitOK;
99  std::vector<unsigned int> theDimension;
100  std::vector<std::vector<GblPoint> > thePoints;
101  std::vector<GblData> theData;
102  std::vector<unsigned int> measDataIndex;
103  std::vector<unsigned int> scatDataIndex;
104  TMatrixDSym externalSeed;
105  std::vector<TMatrixD> innerTransformations;
106  // composed trajectory (from common external parameters)
107  TMatrixD externalDerivatives; // Derivatives for external measurements of composed trajectory
108  TVectorD externalMeasurements; // Residuals for external measurements of composed trajectory
109  TVectorD externalPrecisions; // Precisions for external measurements of composed trajectory
112 
113  std::pair<std::vector<unsigned int>, TMatrixD> getJacobian(
114  int aSignedLabel) const;
115  void getFitToLocalJacobian(std::vector<unsigned int> &anIndex,
116  SMatrix55 &aJacobian, const GblPoint &aPoint, unsigned int measDim,
117  unsigned int nJacobian = 1) const;
118  void getFitToKinkJacobian(std::vector<unsigned int> &anIndex,
119  SMatrix27 &aJacobian, const GblPoint &aPoint) const;
120  void construct();
121  void defineOffsets();
122  void calcJacobians();
123  void prepare();
125  void predict();
126  double downWeight(unsigned int aMethod);
127  void getResAndErr(unsigned int aData, double &aResidual,
128  double &aMeadsError, double &aResError, double &aDownWeight);
129 };
130 }
131 #endif /* GBLTRAJECTORY_H_ */
gbl::GblTrajectory::getMeasResults
unsigned int getMeasResults(unsigned int aLabel, unsigned int &numRes, TVectorD &aResiduals, TVectorD &aMeasErrors, TVectorD &aResErrors, TVectorD &aDownWeights)
Get residuals from fit at point for measurement.
Definition: GblTrajectory.cc:661
gbl::GblTrajectory::externalPoint
unsigned int externalPoint
Label of external point (or 0)
Definition: GblTrajectory.h:96
gbl::GblTrajectory::getJacobian
std::pair< std::vector< unsigned int >, TMatrixD > getJacobian(int aSignedLabel) const
Get jacobian for transformation from fit to track parameters at point.
Definition: GblTrajectory.cc:412
gbl::GblTrajectory::getResults
unsigned int getResults(int aSignedLabel, TVectorD &localPar, TMatrixDSym &localCov) const
Get fit results at point.
Definition: GblTrajectory.cc:631
gbl::GblTrajectory::milleOut
void milleOut(MilleBinary &aMille)
Write valid trajectory to Millepede-II binary file.
Definition: GblTrajectory.cc:1091
gbl::GblTrajectory::getFitToLocalJacobian
void getFitToLocalJacobian(std::vector< unsigned int > &anIndex, SMatrix55 &aJacobian, const GblPoint &aPoint, unsigned int measDim, unsigned int nJacobian=1) const
Get (part of) jacobian for transformation from (trajectory) fit to track parameters at point.
Definition: GblTrajectory.cc:488
gbl::GblTrajectory::getResAndErr
void getResAndErr(unsigned int aData, double &aResidual, double &aMeadsError, double &aResError, double &aDownWeight)
Get residual and errors from data block.
Definition: GblTrajectory.cc:756
gbl::GblTrajectory::printPoints
void printPoints(unsigned int level=0)
Print GblPoints on trajectory.
Definition: GblTrajectory.cc:1183
gbl::GblTrajectory::theMatrix
BorderedBandMatrix theMatrix
(Bordered band) matrix of linear equation system
Definition: GblTrajectory.h:111
gbl::GblTrajectory::numOffsets
unsigned int numOffsets
Number of (points with) offsets on trajectory.
Definition: GblTrajectory.h:90
GblData.h
gbl::GblTrajectory::printData
void printData()
Print GblData blocks for trajectory.
Definition: GblTrajectory.cc:1195
gbl::GblTrajectory::thePoints
std::vector< std::vector< GblPoint > > thePoints
(list of) List of points on trajectory
Definition: GblTrajectory.h:100
gbl::GblTrajectory::fitOK
bool fitOK
Trajectory has been successfully fitted (results are valid)
Definition: GblTrajectory.h:98
gbl::VVector
Simple Vector based on std::vector<double>
Definition: VMatrix.h:43
gbl::GblTrajectory::getScatResults
unsigned int getScatResults(unsigned int aLabel, unsigned int &numRes, TVectorD &aResiduals, TVectorD &aMeasErrors, TVectorD &aResErrors, TVectorD &aDownWeights)
Get (kink) residuals from fit at point for scatterer.
Definition: GblTrajectory.cc:690
gbl::GblTrajectory
GBL trajectory.
Definition: GblTrajectory.h:48
gbl
Namespace for the general broken lines package.
Definition: BorderedBandMatrix.h:44
gbl::GblTrajectory::downWeight
double downWeight(unsigned int aMethod)
Down-weight all points.
Definition: GblTrajectory.cc:1022
gbl::GblTrajectory::numPoints
std::vector< unsigned int > numPoints
Number of points on (sub)trajectory.
Definition: GblTrajectory.h:88
gbl::GblTrajectory::numLocals
unsigned int numLocals
Total number of (additional) local parameters.
Definition: GblTrajectory.h:94
gbl::BorderedBandMatrix
(Symmetric) Bordered Band Matrix.
Definition: BorderedBandMatrix.h:79
gbl::GblTrajectory::measDataIndex
std::vector< unsigned int > measDataIndex
mapping points to data blocks from measurements
Definition: GblTrajectory.h:102
gbl::GblTrajectory::printTrajectory
void printTrajectory(unsigned int level=0)
Print GblTrajectory.
Definition: GblTrajectory.cc:1117
MilleBinary.h
gbl::GblTrajectory::scatDataIndex
std::vector< unsigned int > scatDataIndex
mapping points to data blocks from scatterers
Definition: GblTrajectory.h:103
GblPoint.h
BorderedBandMatrix.h
gbl::GblTrajectory::numTrajectories
unsigned int numTrajectories
Number of trajectories (in composed trajectory)
Definition: GblTrajectory.h:89
gbl::GblTrajectory::construct
void construct()
Construct trajectory from list of points.
Definition: GblTrajectory.cc:302
gbl::GblTrajectory::externalSeed
TMatrixDSym externalSeed
Precision (inverse covariance matrix) of external seed.
Definition: GblTrajectory.h:104
gbl::GblTrajectory::numMeasurements
unsigned int numMeasurements
Total number of measurements.
Definition: GblTrajectory.h:95
gbl::GblTrajectory::getNumPoints
unsigned int getNumPoints() const
Retrieve number of point from trajectory.
Definition: GblTrajectory.cc:294
gbl::GblTrajectory::theDimension
std::vector< unsigned int > theDimension
List of active dimensions (0=u1, 1=u2) in fit.
Definition: GblTrajectory.h:99
gbl::GblTrajectory::numInnerTrans
unsigned int numInnerTrans
Number of inner transformations to external parameters.
Definition: GblTrajectory.h:91
gbl::GblTrajectory::predict
void predict()
Calculate predictions for all points.
Definition: GblTrajectory.cc:1011
gbl::GblTrajectory::prepare
void prepare()
Prepare fit for simple or composed trajectory.
Definition: GblTrajectory.cc:797
gbl::GblTrajectory::theVector
VVector theVector
Vector of linear equation system.
Definition: GblTrajectory.h:110
gbl::GblTrajectory::getLabels
unsigned int getLabels(std::vector< unsigned int > &aLabelList)
Get (list of) labels of points on (simple) valid trajectory.
Definition: GblTrajectory.cc:711
gbl::GblTrajectory::isValid
bool isValid() const
Retrieve validity of trajectory.
Definition: GblTrajectory.cc:289
gbl::GblTrajectory::numCurvature
unsigned int numCurvature
Number of curvature parameters (0 or 1) or external parameters.
Definition: GblTrajectory.h:92
gbl::GblTrajectory::buildLinearEquationSystem
void buildLinearEquationSystem()
Build linear equation system from data (blocks).
Definition: GblTrajectory.cc:776
gbl::GblTrajectory::innerTransformations
std::vector< TMatrixD > innerTransformations
Transformations at innermost points of.
Definition: GblTrajectory.h:105
gbl::GblTrajectory::theData
std::vector< GblData > theData
List of data blocks.
Definition: GblTrajectory.h:101
gbl::GblTrajectory::numParameters
unsigned int numParameters
Number of fit parameters.
Definition: GblTrajectory.h:93
gbl::GblTrajectory::GblTrajectory
GblTrajectory(const std::vector< GblPoint > &aPointList, bool flagCurv=true, bool flagU1dir=true, bool flagU2dir=true)
Create new (simple) trajectory from list of points.
Definition: GblTrajectory.cc:147
gbl::GblTrajectory::constructOK
bool constructOK
Trajectory has been successfully constructed (ready for fit/output)
Definition: GblTrajectory.h:97
gbl::MilleBinary
Millepede-II (binary) record.
Definition: MilleBinary.h:68
gbl::GblPoint
Point on trajectory.
Definition: GblPoint.h:68
gbl::GblTrajectory::calcJacobians
void calcJacobians()
Calculate Jacobians to previous/next scatterer from point to point ones.
Definition: GblTrajectory.cc:366
gbl::GblTrajectory::getFitToKinkJacobian
void getFitToKinkJacobian(std::vector< unsigned int > &anIndex, SMatrix27 &aJacobian, const GblPoint &aPoint) const
Get jacobian for transformation from (trajectory) fit to kink parameters at point.
Definition: GblTrajectory.cc:583
gbl::GblTrajectory::defineOffsets
void defineOffsets()
Define offsets from list of points.
Definition: GblTrajectory.cc:344
gbl::GblTrajectory::fit
unsigned int fit(double &Chi2, int &Ndf, double &lostWeight, std::string optionList="")
Perform fit of (valid) trajectory.
Definition: GblTrajectory.cc:1043
gbl::GblTrajectory::numAllPoints
unsigned int numAllPoints
Number of all points on trajectory.
Definition: GblTrajectory.h:87