#ifndef _BRLOCALTRACKTPC_H #define _BRLOCALTRACKTPC_H /////////////////////////////////////////////////////////////////////// // // // BrLocalTrackTPC // // // // BRAHMS TPC Local Tracking Class // // // // Author : Kris Hagel (hagel@comp.tamu.edu) // // Created : 9/MAR/98 // // Version : 1.0 // // Changed : // // // /////////////////////////////////////////////////////////////////////// //ROOT Classes #ifndef ROOT_TH1 #include "TH1.h" #endif #ifndef ROOT_TH2 #include "TH2.h" #endif //Brat Classes #ifndef _BRLOCALTRACKMODULE_H #include "BrLocalTrackModule.h" #endif #ifndef _BRDIGTPC_H #include "BrDigTPC.h" #endif //class BrEventNode; class BrDetectorParamsTPC; class BrDetectorVolume; class BrLocalTrackTPC : public BrLocalTrackModule { public: BrLocalTrackTPC(); BrLocalTrackTPC(Char_t *Name,Char_t *Title); virtual ~BrLocalTrackTPC(); void Event(BrEventNode* InputTable,BrEventNode* OutputTable); BrDetectorParamsTPC* GetDetectorParamsTPC(){ return fParams_p;} BrDetectorVolume* GetDetectorVolume() const { return fVolume_p;} void SetDetectorVolume(BrDetectorVolume* vol){ fVolume_p = vol;} void SetDetectorParamsTPC(BrDetectorParamsTPC* par); void SetDetectorParamsTPC(const BrDetectorParamsTPC& par); void ListDetectorParameters(); private: void TPCPadCluster(BrEventNode* InputTable); Int_t TPCPadTrack(Int_t idet,Int_t maxmiss,Float_t dx,Float_t dy); void GetDigTPCMod(Int_t irow,Int_t padno,Int_t time,BrDataTable *DigitizedTPC,BrDataTable *DigTPCMod); void GetClusTPCMod(Int_t irow,Int_t stat,BrDataTable *TPCCluster,BrDataTable *ClusTPCMod); void InitCluster(); Int_t GetFreeCluster(); void ScanMultiHitClusters(BrDataTable* DigitizedTPC,BrDataTable* TPCCluster); void TPCClusterToHitCMB(BrDataTable* TPCCluster); Int_t GetMaxPixel(BrTPCCluster* cluster_ID,Int_t *ixm,Int_t *iym); void FitLocalTPCTrack(BrLocalTrack* loctraa,Float_t *sol,Float_t *covar,Float_t *chisq,Int_t *ifail); Int_t TPCPadRecon(BrDataTable *HitCMBMod,Int_t istart,Int_t ilast,Int_t idir,Int_t maxmiss,Float_t dx,Float_t dy); BrDetectorParamsTPC *fParams_p; BrDetectorVolume *fVolume_p; // Histograms to monitor TPC tracking TH1F *h_TPCpsig; TH1F *h_TPCtsig; TH2F *h_TPCpsig_tsig; void FillHitCMBSelectorr(BrLocalTrack* loctra,BrDataTable* HitCMBSel); void TPCPadFindHit(BrDataTable *HitCMBMod,Int_t irow,Float_t *proj,Float_t dx,Float_t dy,Int_t *ncand,Int_t maxcandd,Int_t *iclist); void CopyTrahit(BrLocalTrack* OldTr,BrLocalTrack* NewTr,Int_t Imod); struct { int head; int tail; } cluster[max_cluster]; //record for sub-clusters struct { int adcval; BrTPCCluster* ID; int subID; BrDigTPC* digtpc; } pixels[maxpad][maxtime]; public: ClassDef(BrLocalTrackTPC,0) // BRAHMS Local Tracking Interface }; #endif