#ifndef HBASETRACK_H #define HBASETRACK_H #include "TObject.h" #include "hsymmat.h" class HBaseTrack:public TObject { protected: Float_t z; // From HMdcSeg (in Lab.?) Float_t r; // From HMdcSeg Float_t theta; // From HMdcSeg Float_t phi; // From HMdcSeg Short_t tofHitInd; // Index of HTofHit or HTofCluster Short_t showerHitInd; // Index of HShowerHitTof Float_t p; // Momentum of particle Float_t beta; // speed of paricle Float_t mass2; // mass squared Float_t tof; // time of flight Char_t polarity; // polarity (+1 or -1) Char_t sector; // Sector number HSymMat6 cov; // covariance matrix of size 6 Float_t metaEloss; // corrected energy loss in TOF or TOFINO Float_t tarDist; Double_t tofdist; // Track length from Target-to-META detector Float_t qIOMatch; //Matching quality if inner and outer segments 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 setShowerHitInd(Short_t shower) {showerHitInd=shower;} void setMetaHitInd(Short_t shower, Short_t tof){ showerHitInd=shower; tofHitInd=tof;} 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 setTofFlag( Short_t FLAG) {tofHitInd=(tofHitInd+1)%10000-1+10000*FLAG;} 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 && getTofHitInd()>-1) ? kTRUE:kFALSE; } Short_t getMetaHitInd(void) const { return (getSystem()==1) ? tofHitInd:showerHitInd;} //??? Int_t getSystem(void) const { return (getTofHitInd()>-1) ? 1 : ((showerHitInd>-1) ? 0:-1); } //??? Short_t getShowerHitInd(void) const {return showerHitInd;} Short_t getTofHitInd(void) const {return (((tofHitInd+1)%10000)-1);} 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;} Short_t getTofFlag(void) const {return ((tofHitInd+1)/10000);} HSymMat &getCovariance(void) { return cov; } Float_t getTarDist(void) const {return tarDist;} Double_t getTofDist(void) { return tofdist; } ClassDef(HBaseTrack,1) }; #endif