// 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 TObjArray;
+class TTree;
+class TChain;
+class TMap;
-class AliESD;
+//class AliESD;
class AliTOFCal;
-class AliTOFGeometry;
class AliTOFRecoParam;
+class AliTOFChannelOnlineStatusArray;
+class AliTOFChannelOnlineArray;
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);
+
// 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);
- Bool_t ReadParFromCDB(Char_t *sel, Int_t nrun);
- Int_t GetIndex(Int_t *detId); // Get channel index for Calibration
- void WriteRecParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun, AliTOFRecoParam *param);
- AliTOFRecoParam * ReadRecParFromCDB(Char_t *sel, Int_t nrun);
-
- 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(),fSize(0),fArray(0x0){ // 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);
+
+ // 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);
+ AliTOFRecoParam * ReadRecParFromCDB(const Char_t *sel, Int_t nrun);
+ 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;}
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
+
+ ClassDef(AliTOFcalib,7);
};
#endif // AliTOFcalib_H