//-*- mode:c++ -*- // // $Id: BrDcCalModule.h,v 1.11 2002/05/07 17:35:24 ouerdane Exp $ // $Author: ouerdane $ // $Date: 2002/05/07 17:35:24 $ // #ifndef BRAT_BrDcCalModule #define BRAT_BrDcCalModule #ifndef ROOT_TH1 #include "TH1.h" #endif #ifndef ROOT_TH2 #include "TH2.h" #endif #ifndef ROOT_TProfile #include "TProfile.h" #endif #ifndef ROOT_TString #include "TString.h" #endif #ifndef ROOT_TList #include "TList.h" #endif #ifndef BRAT_BrModule #include "BrModule.h" #endif #ifndef BRAT_BrEventNode #include "BrEventNode.h" #endif #ifndef BRAT_BrDriverDC #include "BrDriverDC.h" #endif #ifndef BRAT_BrDcCalibration #include "BrDcCalibration.h" #endif #ifndef BRAT_BrDCTrackingModule #include "BrDCTrackingModule.h" #endif class BrDcCalModule : public BrModule { public: enum EBrDcCalPar { fNoPar = 2 }; BrDcCalModule(); BrDcCalModule(Char_t *Name, Char_t *Title); virtual ~BrDcCalModule(); virtual void DefineHistograms(); virtual void Init(); virtual void Begin(); virtual void Event(BrEventNode*, BrEventNode*); virtual void Finish(); virtual void Print(Option_t* option="B") const; // *MENU* void CommitCal(Bool_t val = kFALSE) { fCommitCal = val; } void SetGlobalTdcOffset(Int_t val, const Char_t* comment = "Global TDC offset for DC calibration") { fGlobalTdcOffset = val; fCalComment[0] = comment; } void SetDriftTime(Int_t val, const Char_t* comment = "Drift Time at drift length = 1/2 cell length") { fDriftTime = val; fCalComment[1] = comment; } Bool_t ReadTdcMatrix(); private: void DecodeRawData(BrEventNode* inNode); void DecodeRedData(BrEventNode* inNode); void CheckAllWiresInPlane(Int_t,Int_t,Bool_t *); void InitDCDriver(); void FillTdcMatrix(); Int_t GetTdcFromBBRef(Double_t it); void FillTdcMatrixView(); void PrepareForOffsets(); void FindTdcOffsets(); void FindTdcOffsetsNew(); void FindTdcOffsets1(); void FindTdcOffsets1New(); void CorrectOffsets(); Int_t FindTdcOffsets(Int_t im,Int_t ip,Int_t iw); void ConstructTimeMatrix(Int_t opt); void Calibrate(); void TimeIntegral(Int_t im,Int_t ip,Int_t iw); void TimeIntegral(Int_t im,Int_t ip); void SaveTdcOffsets(); void SaveTdcMatrix(); void SaveCalibData(); void FillWithTdcMatrix(Int_t module,Int_t plane); Bool_t ReadPromptDelayMap(); void SavePromptDelayMap(); private: Bool_t fCommitCal; BrDcCalibration* fCalibration; Int_t fGlobalTdcOffset; Int_t fDriftTime; TString fCalComment[fNoPar]; Double_t fT0,fZ0,fRightTime,fLeftTime; Int_t fEvents; BrDCTrackingModule *fLocalTrack; BrDriverDC *fDCDriver; Int_t fCalibChan; Float_t fRefDriftDist; Bool_t fReadTdcMatrix; Bool_t fMapExist; TString fTdcMatrixFile; TString fOffsetFile; TString fCalibFile; TString fRunType; Int_t fCalibLevel; Int_t fOffsetOption; // arrays used for calibration Int_t fEveTab[2000][5]; // maximum allowed number of hits is 1000. Int_t fNumCleanHits; Int_t fDelayed[3][10][48]; Int_t fTdcMatrix[3][10][48][5200]; Int_t fForOffsets[3][10][2][5200]; Int_t fTimeMatrix[3][10][48][1000]; Int_t fOffset[3][10][48]; Bool_t fBadWire[3][10][48]; Int_t fIntegral[3][10][1000]; Int_t fMinTdc,fMaxTdc; Int_t fMinWidth; Int_t fPromptDelay; Int_t fMinAssoHits; Float_t fCalib[3][10][1000]; // define some histograms TH1F *fPlane[3][10]; TH1F *fTime[3][10]; TH1F *fTimeDist[3][10]; TH1F *fTimeDistD[3][10]; TH1F *fTimeDistP[3][10]; TH1F *fhOffset[3][10]; TH1F *fInteg[3][10]; TH1F *fBTime[48]; TH1F *fhAssoHits; TH1F *fhAssoHitsAcce; TH1F *fhHitsPerPlane; TH1F *fhAllTracks; TH2F *fTimeVsWidth[3][10]; // in the future it should go to BrDetectorParamsDC but so far we // keep it here: Int_t fNumPlanes; Int_t fWires[10]; Int_t fViewPlanes[4]; Char_t fPlaneView[4]; Char_t fView[10]; Int_t fViewNumber[10]; public: void SetTdcMatrixFile(Char_t* name) {fTdcMatrixFile = name;} void SetOffsetFile(Char_t* name) {fOffsetFile = name;} void SetCalibFile(Char_t* name) {fCalibFile = name;} 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 PromptDelay) {fPromptDelay=PromptDelay;} void SetMinAssoHitNum(Int_t minAssoHits) {fMinAssoHits=minAssoHits;} void SetCalibrationLevel(Int_t CalibLevel) { // If CalibLevel is 0 it means that user request a calibration // that base on the raw time spectum. The assumened input are raw data. // If CalibLeven is 1 is means that user request a calibration that base // on the track associated hits. fCalibLevel=CalibLevel; } void SetOffsetOption(Int_t OffsetOption) { // If CalibLevel is 0 it means that user request a calibration // that base on the raw time spectum. The assumened input are raw data. // If CalibLeven is 1 is means that user request a calibration that base // on the track associated hits. fOffsetOption=OffsetOption; } void SetRunType(Char_t* name) { fRunType = name; } private: ClassDef(BrDcCalModule,0) // Tof pedestal Module }; #endif //////////////////////////////////////////////////// // // $Log: BrDcCalModule.h,v $ // Revision 1.11 2002/05/07 17:35:24 ouerdane // added driftTime parameter to DB and classes // // Revision 1.10 2002/05/02 14:57:22 ufstasze // Added member fLocalTrack // // Revision 1.9 2002/03/07 17:49:19 ouerdane // added BrDcCalibration and connection to DB // // Revision 1.8 2002/02/06 18:55:08 ufstasze // Added SetRunType method and fRunType member // // Revision 1.7 2001/11/19 17:32:54 ufstasze // added FindTdcOffsetsNew // // Revision 1.6 2001/11/02 15:26:13 staszel // Added DecodeRawData and DecodeRedData methods. // // Revision 1.5 2001/09/07 14:26:14 staszel // Added new method FindTdcOffsets1New (rather temporary). // // Revision 1.3 2001/08/23 11:27:23 staszel // Some diagnostic histograms and CorrectOffsets() method. // // Revision 1.2 2001/07/30 11:39:09 staszel // T4 and T5 calibration has been introduced // // Revision 1.1.1.1 2001/06/21 14:55:05 hagel // Initial revision of brat2 // // Revision 1.1 2001/06/14 12:32:21 staszel // Initial release of DC calibration code //