#ifndef HBASETRACK_H
#define HBASETRACK_H
#include "TObject.h"
#include "hsymmat.h"
class HBaseTrack:public TObject
{
protected:
Float_t z;
Float_t r;
Float_t theta;
Float_t phi;
Short_t tofHitInd;
Short_t tofClustInd;
Short_t showerHitInd;
Short_t rpcClustInd;
Float_t p;
Float_t beta;
Float_t mass2;
Float_t tof;
Char_t polarity;
Char_t sector;
HSymMat6 cov;
Float_t metaEloss;
Float_t tarDist;
Double_t tofdist;
Float_t qIOMatch;
public:
HBaseTrack();
HBaseTrack(HBaseTrack &);
virtual ~HBaseTrack(){;};
void setIOMatching (Float_t _qIOMatch) { qIOMatch = _qIOMatch;}
void setZ (Float_t Z,Float_t err) { z = Z; cov.setErr(0,err);}
void setR (Float_t R,Float_t err) { r = R; cov.setErr(1,err);}
void setP (Float_t P,Float_t err) { p = P; cov.setErr(2,err);}
void setTheta (Float_t THETA, Float_t err) { theta = THETA; cov.setErr(3,err);}
void setPhi (Float_t PHI,Float_t err) { phi = PHI; cov.setErr(4,err);}
void setTofHitInd (Short_t tof) { tofHitInd = tof;}
void setTofClustInd (Short_t tof) { tofClustInd = tof;}
void setShowerHitInd(Short_t shower) { showerHitInd = shower;}
void setEmcClustInd (Short_t emc) { showerHitInd = emc;}
void setRpcClustInd (Short_t rpc) { rpcClustInd = rpc;}
void setMass2 (Float_t MASS2,Float_t err) { mass2 = MASS2; cov.setErr(5,err);}
void setTof (Float_t TOF) { tof = TOF;}
void setPolarity (Char_t POLARYTY) { polarity = POLARYTY;}
void setSector (Char_t SECTOR) { sector = SECTOR;}
void setBeta (Float_t BETA) { beta = BETA;}
void setMetaEloss (Float_t e) { metaEloss = e;}
void setTarDist (Float_t _tarDist) { tarDist = _tarDist;}
void setTofDist (Double_t d) { tofdist = d; }
Float_t getIOMatch (void) const { return qIOMatch; }
Float_t getIOMatching (void) const { return qIOMatch; }
Float_t getZ (void) const { return z;}
Float_t getErrZ (void) { return cov.getErr(0);}
Float_t getR (void) const { return r;}
Float_t getErrR (void) { return cov.getErr(1);}
Float_t getTheta (void) const { return theta;}
Float_t getErrTheta (void) { return cov.getErr(3);}
Float_t getPhi (void) const { return phi;}
Float_t getErrPhi (void) { return cov.getErr(4);}
Bool_t isOverlap (void) const { return ((showerHitInd>-1 || rpcClustInd>-1) && (tofHitInd>-1 || tofClustInd>-1) ) ? kTRUE:kFALSE; }
Int_t getSystem (void) const { return ( tofHitInd>-1 || tofClustInd>-1 ) ? 1 : ((showerHitInd>-1 || rpcClustInd>-1) ? 0:-1); }
Short_t getShowerHitInd(void) const { return showerHitInd;}
Short_t getEmcClustInd (void) const { return showerHitInd;}
Short_t getTofHitInd (void) const { return tofHitInd;}
Short_t getTofClustInd (void) const { return tofClustInd;}
Short_t getRpcClustInd (void) const { return rpcClustInd;}
Float_t getP (void) const { return p;}
Float_t getErrP (void) { return cov.getErr(2);}
Float_t getMass2 (void) { return mass2;}
Float_t getErrMass2 (void) { return cov.getErr(5);}
Float_t getTof (void) const { return tof;}
Char_t getPolarity (void) const { return polarity;}
Char_t getSector (void) const { return sector;}
Float_t getBeta (void) const { return beta;}
Float_t getMetaEloss (void) const { return metaEloss;}
HSymMat &getCovariance (void) { return cov; }
Float_t getTarDist (void) const { return tarDist;}
Double_t getTofDist (void) { return tofdist; }
ClassDef(HBaseTrack,2)
};
#endif