ROOT logo
#ifndef HKalTrackState_h
#define HKalTrackState_h

// from ROOT
#include "TMatrixD.h"
class     TVector3;
#include "TVectorD.h"

// from kalman
#include "hkaldef.h"
class     HKalPlane;

using namespace Kalman;


class HKalTrackState : public TObject {

private:

    kalFilterTypes type;    //! State is either for the prediction, filtering, smoothing or inverse filtering step in the Kalman filter.
    TMatrixD fPropagator;   //! Propagator matrix.
    TMatrixD fProjector;    //! Projector matrix.
    TMatrixD fCovariance;   //! Covariance matrix.
    TMatrixD fProcessNoise; //! Process noise matrix.
    TVectorD stateVec;      //! Vector with track state parameters.

public:

    HKalTrackState() {}

    HKalTrackState(Kalman::kalFilterTypes stateType, Int_t measDim, Int_t stateDim);

    HKalTrackState(Kalman::kalFilterTypes stateType, const TVectorD &sv, Int_t measDim);

    virtual ~HKalTrackState();

    virtual void   calcDir                   (TVector3 &dir) const;

    static  void   calcDir                   (TVector3 &dir, const TVectorD &sv);

    virtual void   calcMomVec                (TVector3 &dir) const;

    static  void   calcMomVec                (TVector3 &dir, const TVectorD &sv);

    virtual Bool_t calcPosAtPlane            (TVector3 &pos, const HKalPlane &plane) const;

    static  Bool_t calcPosAtPlane            (TVector3 &pos, const HKalPlane &plane, const TVectorD &sv);

    virtual Bool_t calcPosAndDirAtPlane      (TVector3 &pos, TVector3 &dir, const HKalPlane &plane) const;

    static  void   calcStateVec              (TVectorD &sv, Double_t qp, const TVector3 &pos, const TVector3 &dir);

    virtual void   clear();

    virtual void   print                     (const Option_t *opt="") const;

    virtual void   transform                 (const TRotation &transMat, const HKalPlane &plane);

    static  void   transformFromLayerToSector(TVectorD &svSec, const TVectorD &svLay, const HKalPlane &plane);

    static  void   transformFromSectorToLayer(TVectorD &svLay, const TVectorD &svSec, const HKalPlane &plane);

    virtual TMatrixD const&  getCovMat      () const                 { return fCovariance; }

    virtual TMatrixD const&  getPropMat     () const                 { return fPropagator; }

    virtual TMatrixD const&  getProjMat     () const                 { return fProjector; }

    virtual TMatrixD const&  getProcNoiseMat() const                 { return fProcessNoise; }

    virtual TVectorD const&  getStateVec    () const                 { return stateVec; }

    virtual Int_t            getStateType   () const                 { return type; }

    virtual Double_t         getStateParam  (Kalman::kalStateIdx par) const  { return stateVec(par); }

    virtual Int_t            getMeasDim     () const                 { return fProjector.GetNrows(); }

    virtual Int_t            getStateDim    () const                 { return stateVec.GetNrows(); }

    virtual void setCovMat      (const TMatrixD &fCov);

    virtual void setPropMat     (const TMatrixD &fProp);

    virtual void setProjMat     (const TMatrixD &fProj);

    virtual void setProcNoiseMat(const TMatrixD &fProc);

    virtual void setStateVec    (const TVectorD &sv);

    virtual void setStateVec    (Double_t qp, const TVector3 &pos, const TVector3 &dir) { calcStateVec(stateVec, qp, pos, dir); }

    ClassDef(HKalTrackState,0)
};


#endif // HKalTrackState_h
 hkaltrackstate.h:1
 hkaltrackstate.h:2
 hkaltrackstate.h:3
 hkaltrackstate.h:4
 hkaltrackstate.h:5
 hkaltrackstate.h:6
 hkaltrackstate.h:7
 hkaltrackstate.h:8
 hkaltrackstate.h:9
 hkaltrackstate.h:10
 hkaltrackstate.h:11
 hkaltrackstate.h:12
 hkaltrackstate.h:13
 hkaltrackstate.h:14
 hkaltrackstate.h:15
 hkaltrackstate.h:16
 hkaltrackstate.h:17
 hkaltrackstate.h:18
 hkaltrackstate.h:19
 hkaltrackstate.h:20
 hkaltrackstate.h:21
 hkaltrackstate.h:22
 hkaltrackstate.h:23
 hkaltrackstate.h:24
 hkaltrackstate.h:25
 hkaltrackstate.h:26
 hkaltrackstate.h:27
 hkaltrackstate.h:28
 hkaltrackstate.h:29
 hkaltrackstate.h:30
 hkaltrackstate.h:31
 hkaltrackstate.h:32
 hkaltrackstate.h:33
 hkaltrackstate.h:34
 hkaltrackstate.h:35
 hkaltrackstate.h:36
 hkaltrackstate.h:37
 hkaltrackstate.h:38
 hkaltrackstate.h:39
 hkaltrackstate.h:40
 hkaltrackstate.h:41
 hkaltrackstate.h:42
 hkaltrackstate.h:43
 hkaltrackstate.h:44
 hkaltrackstate.h:45
 hkaltrackstate.h:46
 hkaltrackstate.h:47
 hkaltrackstate.h:48
 hkaltrackstate.h:49
 hkaltrackstate.h:50
 hkaltrackstate.h:51
 hkaltrackstate.h:52
 hkaltrackstate.h:53
 hkaltrackstate.h:54
 hkaltrackstate.h:55
 hkaltrackstate.h:56
 hkaltrackstate.h:57
 hkaltrackstate.h:58
 hkaltrackstate.h:59
 hkaltrackstate.h:60
 hkaltrackstate.h:61
 hkaltrackstate.h:62
 hkaltrackstate.h:63
 hkaltrackstate.h:64
 hkaltrackstate.h:65
 hkaltrackstate.h:66
 hkaltrackstate.h:67
 hkaltrackstate.h:68
 hkaltrackstate.h:69
 hkaltrackstate.h:70
 hkaltrackstate.h:71
 hkaltrackstate.h:72
 hkaltrackstate.h:73
 hkaltrackstate.h:74
 hkaltrackstate.h:75
 hkaltrackstate.h:76
 hkaltrackstate.h:77
 hkaltrackstate.h:78
 hkaltrackstate.h:79
 hkaltrackstate.h:80
 hkaltrackstate.h:81
 hkaltrackstate.h:82
 hkaltrackstate.h:83
 hkaltrackstate.h:84
 hkaltrackstate.h:85
 hkaltrackstate.h:86
 hkaltrackstate.h:87
 hkaltrackstate.h:88
 hkaltrackstate.h:89
 hkaltrackstate.h:90
 hkaltrackstate.h:91
 hkaltrackstate.h:92
 hkaltrackstate.h:93
 hkaltrackstate.h:94
 hkaltrackstate.h:95
 hkaltrackstate.h:96
 hkaltrackstate.h:97