/* * PndOnlineTrackHit.h * * Created on: Nov. 19, 2012 * Author: Sean Dobbs (s-dobbs@northwestern.edu) */ #ifndef PNDONLINETRACKHIT_H_ #define PNDONLINETRACKHIT_H_ #include "FairHit.h" #include "PndOnline.h" #include class PndOnlineTrack; // wrapper for hits from tracking systems class PndOnlineTrackHit : public TObject { public: enum { kUnassigned, kAssigned , kExpired} HitStatus; PndOnlineTrackHit() : baseHit(NULL), trackCand(NULL), goodness(PndOnline::kBad), status(kUnassigned), baseDetector(0) {} ; PndOnlineTrackHit(int the_detector, FairHit *the_hit) : baseHit(the_hit), trackCand(NULL), goodness(PndOnline::kBad), status(kUnassigned), baseDetector(the_detector) {} ; ~PndOnlineTrackHit() { std::cerr << "calling destructor of hit at time" << baseHit->GetTimeStamp() << std::endl; delete baseHit; } // accessors double X() const { return baseHit->GetX(); } double Y() const { return baseHit->GetY(); } double Z() const { return baseHit->GetZ(); } double Xerr() const { return baseHit->GetDx(); } double Yerr() const { return baseHit->GetDy(); } double Zerr() const { return baseHit->GetDz(); } FairHit *BaseHit() const { return baseHit; } PndOnlineTrack *TrackCand() const { return trackCand; } int BaseDetector() const { return baseDetector; } double Goodness() const { return goodness; } int Status() const { return status; } // settors void SetBaseHit(FairHit *newBaseHit) { baseHit = newBaseHit; } void SetTrackCand(PndOnlineTrack *newTrackCand) { trackCand = newTrackCand; } void SetBaseDetector(int the_detector) { baseDetector = the_detector; } void SetGoodness(double newGoodness) { goodness = newGoodness; } void SetStatus(int newStatus) { status = newStatus; } private: FairHit *baseHit; // see if we can save this? int baseDetector; // which detector the hit came from int status; // has the hit been matched or anything like that? // info on matched track PndOnlineTrack *trackCand; //! double goodness; ClassDef(PndOnlineTrackHit,0); }; /** // order hits by timestamp bool operator<(PndOnlineTrackHit &hit1, PndOnlineTrackHit &hit2) { return (hit1.BaseHit()->GetTimeStamp() < hit2.BaseHit()->GetTimeStamp()); } bool operator>(PndOnlineTrackHit &hit1, PndOnlineTrackHit &hit2) { return (hit1.BaseHit()->GetTimeStamp() > hit2.BaseHit()->GetTimeStamp()); } // do more overloaded operators **/ #endif