#ifndef __HKALDEF_H__
#define __HKALDEF_H__
namespace Kalman {
#define kNumKalStates 4 //! Number of different states for the Kalman filter: predicted, filtered, smoothed and inverse filtered state.
#define dafDebug      0 //! Debug level for DAF. 1 - additional consistency checks. 2 - print debug messages. Higher number -> more debug info.
#define kalDebug      0 //! Debug level for Kalman filter. 1 - additional consistency checks. 2 - print debug messages. Higher number -> more debug info.
#define metaDebug     0 //! Debug level for Meta matching.
#define rkDebug       0 //! Debug level for Runge-Kutta. 1 - additional consistency checks. 2 - print debug messages. Higher number -> more debug info.
    enum coordSys         {
        kSecCoord    = 0, 
        kLayCoord    = 1  
    };
    enum filtMethod       {
	kKalConv     = 0,
	kKalJoseph   = 1,
	kKalUD       = 2,
	kKalSeq      = 3,
	kKalSwer     = 4
    };
    enum kalHitTypes {
        kWireHit     = 0,  
        kSegHit      = 1   
    };
    enum kalFilterTypes   {
	kPredicted   = 0,
        kFiltered    = 1,
        kSmoothed    = 2,
        kInvFiltered = 3
    };
    enum kalStateIdx      {
	kIdxX0       = 0,
        kIdxY0       = 1,
        kIdxTanPhi   = 2, 
        kIdxTanTheta = 3,
	kIdxQP       = 4,
        kIdxZ0       = 5
    };
    enum kalRotateOptions {
	kNoRot       = 0,
        kVarRot      = 1  
    };
    enum matIdx           {
	kMatIdxA         = 0,
        kMatIdxZ         = 1,
        kMatIdxDensity   = 2,
        kMatIdxExEner    = 3,
        kMatIdxRadLength = 4
    };
} 
#endif //__HKALDEF_H__