GeneralBrokenLines  V01-11-00
GblPoint.h
Go to the documentation of this file.
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_ */
 All Classes Files Functions Variables Typedefs