00001
00002
00003
00004
00005
00006
00007
00009
00010 #ifndef KALMANPLANESR_H
00011 #define KALMANPLANESR_H
00012
00013 #include "TMatrixD.h"
00014 #include "TObject.h"
00015 #include "TVectorD.h"
00016 #include "TVector.h"
00017
00018 #include "CandTrackSR/TrackClusterSR.h"
00019 #include "Conventions/PlaneView.h"
00020 #include "Navigation/XxxItr.h"
00021
00022 class AlgConfig;
00023 class VldContext;
00024
00025 class KalmanPlaneSR : public TObject
00026 {
00027
00028 public:
00029 KalmanPlaneSR();
00030 KalmanPlaneSR(TrackClusterSR *);
00031 KalmanPlaneSR(KalmanPlaneSR *);
00032 virtual ~KalmanPlaneSR();
00033
00034 void Init(KalmanPlaneSR *);
00035 void InitKalman();
00036
00037 Int_t GetPredictPlane(Int_t idir) const;
00038 void SetPredictPlane(Int_t plane, Int_t idir);
00039
00040 Double_t GetPreStateValue(Int_t stateIndex, Int_t idir) const;
00041 void SetPreStateValue(Int_t stateIndex, Int_t idir, Double_t stateValue);
00042
00043 Double_t GetFilStateValue(Int_t stateIndex, Int_t idir) const;
00044 void SetFilStateValue(Int_t stateIndex, Int_t idir, Double_t stateValue);
00045
00046 Double_t GetGainValue(Int_t gainIndex, Int_t idir) const;
00047 void SetGainValue(Int_t gainIndex, Int_t idir, Double_t gainValue);
00048
00049 Double_t GetPropagatorMatrixValue(Int_t idir, Int_t row, Int_t column) const;
00050 void SetPropagatorMatrixValue(Int_t idir, Int_t row, Int_t column, Double_t value);
00051
00052 Double_t GetPreCovarianceMatrixValue(Int_t idir, Int_t row, Int_t column) const;
00053 void SetPreCovarianceMatrixValue(Int_t idir, Int_t row, Int_t column, Double_t value);
00054
00055 Double_t GetFilCovarianceMatrixValue(Int_t idir, Int_t row, Int_t column) const;
00056 void SetFilCovarianceMatrix(Int_t idir, Double_t setMatrix[][5]);
00057 void SetFilCovarianceMatrixValue(Int_t idir, Int_t row, Int_t column, Double_t value);
00058
00059 Double_t GetNoiseMatrixValue(Int_t idir, Int_t row, Int_t column) const;
00060 void SetNoiseMatrixValue(Int_t idir, Int_t row, Int_t column, Double_t value);
00061
00062 Double_t GetPreChi2(Int_t idir) const;
00063 void SetPreChi2(Double_t chi2, Int_t idir);
00064
00065 Double_t GetFilChi2(Int_t idir) const;
00066 void SetFilChi2(Double_t chi2, Int_t idir);
00067
00068 Int_t GetZDir() const;
00069 void SetZDir(Int_t idir);
00070
00071 Double_t GetRange() const;
00072 void SetRange(Double_t range);
00073
00074 TrackClusterSR* GetTrackCluster() const;
00075 void SetTrackCluster(TrackClusterSR *cluster);
00076
00077 const VldContext *GetVldContext();
00078
00079 virtual Bool_t IsEquivalent(const TObject *rhs) const;
00080
00081 private:
00082
00083 TVectorD fPreState[2];
00084 TVectorD fFilState[2];
00085 TVectorD fGain[2];
00086
00087 TMatrixD fPropagator[2];
00088 TMatrixD fPreCovariance[2];
00089 TMatrixD fFilCovariance[2];
00090 TMatrixD fNoise[2];
00091
00092 Double_t fPreChi2[2];
00093 Double_t fFilChi2[2];
00094
00095 Int_t fPredictPlane[2];
00096
00097 Int_t fZDir;
00098
00099 Double_t fRange;
00100
00101 TrackClusterSR *fTrackCluster;
00102
00103
00104
00105 ClassDef(KalmanPlaneSR,4)
00106 };
00107
00108 XXXITRDEF(KalmanPlaneSR)
00109
00110 #endif