/* * PndOnlineTrack.h * * Created on: Nov. 19, 2012 * Author: Sean Dobbs (s-dobbs@northwestern.edu) */ #ifndef PNDONLINETRACK_H_ #define PNDONLINETRACK_H_ #include #include #include "PndOnlineTrackHit.h" using namespace std; class PndOnlineTrack : public TObject { public: enum { kVertexAsPoint, kVertexMomentumAsCircleHack , kVertexMomentumAsArrow} DrawModeSetting; PndOnlineTrack() : charge(0) {} ~PndOnlineTrack() {} const TVector3 &Momentum() const { return momentum; } const TVector3 &Vertex() const { return vertex; } double T0() const { return t0; } double T0Min() const { return t0min; } double T0Max() const { return t0max; } double C() const { return c; } double D0() const { return d0; } double Z0() const { return z0; } int Charge() const { return charge; } double Goodness() const { return goodness; } vector &Hits() { return hits; } // wrap this? const vector &Hits() const { return hits; } // wrap this? int Status() const { return status; } int DrawMode() const { return fDrawMode; } int MCEntryNumber() const { return fMCEntryNumber; } int MCTrackNumber() const { return fMCTrackNumber; } double MCEntryMajority() const { return fMCEntryMajority; } double MCTrackMajority() const { return fMCTrackMajority; } int HitCount() const { return fHitCount; } const TVector2& CircleOrigin() const { return fCircleOrigin; } double CircleRadius() const { return fCircleRadius; } int CircleClockwise() const { return fCircleClockwise; } double CirclePhi() const { return fCirclePhi; } void SetStatus(int newStatus) { status = newStatus; } void SetDrawMode(int newDrawMode) { fDrawMode = newDrawMode; } void SetMCEntryNumber(int newMCEntryNumber) { fMCEntryNumber = newMCEntryNumber; } void SetMCTrackNumber(int newMCTrackNumber) { fMCTrackNumber = newMCTrackNumber; } void SetMCEntryMajority(double newMCEntryMajority) { fMCEntryMajority = newMCEntryMajority; } void SetMCTrackMajority(double newMCTrackMajority) { fMCTrackMajority = newMCTrackMajority; } void SetHitCount(int newHitCount) { fHitCount = newHitCount; } void SetCircleOrigin(const TVector2& newCircleOrigin) { fCircleOrigin = newCircleOrigin; } void SetCircleRadius(double newCircleRadius) { fCircleRadius = newCircleRadius; } void SetCircleClockwise(int newCircleClockwise) { fCircleClockwise = newCircleClockwise; } void SetCirclePhi(double newCirclePhi) { fCirclePhi = newCirclePhi; } void SetGoodness(double newGoodness) { goodness = newGoodness; } void SetMomentum(const TVector3& newMomentum) { momentum = newMomentum; /* calc other representation */ } void SetVertex(const TVector3& newVertex) { vertex = newVertex; /* calc other representation */ } void SetT0(double new_t0) { t0 = new_t0; } void SetT0Min(double new_t0min) { t0min = new_t0min; } void SetT0Max(double new_t0max) { t0max = new_t0max; } //void SetMCEventTime(double new_mceventtime) { fMCEventTime = new_mceventtime;}; //double MCEventTime() {return fMCEventTime;}; // print out? private: // momentum + vertex point representation TVector3 momentum; TVector3 vertex; int charge; double t0; double t0min,t0max; // track path representation double c, d0, z0; /// or whatevs double goodness; // like a chi^2 or something? int status; int fDrawMode; //! int fMCEntryNumber; //! int fMCTrackNumber; //double fMCEventTime; double fMCEntryMajority; double fMCTrackMajority; int fHitCount; TVector2 fCircleOrigin; double fCircleRadius; int fCircleClockwise; double fCirclePhi; vector hits; //! hits should be saved elsewhere ClassDef(PndOnlineTrack,0); }; #endif