//-*-mode:c++-*- #ifndef __IOSTREAM_H #include #endif // $Id: BrDCClusterFinder.h,v 1.15 2002/06/10 16:41:24 ufstasze Exp $ // /////////////////////////////////////////////////////////////////////// // // // BrDCClusterFinder // // // // Author : Kris Hagel (hagel@comp.tamu.edu) // // Created : 19-May-2000 (Adapted from BrLocalTrackDC // // Version : 1.0 // // Changed : // // // /////////////////////////////////////////////////////////////////////// #ifndef BRAT_BrDCClusterFinder #define BRAT_BrDCClusterFinder //ROOT Includes #ifndef ROOT_TH1 #include "TH1.h" #endif #ifndef ROOT_TString #include "TString.h" #endif #ifndef BRAT_BrModule #include "BrModule.h" #endif #ifndef BRAT_BrDataTable #include "BrDataTable.h" #endif #ifndef BRAT_BrDetectorParamsDC #include "BrDetectorParamsDC.h" #endif #ifndef BRAT_BrDetectorVolume #include "BrDetectorVolume.h" #endif #ifndef BRAT_BrDriverDC #include "BrDriverDC.h" #endif #ifndef BRAT_BrClonesArray #include "BrClonesArray.h" #endif class BrDCClusterFinder : public BrModule { private: enum EBrTable { RawData=1, RedData, Digitized }; public: BrDCClusterFinder(); BrDCClusterFinder(Char_t *Name,Char_t *Title, Int_t combineMode, Float_t clusDx, Float_t clusDy, Float_t trioWin, Bool_t EventByEvent=kFALSE, Int_t bit=0, Int_t ClustMode=0, Int_t XYClustOpt=0, Float_t posRes=0.025, Int_t lowLimit=15, Int_t upLimit=200); // New Constructor virtual ~BrDCClusterFinder(); virtual void Init(); virtual void Begin(); virtual void DefineHistograms(); void FindClusters(BrDataTable *digitizedHits, BrClonesArray *detectorHits, Int_t &nDetectorHits, Int_t tof1TimeRef); void DCCluster(); void DCClusterOld() {}; void DCSingle(Int_t idet,Int_t ipl,Int_t iview); void DCPair (Int_t idet,Int_t ipl,Int_t iview); void DCTrio (Int_t idet,Int_t ipl,Int_t iview); virtual void SelectDCHits(const Int_t idet,const Int_t iplane, BrDataTable *selectedHits); BrDriverDC* GetDCDriver() {return fDCDriver;} BrDetectorParamsDC* GetDCParams() {return fParams;} BrClonesArray* GetDetectorHits() {return fDetectorHits;} void CleanDCHits() {}; void DCSingle() {}; void UseMySql() {fUseMySql = kTRUE; } void SetRunNo(Int_t runNo) {fRunNo = runNo;} void SetMode(Int_t imode){ // case imode=RawData assume raw data table, // case imode=RedData assume reduced data table, // case imode=Digitize assume digitize table (result of simulation). fTableMode = imode; } void SetClustMode(Int_t ClustMode){ // case ClustMode=0 : each hist can be used only one time // case ClustMode=1 : consider all possibilities (multiple used of hits) // This case is slower by has better track rec. power. fClustMode=ClustMode; } void SetXYClusterOption(Int_t XYClustOpt){ // case XYClustOpt=0 : Only treefold hit in X and Y planes (T3) are accepted. // case XYClustOpt=1 : Treefold hit in X and Y planes (T3) as well as double his // from X1-X2 (Y1-Y2) and X2-X3 (Y2-Y3) are accepted. // This case shoud improve reconstruction efficiency for T3 // detector when the detection efficiency in small. fXYClustOpt=XYClustOpt; } void SetMinWidth(Int_t MinWidth) {fMinWidth=MinWidth;} void SetMinTdc(Int_t MinTdc) {fMinTdc=MinTdc;} void SetMaxTdc(Int_t MaxTdc) {fMaxTdc=MaxTdc;} void SetPromptDelay(Int_t PromDel) {fPromptDelay=PromDel;} void SetDriftTime(Int_t DriftTime) {fDriftTime=DriftTime;} void SetOffsetFile(TString OffsetFile) {fOffsetFile=OffsetFile;} void SetCalibFile(TString CalibFile) {fCalibFile=CalibFile;} void SetGlobalTdcOffset(Int_t globalTdcOffset=0) {fGlobalTdcOffset=globalTdcOffset;} Int_t GetMode() {return fTableMode;} Int_t GetClustMode() {return fClustMode;} Int_t GetXYClusterOption() {return fXYClustOpt;} Int_t GetMinTdc() {return fMinTdc;} Int_t GetMaxTdc() {return fMaxTdc;} Int_t GetPromptDelay() {return fPromptDelay;} Bool_t GetEventStatus() {return fEventStatus;} private: Int_t fRunNo; Bool_t fUseMySql; BrDriverDC *fDCDriver; //Pawel Float_t fPosRes; Int_t fPromptDelay; Float_t fOffset[4]; Int_t fGlobalTdcOffset; Int_t fGlobalTdcOffsetSave; Int_t fTof1TimeRef; virtual BrDetectorVolume* GetDetectorVolume(const Char_t *name); virtual void SetDetectorVolume(BrDetectorVolume *vol); void DecodeDat(BrDataTable* DigitizedHits); void DecodeDig(BrDataTable* DigitizedHits); void DefineOffsets(); BrDataTable *fSelectedDCHits1, *fSelectedDCHits2, *fSelectedDCHits3; BrDetectorParamsDC *fParams; BrDetectorVolume *fVolumeParams_p[4]; Int_t fNumVol; //Need for sub volumes etc. Int_t fPlaneCombineMode; //Specifies how BrCombinedHits generated. Float_t fClusDx; //Cluster x matching parameter Float_t fClusDy; //Cluster y matching parameter BrClonesArray *fDetectorHits; //List of detector hits. TObjArray *fHitPositionList; //List of hit positions Int_t fTableMode; // To make choice between RawData and Digitezed Hits Int_t fClustMode; // To choose the way of hits combining. Int_t fXYClustOpt; Int_t fMinWidth; Int_t fMinTdc; Int_t fMaxTdc; Int_t fDriftTime; Int_t fDriftTimeSave; TString fOffsetFile; TString fCalibFile; Int_t fLowLimit; Int_t fUpLimit; Bool_t fEventStatus; Float_t fTrioChisqWin; //chisq window for cluster matching in DCTrio TH1F *fChisq; TH1F *fPairUDu[3]; TH1F *fPairVDu[3]; TH1F *fPairXDu[3]; TH1F *fPairYDu[3]; TH1F *fTrio12XDu[3]; TH1F *fTrio13XDu[3]; TH1F *fTrio23XDu[3]; TH1F *fTrio12YDu[3]; TH1F *fTrio13YDu[3]; TH1F *fTrio23YDu[3]; TH1F *fDeviaAll; TH1F *fDeviaAcce; TH1F *fhTotComb; TH1F *fDriftDist[3][10]; TH1F *fhDriftTime[3][10]; TH1F *fRawHitPos[3][10]; //Definitions for fClusterMode enum EclusterFinderModes { kPairsWhenTogether = 0, kAllSinglePlanes = 1 }; Double_t fTotalComb; Bool_t fEventByEvent; public: ClassDef(BrDCClusterFinder, 0) // Cluster finder for DCs }; #endif // $Log: BrDCClusterFinder.h,v $ // Revision 1.15 2002/06/10 16:41:24 ufstasze // Splitted decoding to DecodeDat for data and DecodeDig for digitize geant simul. // // Revision 1.14 2002/05/11 13:57:44 ufstasze // Added method SetRunNo and member fRunNo // // Revision 1.13 2002/05/10 12:29:25 ufstasze // Added member fUseMySql and method UseMySql() // // Revision 1.12 2002/05/07 17:32:20 ouerdane // added driftTime db parameter // // Revision 1.11 2002/04/30 08:35:14 ufstasze // Added new debugging histograms // // Revision 1.10 2002/03/08 16:27:33 ufstasze // Changes that have to do with introducing the readout of global Tdc offset form the data base // // Revision 1.9 2002/02/20 13:45:56 ufstasze // Added one more diagnostic histogram. // // Revision 1.8 2002/02/15 15:42:42 ufstasze // Added SetGlobalTdcOffset method. // // Revision 1.7 2001/08/30 13:30:06 staszel // Added fTof1TimeRef. // // Revision 1.6 2001/08/23 10:55:31 staszel // Changes that have to do with introduction of CheckSingleHits // option. // // Revision 1.5 2001/08/10 16:26:49 staszel // minor changes // // Revision 1.4 2001/08/07 13:48:37 ouerdane // Cleaned up a lot the DC tracking modules and utilities: // Made all utilities deriving from BrModule // Set the class version number to 0 (NOT 1 like before) // Removed + in the LinkDef file for all modules // Added ClassDef in the View Combiner class (didn't exist) // Structurized the histogramming section in TDirectories // // Revision 1.3 2001/08/03 13:28:02 staszel // low and up limits on number of hits added. // // Revision 1.2 2001/07/30 11:53:50 staszel // Changes that have to do with introduction of tracking on exp. data: 1) longer // constructor formal variable list, and some new diagnostics histograms. // // Revision 1.1.1.1 2001/06/21 14:55:11 hagel // Initial revision of brat2 // // Revision 1.11 2001/06/20 12:24:52 staszel // BrDetectorHit replaced by BrDCHit. // // Revision 1.10 2001/06/15 15:45:40 staszel // Changes having to do with development of dc tracking package // // Revision 1.9 2001/06/13 13:24:55 staszel // father development of dc tracking // // Revision 1.8 2001/01/19 17:57:39 staszel // Changes having to do with development of BrDCTrackingModule // // Revision 1.7 2000/11/23 01:32:38 brahmlib // Cleaned up code in general. BrDriverDC now usess ClassImp/ClassDef. // // Revision 1.6 2000/10/25 17:58:03 hagel // Further development of BrDCTrackingModule // // Revision 1.5 2000/10/25 14:44:56 staszel // small changes that refer to BrDriverDC // // Revision 1.4 2000/10/11 14:58:24 staszel // Changes related to BrDriverDC: 3 member variables of BrDriverDC type // has been added. // // Revision 1.3 2000/10/05 02:21:29 hagel // Further development of BrDCTrackingModule // // Revision 1.2 2000/09/29 02:15:57 hagel // Changes having to do with development of BrDCTrackingModule // // Revision 1.1 2000/09/19 21:11:51 hagel // Initial placeholder revision // //