//-*-mode:c++-*- // $Id: BrLocalTrack.h,v 1.1.1.1 2001/06/21 14:55:03 hagel Exp $ // $Author: hagel $ // $Date: 2001/06/21 14:55:03 $ // /////////////////////////////////////////////////////////////////////// // // // BrLocalTrack // // // // BRAHMS Track class // // // // Author : Kris Hagel (hagel@comp.tamu.edu) // // Created : 10/Mar/1998 // // Version : 1.0 // // Changed : // // // /////////////////////////////////////////////////////////////////////// #ifndef BRAT_BrLocalTrack #define BRAT_BrLocalTrack // Root Classes #ifndef ROOT_TObject #include "TObject.h" #endif // Brahms Classes #ifndef BRAT_BrDataTable #include "BrDataTable.h" #endif #ifndef BRAT_BrTrackHit #include "BrTrackHit.h" #endif #ifndef BRAT_BrVirtualTrack #include "BrVirtualTrack.h" #endif #ifndef BRAT_BrDetectorHit #include "BrDetectorHit.h" #endif #ifndef BRAT_BrVector3D #include "BrVector3D.h" #endif class BrLocalTrack: public TObject { public: BrLocalTrack(); BrLocalTrack(BrLocalTrack* loctra_p); virtual ~BrLocalTrack(); virtual void AddDetectorHit(const BrDetectorHit* hitp) {fDetectorHits.Add((TObject*)hitp);fNhit++;} virtual void AddTrackHit(BrTrackHit *trahit_p) {fTrahit.Add(trahit_p);} virtual void AddVec(const Float_t vec[3]) {for(Int_t i=0;i<3;i++) fVec[i] += vec[i];} virtual Float_t GetChisq() const {return fChisq;} virtual Float_t** GetCovarianceMatrix() const {return fCovar;} virtual BrDetectorHit *GetDetectorHitAt(Int_t i) const {return (BrDetectorHit*)fDetectorHits.At(i);} virtual BrVector3D GetDeviationFromFit(const BrDetectorHit *const detHit) const; virtual Int_t GetFlg() const {return fFlg;} virtual TObjArray* GetHitList(){return (TObjArray*)&fDetectorHits;} virtual Int_t GetID() const {return fID;} virtual Int_t GetNhit() const {return fNhit;} virtual const Float_t *GetPos() const {return fPos;} virtual const Float_t *GetPosError() const {return fPosError;} virtual Int_t GetStat() const {return fStatus;} virtual BrTrackHit2D *GetTr1() const {return fTr1;} virtual BrTrackHit2D *GetTr2() const {return fTr2;} virtual Int_t GetTrackEntries() const {return fTrahit.GetEntries();} virtual BrTrackHit *GetTrackHitAt(Int_t i) const {return (BrTrackHit*)fTrahit.At(i);} virtual const Float_t *GetVec() const {return fVec;} virtual const Float_t *GetVecError() const {return fVecError;} virtual BrVirtualTrack *GetVtrack() const {return fVtrack;} virtual Bool_t HasHitInRow(Int_t rowNo) const; virtual Bool_t HasAllHitsBetween(Int_t index,Float_t low, Float_t high) const; virtual void IncNhit() {fNhit++;} virtual Bool_t IsBad(){return fStatus == kBad;} virtual Bool_t IsOk() {return fStatus == kOk;} virtual void Fit(); virtual void MarkAsBad() {fStatus=kBad;} virtual Float_t RelativeOverlap(BrLocalTrack* t2, Float_t zl, Float_t r); virtual void RemoveDetectorHit(BrDetectorHit *detHit); virtual void RemoveTrackHit(BrTrackHit* trahit) {fTrahit.Remove(trahit); fTrahit.Compress();} virtual void SetChisq(Float_t x) {fChisq = x;} virtual void SetID(Int_t i) {fID = i;} virtual void SetFlg(Int_t i) {fFlg = i;} virtual void SetNhit(Int_t i) {fNhit = i;} virtual void SetPos(const Float_t pos[3]) {for(Int_t i=0;i<3;i++) fPos[i] = pos[i];} virtual void SetPosError(const Float_t error[3]) {for(Int_t i=0;i<3;i++) fPosError[i] = error[i];} virtual void SetStat(Int_t i) {fStatus = i;} virtual void SetTr1(BrTrackHit2D *tra2d) {fTr1 = tra2d;} virtual void SetTr2(BrTrackHit2D *tra2d) {fTr2 = tra2d;} virtual void SetVec(const Float_t vec[3]) {for(Int_t i=0;i<3;i++) fVec[i] = vec[i];} virtual void SetVecError(const Float_t error[3]) {for(Int_t i=0;i<3;i++) fVecError[i] = error[i];} virtual void SetVtrack(BrVirtualTrack* vtrack) {fVtrack = vtrack;} enum Status { kOk, kBad}; private: Int_t fID; // Id for this local track. Float_t *fPos; //[3] position for local track Float_t *fPosError; //[3] position for local track Float_t *fVec; //[3] direction of track Float_t *fVecError; //[3] direction of track Int_t fNhit; // #hits associated with the track Int_t fFlg; //! local variable used during track finding. Float_t **fCovar; //! covariance matrix for fit. Float_t fChisq; // Chisq of Track Fit TObjArray fDetectorHits; //container for DetectorHits map entries. BrVirtualTrack* fVtrack; //!pointer to track candidate group BrTrackHit2D *fTr1; //! BrTrackHit2D *fTr2; //! Int_t fStatus; // Status of track from list of enums. TObjArray fTrahit; //! container for TraHit map entries. Used locally (DC tracking) public: friend ostream& operator<< (ostream& os,BrLocalTrack* loctra); public: ClassDef(BrLocalTrack, 2) // Brahms Local track class } ; #endif // $Log: BrLocalTrack.h,v $ // Revision 1.1.1.1 2001/06/21 14:55:03 hagel // Initial revision of brat2 // // Revision 1.14 2001/02/09 18:13:32 pchristi // Added remove detector hit. // // Revision 1.13 2001/02/01 17:25:27 pchristi // Added calculations of errors to the local track module and changed some // of the member structure. // // Revision 1.12 2001/01/30 10:31:31 pchristi // Added const to methods in BrDetectorHit and some utility methods to // BrLocalTrack. // // Revision 1.11 2000/05/05 09:50:29 bjornhs // Added RelativeOverlap in BrLocalTrack // // Revision 1.10 2000/04/28 21:18:24 videbaek // Updates to BrLocalTrack. Added fit method; Status is changed. Uses // MarkAsBad, IsBad instead of fixed 999. // Cleanup of BrModuleMatchtrack. Added histohgrams. // // Revision 1.9 1999/04/28 15:31:48 hagel // Change destructor to clear fDetectorHits and fTraHit // // Revision 1.8 1999/03/07 22:37:38 videbaek // Added DetectorHit and BrLocalTrackingModule as a more general way to // deal with local tracks and hits. Initial insertion. Not fully debugged. // // Revision 1.7 1999/02/25 22:14:28 hagel // Add SetID // // Revision 1.6 1999/01/21 23:23:27 hagel // 1. Changed convention for checking includes. Current convention is: // BRAT_Br...... eg BRAT_BrModule ala ROOT. // 2. Added CVS logs to .h files that didnt have them. // 3. Moved checking of include definition to first line for easier reading // 4. Put checks before all includes in the include files as per BRAT specifications // 5. Added BrGeantHeader to Geant Makefile // 6. All changes have been checked to compile on NT ala Cygnus //