X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TOF%2FAliTOFcalib.h;h=d838c5aca7ad9a0b5f07e0c708cea3d031cf0227;hb=09cd3cd002cc0594e742971fab6f95c6a69dac0e;hp=09a02c590eacc61521004e00d7d41b9761a02a51;hpb=0e46b9aedf22cba61c60921b7b19fb76d89a7a2e;p=u%2Fmrichter%2FAliRoot.git diff --git a/TOF/AliTOFcalib.h b/TOF/AliTOFcalib.h index 09a02c590ea..d838c5aca7a 100644 --- a/TOF/AliTOFcalib.h +++ b/TOF/AliTOFcalib.h @@ -8,111 +8,207 @@ // class for TOF calibration:: simulation of uncalibrated data // ////////////////////////////////////////////////////////////////// +#define CHENTRIESSMALL 300 // number of entries per TOF channel per run + // (to be divided by 3 to get the + // real number of entries), smallarray +#define MAXCHENTRIESSMALL 10000 // max number of entries per TOF channel + // (to be divided by 3 to get the + // real number of entries), smallarray + +#define NIDXSMALL 3 // number of values stored + // after Comb PID per ESD track +#define DELTAIDXTOT 0 // index for ToT in bigarray +#define DELTAIDXTIME 1 // index for TOF time in big/smallarray +#define DELTAIDXPID 2 // index for Exp Time after Comb PID + // in smallarray +#define MEANENTRIES 15 // Mean number of entries per channel + // to perform calibration + #include "TTask.h" class TArrayF; class TF1; class TH1F; +class TH1C; class TObjArray; +class TTree; +class TChain; +class TMap; -class AliESD; +//class AliESD; class AliTOFCal; -class AliTOFGeometry; +class AliTOFRecoParam; +class AliTOFChannelOnlineStatusArray; +class AliTOFChannelOnlineArray; +class AliTOFDeltaBCOffset; +class AliTOFCTPLatency; +class AliTOFT0Fill; +class AliTOFRunParams; +class AliTOFResponseParams; +class AliESDEvent; +class AliLHCClockPhase; class AliTOFcalib:public TTask{ public: AliTOFcalib(); // ctor - AliTOFcalib(AliTOFGeometry *geom); AliTOFcalib(const AliTOFcalib & calib); // copy constructor AliTOFcalib& operator=(const AliTOFcalib & calib); // assignment operator virtual ~AliTOFcalib() ; // dtor - Int_t NSector()const {return fNSector;} - Int_t NPlate()const {return fNPlate;} - Int_t NStripA()const {return fNStripA;} - Int_t NStripB()const {return fNStripB;} - Int_t NStripC()const {return fNStripC;} - Int_t NpadZ()const {return fNpadZ;} - Int_t NpadX()const {return fNpadX;} - AliTOFCal * GetTOFCalArray() const {return fTOFCal;} - AliTOFCal * GetTOFCalSimArray() const {return fTOFSimCal;} + void CreateCalArrays(); + void CreateCalObjects(); + TObjArray * GetTOFCalArrayOnline() const {return fTOFCalOnline;} + AliTOFChannelOnlineArray * GetTOFOnlineDelay() const {return fCal;} + AliTOFChannelOnlineStatusArray * GetTOFOnlineStatus() const {return fStatus;} + TObjArray * GetTOFCalArrayOnlinePulser() const {return fTOFCalOnlinePulser;} + TObjArray * GetTOFCalArrayOnlineNoise() const {return fTOFCalOnlineNoise;} + TObjArray * GetTOFCalArrayOnlineHW() const {return fTOFCalOnlineHW;} + TObjArray * GetTOFCalArrayOffline() const {return fTOFCalOffline;} + TMap * GetConfigMap() const {return fConfigMap;} TH1F * GetTOFSimToT() const {return fTOFSimToT;} - void SelectESD(AliESD *event); - void CombESDId(); - void CalibrateESD(); - TH1F* Profile(Int_t i); + TTree * GetTOFCalibTree() const {return fTree;} + TChain * GetTOFCalibChain() const {return fChain;} + const char * GetOfflineValidity() const {return fkValidity;} + void SetOfflineValidity(const char* validity) {fkValidity = validity;} Int_t NChannels()const{return fNChannels;} - TF1* SetFitFunctions(TH1F* histo); - void CorrectESDTime();// useless method, kept to make Chiara happy - void CorrectESDTime(AliESD *event); + + void CreateDeltaBCOffset(); + void CreateCTPLatency(); + void CreateT0Fill(); + void CreateRunParams(); + AliTOFDeltaBCOffset *GetDeltaBCOffset() const {return fDeltaBCOffset;}; + AliTOFCTPLatency *GetCTPLatency() const {return fCTPLatency;}; + AliTOFT0Fill *GetT0Fill() const {return fT0Fill;}; + AliTOFRunParams *GetRunParams() const {return fRunParams;}; + AliTOFResponseParams *GetResponseParams() const {return fResponseParams;}; + // Methods to retrieve/write parameters from/on CDB - void WriteSimParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun); - void WriteSimParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun, AliTOFCal *cal, TH1F *histo); - void ReadSimParFromCDB(Char_t *sel, Int_t nrun); - void WriteParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun, AliTOFCal *cal); - void WriteParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun); - void ReadParFromCDB(Char_t *sel, Int_t nrun); - Int_t GetIndex(Int_t *detId); // Get channel index for Calibration - - public: - class AliTOFArray : public TObject { - public: - AliTOFArray(): TObject(),fSize(0),fArray(0x0){} - AliTOFArray(Int_t size) : - TObject(), - fSize(size), - fArray(new TArrayF*[size]) { - } - AliTOFArray(const AliTOFArray & source): - TObject(){ // copy constructor - this->fSize= source.fSize; - this->fArray= source.fArray; - }; - - AliTOFArray& operator=(const AliTOFArray & source) { // assignment operator - this->fSize= source.fSize; - this->fArray= source.fArray; - return *this; - } - - Int_t GetSize() const {return fSize;} - void AddArray(Int_t pos, TArrayF * parr) { - if (pos>-1 && pos < fSize)fArray[pos] = parr;} - TArrayF * GetArray(Int_t pos) const { - TArrayF * parr = 0x0; - if (pos>-1 && pos < fSize)parr = fArray[pos]; - return parr; - } - virtual ~AliTOFArray() { - delete [] fArray; - } - - private: - - Int_t fSize; // Size of the array of TArrayFs - TArrayF ** fArray; //[fSize]}; - - }; + // writing + + void WriteSimHistoOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun, TH1F *histo); + void WriteConfigMapOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteConfigMapOnCDB(const Char_t *sel); + // new calib objs + void WriteParOnlineDelayOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteParOnlineStatusOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteParOnlineDelayOnCDB(const Char_t *sel); + void WriteParOnlineStatusOnCDB(const Char_t *sel); + // old calib objs + void WriteParOnlineOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteParOnlinePulserOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteParOnlineNoiseOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteParOnlineHWOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteParOfflineOnCDB(const Char_t *sel, const Char_t *validity, Int_t minrun, Int_t maxrun); + void WriteParOnlineOnCDB(const Char_t *sel); + void WriteParOnlinePulserOnCDB(const Char_t *sel); // old, before unification of status info + void WriteParOnlineNoiseOnCDB(const Char_t *sel); // old, before unification of status info + void WriteParOnlineHWOnCDB(const Char_t *sel); // old, before unification of status info + void WriteParOfflineOnCDB(const Char_t *sel, const Char_t *validity); + + void WriteDeltaBCOffsetOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteCTPLatencyOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteT0FillOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteRunParamsOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteReadoutEfficiencyOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + void WriteProblematicOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun); + + // reading + Bool_t ReadSimHistoFromCDB(const Char_t *sel, Int_t nrun); + Bool_t ReadConfigMapFromCDB(const Char_t *sel, Int_t nrun); + // new objs + Bool_t ReadParOnlineDelayFromCDB(const Char_t *sel, Int_t nrun); + Bool_t ReadParOnlineStatusFromCDB(const Char_t *sel, Int_t nrun); + // old objs + Bool_t ReadParOnlineFromCDB(const Char_t *sel, Int_t nrun); + Bool_t ReadParOnlinePulserFromCDB(const Char_t *sel, Int_t nrun); // old, before unification of status info + Bool_t ReadParOnlineNoiseFromCDB(const Char_t *sel, Int_t nrun); // old, before unification of status info + Bool_t ReadParOnlineHWFromCDB(const Char_t *sel, Int_t nrun); // old, before unification of status info + Bool_t ReadParOfflineFromCDB(const Char_t *sel, Int_t nrun); + void WriteRecParOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun, AliTOFRecoParam *param); + void WriteRecParOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun, TObjArray *arr); + AliTOFRecoParam * ReadRecParFromCDB(const Char_t *sel, Int_t nrun, Int_t eventType=0); + void CreateTreeFromCDB(Int_t minrun, Int_t maxrun); + void CreateTreeFromFile(Int_t minrun, Int_t maxrun); + void CreateTreeFromGrid(Int_t minrun, Int_t maxrun); + void CreateChainFromGrid(Int_t minrun, Int_t maxrun); + Int_t Calibrate(Option_t *optionSave="", Option_t *optionFit="RQ"); + Int_t Calibrate(Int_t nch,Int_t *ich, Option_t *optionSave="", Option_t *optionFit="RQ"); + Int_t Calibrate(Int_t ichmin, Int_t ichmax, Option_t *optionSave="", Option_t *optionFit="RQ"); + Int_t Calibrate(Int_t ich, Option_t *optionSave="", Option_t *optionFit="RQ"); + Int_t CalibrateFromProfile(Int_t ich, Option_t *optionSave="", Option_t *optionFit="RQ"); + TH1F* Profile(Int_t i); + Int_t FindBins (TH1F* h, Double_t *bins) const; + void SetNruns(Int_t nruns) {fNruns=nruns;} + Int_t GetNruns() const {return fNruns;} + void SetFirstRun(Int_t firstRun) {fFirstRun=firstRun;} + Int_t GetFirstRun() const {return fFirstRun;} + void SetLastRun(Int_t lastRun) {fLastRun=lastRun;} + Int_t GetLastRun() const {return fLastRun;} + + Bool_t ReadDeltaBCOffsetFromCDB(const Char_t *sel, Int_t nrun); + Bool_t ReadCTPLatencyFromCDB(const Char_t *sel, Int_t nrun); + Bool_t ReadT0FillFromCDB(const Char_t *sel, Int_t nrun); + Bool_t ReadRunParamsFromCDB(const Char_t *sel, Int_t nrun); + Bool_t ReadLHCClockPhaseFromCDB(const Char_t *sel, Int_t nrun); + Bool_t ReadReadoutEfficiencyFromCDB(const Char_t *sel, Int_t nrun); + Bool_t ReadProblematicFromCDB(const Char_t *sel, Int_t nrun); + Bool_t Init(Int_t run = -1); // init + Double_t GetTimeCorrection(Int_t index, Double_t tot, Int_t deltaBC, Int_t l0l1, UInt_t timestamp); // get time correction + void CalibrateESD(AliESDEvent *event); // calibrate ESD + void CalibrateTExp(AliESDEvent *event) const; // calibrate TExp + void SetRemoveMeanT0(Bool_t value) {fRemoveMeanT0 = value;}; // setter + void SetUseLHCClockPhase(Bool_t value) {fUseLHCClockPhase = value;}; // setter + Bool_t GetUseLHCClockPhase() const {return fUseLHCClockPhase;}; // getter + void SetCalibrateTOFsignal(Bool_t value) {fCalibrateTOFsignal = value;}; // setter + void SetCorrectTExp(Bool_t value) {fCorrectTExp = value;}; // setter + Bool_t IsChannelEnabled(Int_t index, Bool_t checkEfficiency = kTRUE, Bool_t checkProblematic = kTRUE); // is channel enabled + Bool_t IsChannelEfficient(Int_t index); // is channel efficient + Bool_t IsChannelProblematic(Int_t index); // is channel problematic + Double_t TuneForMC(AliESDEvent *event, Double_t resolution); // tune for MC + + void SetRunParamsSpecificVersion(Int_t value) {fRunParamsSpecificVersion = value;}; // setter private: - static const Int_t fgkchannel; // max number of entries per channel Int_t fNChannels; // number of TOF channels - Int_t fNSector; // number of TOF sectors - Int_t fNPlate; // number of TOF plates - Int_t fNStripA; // number of TOF strips A - Int_t fNStripB; // number of TOF strips B - Int_t fNStripC; // number of TOF strips C - Int_t fNpadZ; // number of TOF pads Z - Int_t fNpadX; // number of TOF pads X - Int_t fNevents; // number of events - TObjArray * fESDsel; // selected ESD tracks for calibration - AliTOFArray *fArrayToT; // array for ToT values - AliTOFArray *fArrayTime; // array for Time values - AliTOFCal *fTOFCal; // array of AliTOFChannels storing calib parameters - AliTOFCal *fTOFSimCal; // array of AliTOFChannels storing calib parameters + + // old calibration objects + TObjArray *fTOFCalOnline; // array of AliTOFChannels storing calib parameters + TObjArray *fTOFCalOnlinePulser; // array of AliTOFChannels storing calib status from pulser // old, before unification of status info + TObjArray *fTOFCalOnlineNoise; // array of AliTOFChannels storing calib status from noise // old, before unification of status info + TObjArray *fTOFCalOnlineHW; // array of AliTOFChannels storing calib status from hardware // old, before unification of status info + TObjArray *fTOFCalOffline; // array of AliTOFChannels storing calib parameters + + // new calibration objects + AliTOFChannelOnlineArray *fCal; // object with delay array for TOF channels + AliTOFChannelOnlineStatusArray *fStatus; // object with status array for TOF channels + TH1F *fTOFSimToT; // histo with realistic ToT signal from TB Data - ClassDef(AliTOFcalib,1); + const char *fkValidity; // validity for offline calibration object + TTree *fTree; // tree for TOF calibration + TChain *fChain; // chain for TOF calibration + Int_t fNruns; // number of runs to be processed + Int_t fFirstRun; // first run for calibration obj validity + Int_t fLastRun; // last run for calib obj validity + TMap* fConfigMap; // map holding configuration obj + + AliTOFDeltaBCOffset *fDeltaBCOffset; // deltaBC offset + AliTOFCTPLatency *fCTPLatency; // CTP latency + AliTOFT0Fill *fT0Fill; // T0 fill + AliTOFRunParams *fRunParams; // run params + AliLHCClockPhase *fLHCClockPhase; // LHC clock-phase + AliTOFResponseParams *fResponseParams; // run params + TH1F *fReadoutEfficiency; // readout efficiency + TH1C *fProblematic; // problematic + + Bool_t fInitFlag; // init flag + Bool_t fRemoveMeanT0; // remove mean T0 + Bool_t fUseLHCClockPhase; // use LHC clock-phase + Bool_t fCalibrateTOFsignal; // calibrate TOF signal + Bool_t fCorrectTExp; // correct expected time + + Int_t fRunParamsSpecificVersion; // RunParams specific version + ClassDef(AliTOFcalib,11); }; #endif // AliTOFcalib_H