#ifndef VTRACKINGDATA_H_ #define VTRACKINGDATA_H_ #include class VMyTrack; class CbmTrack; class CbmStsTrack; class CbmPixelHit; class TClonesArray; //TODO: Hit (and Points?) array should be accesible in the VMyTrack class class VMyHit { public: VMyHit(): fX(0.), fY(0.), fZ(0.), fDetector(""), fDataLevel(""), fTrack(-1111) {} VMyHit(float x, float y, float z, QString detector, QString dataLevel): fX(x), fY(y), fZ(z), fDetector(detector), fDataLevel(dataLevel), fTrack(-1111) {} virtual ~VMyHit(){}; float GetX() const {return fX;} float GetY() const {return fY;} float GetZ() const {return fZ;} const QString& GetDetector() const {return fDetector;} const QString& GetDataLevel() const {return fDataLevel;} int GetTrack() const {return fTrack;} void SetTrack(int tr) {fTrack=tr;} void SetX(float x) {fX = x;} void SetY(float y) {fY = y;} void SetZ(float z) {fZ = z;} void SetDetector(const QString& detector) {fDetector = detector;} void SetDataLevel(const QString& dataLevel) {fDataLevel = dataLevel;} private: double fX, fY, fZ; // Coordinates QString fDetector; // STS, TRD, MUCH... QString fDataLevel; // Point, hit, gidi... int fTrack; // Track associated with hit if any }; class VMyTrack { public: VMyTrack() : fHits(),fInfo(""), fInfoShort(""), fStsTrack(NULL), fMuchTrack(NULL), fTrdTrack(NULL), fTofHit(NULL), fTrackNum(-1111), fStsId(-1111), fMuchId(-1111), fTrdId(-1111), fTofId(-1111) {}; VMyTrack(int tracknum, int stsid=-1111); virtual ~VMyTrack(){}; void AssosiateHits(std::vector &hitlist); const VMyHit& GetHit(unsigned int index) const {return fHits[index];} unsigned int GetNofHits() const {return fHits.size();} const QString& GetInfo() const {return fInfo;} const QString& GetInfoShort() const {return fInfoShort;} void AddHit(const VMyHit& hit) {fHits.push_back(hit);} void ClearHits() {fHits.clear();} void SetInfo(const QString& info) {fInfo = info;} void SetInfoShort(const QString& info) {fInfoShort=info;} //Insert numbers instead of variable names QString Parse(QString st) const; //Convert variable name into value QString Convert(QString var) const; //Call this before creation of track arrays static void GetArrays(); private: std::vector fHits; // Array of hits QString fInfo; // Track information QString fInfoShort; // Most important track information //TODO: Need to use appropiate tracks and hits CbmStsTrack* fStsTrack; CbmTrack* fMuchTrack; CbmTrack* fTrdTrack; CbmPixelHit* fTofHit; int fTrackNum; int fStsId; int fMuchId; int fTrdId; int fTofId; // pointers to data arrays static TClonesArray* fGlobalTracks; // CbmGlobalTrack static TClonesArray* fMvdHits; // CbmMvdHit static TClonesArray* fStsHits; // CbmStsHit static TClonesArray* fStsTracks; // CbmStsTrack static TClonesArray* fMuchPixelHits; // CbmMuchPixelHit static TClonesArray* fMuchTracks; // CbmMuchTrack static TClonesArray* fTrdHits; // CbmTrdHit static TClonesArray* fTrdTracks; // CbmTrdTrack static TClonesArray* fTofHits; // CbmTofHit }; #endif /* VTRACKINGDATA_H_ */