![]() |
GeneralBrokenLines
V01-11-00
|
00001 /* 00002 * GblPoint.h 00003 * 00004 * Created on: Aug 18, 2011 00005 * Author: kleinwrt 00006 */ 00007 00008 #ifndef GBLPOINT_H_ 00009 #define GBLPOINT_H_ 00010 00011 #include<iostream> 00012 #include<vector> 00013 #include<math.h> 00014 #include "TVectorD.h" 00015 #include "TMatrixD.h" 00016 #include "TMatrixDSym.h" 00017 #include "TMatrixDSymEigen.h" 00018 00019 #include "Math/SMatrix.h" 00020 #include "Math/SVector.h" 00021 typedef ROOT::Math::SMatrix<double, 2> SMatrix22; 00022 typedef ROOT::Math::SMatrix<double, 2, 3> SMatrix23; 00023 typedef ROOT::Math::SMatrix<double, 2, 5> SMatrix25; 00024 typedef ROOT::Math::SMatrix<double, 2, 7> SMatrix27; 00025 typedef ROOT::Math::SMatrix<double, 3, 2> SMatrix32; 00026 typedef ROOT::Math::SMatrix<double, 3> SMatrix33; 00027 typedef ROOT::Math::SMatrix<double, 5> SMatrix55; 00028 typedef ROOT::Math::SVector<double, 2> SVector2; 00029 typedef ROOT::Math::SVector<double, 5> SVector5; 00030 00032 00043 class GblPoint { 00044 public: 00045 GblPoint(const TMatrixD &aJacobian); 00046 virtual ~GblPoint(); 00047 void addMeasurement(const TMatrixD &aProjection, const TVectorD &aResiduals, 00048 const TVectorD &aPrecision); 00049 void addMeasurement(const TVectorD &aResiduals, 00050 const TMatrixDSym &aPrecision); 00051 unsigned int hasMeasurement() const; 00052 void getMeasurement(SMatrix55 &aProjection, SVector5 &aResiduals, 00053 SVector5 &aPrecision) const; 00054 void addScatterer(const TVectorD &aResiduals, const TVectorD &aPrecision); 00055 bool hasScatterer() const; 00056 void getScatterer(SVector2 &aResiduals, SVector2 &aPrecision) const; 00057 void addLocals(const TMatrixD &aDerivatives); 00058 unsigned int getNumLocals() const; 00059 TMatrixD getLocalDerivatives() const; 00060 void addGlobals(const std::vector<int> &aLabels, 00061 const TMatrixD &aDerivatives); 00062 unsigned int getNumGlobals() const; 00063 std::vector<int> getGlobalLabels() const; 00064 TMatrixD getGlobalDerivatives() const; 00065 void setLabel(unsigned int aLabel); 00066 unsigned int getLabel() const; 00067 void setOffset(int anOffset); 00068 int getOffset() const; 00069 SMatrix55 getP2pJacobian() const; 00070 void addPrevJacobian(const SMatrix55 aJac); 00071 void addNextJacobian(const SMatrix55 aJac); 00072 void getDerivatives(int aDirection, SMatrix22 &matW, SMatrix22 &matWJ, 00073 SVector2 &vecWd) const; 00074 00075 private: 00076 unsigned int theLabel; 00077 int theOffset; 00078 SMatrix55 p2pJacobian; 00079 SMatrix55 prevJacobian; 00080 SMatrix55 nextJacobian; 00081 unsigned int measDim; 00082 SMatrix55 measProjection; 00083 SVector5 measResiduals; 00084 SVector5 measPrecision; 00085 bool transFlag; 00086 TMatrixD measTransformation; 00087 bool scatFlag; 00088 SVector2 scatResiduals; 00089 SVector2 scatPrecision; 00090 TMatrixD localDerivatives; 00091 std::vector<int> globalLabels; 00092 TMatrixD globalDerivatives; 00093 }; 00094 00095 #endif /* GBLPOINT_H_ */
1.7.6.1