#ifndef ALIEMCALCALIBABS_H
#define ALIEMCALCALIBABS_H
#include <TObject.h>
#include <TObjArray.h>
#include "AliEMCALGeoParams.h"
class TString;
class TTree;
class AliEMCALSuperModuleCalibAbs : public TObject {
public:
AliEMCALSuperModuleCalibAbs(const int smNum=0) : TObject(),
fSuperModuleNum(smNum),
fCalibMethod(0),
fCalibPass(0),
fAbsoluteCalib(0)
{
for (int icol=0; icol<AliEMCALGeoParams::fgkEMCALCols; icol++) {
for (int irow=0; irow<AliEMCALGeoParams::fgkEMCALRows; irow++) {
fRelativeCalib[icol][irow] = 1.0;
}
}
}
public:
void SetSuperModuleNum(Int_t i) { fSuperModuleNum = i;};
Int_t GetSuperModuleNum() const { return fSuperModuleNum;};
void SetCalibMethod(Int_t i) { fCalibMethod = i;};
Int_t GetCalibMethod() const { return fCalibMethod;};
void SetCalibPass(Int_t i) { fCalibPass = i;};
Int_t GetCalibPass() const { return fCalibPass;};
void SetAbsoluteCalib(Float_t f) { fAbsoluteCalib = f;};
Float_t GetAbsoluteCalib() const { return fAbsoluteCalib;};
void SetRelativeCalib(int icol, int irow, Float_t f) { fRelativeCalib[icol][irow] = f; };
Float_t GetRelativeCalib(int icol, int irow) const { return fRelativeCalib[icol][irow]; };
private:
Int_t fSuperModuleNum;
Int_t fCalibMethod;
Int_t fCalibPass;
Float_t fAbsoluteCalib;
Float_t fRelativeCalib[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows];
ClassDef(AliEMCALSuperModuleCalibAbs, 3)
};
class AliEMCALCalibAbs : public TObject {
public:
enum kProblemType {kNoLED=-999};
AliEMCALCalibAbs(const int nSM = AliEMCALGeoParams::fgkEMCALModules);
void ReadTextCalibAbsInfo(Int_t nSM, const TString &txtFileName, Bool_t swapSides=kFALSE);
void WriteTextCalibAbsInfo(const TString &txtFileName, Bool_t swapSides=kFALSE);
void ReadRootCalibAbsInfo(const TString &rootFileName, Bool_t swapSides=kFALSE);
void ReadTreeCalibAbsInfo(TTree *tree, Bool_t swapSides=kFALSE);
void WriteRootCalibAbsInfo(const TString &rootFileName, Bool_t swapSides=kFALSE);
virtual ~AliEMCALCalibAbs();
Int_t GetNSuperModule() const { return fNSuperModule; };
virtual AliEMCALSuperModuleCalibAbs * GetSuperModuleCalibAbsId(Int_t smIndex) const
{ return (AliEMCALSuperModuleCalibAbs*) fSuperModuleData[smIndex]; };
virtual AliEMCALSuperModuleCalibAbs * GetSuperModuleCalibAbsNum(Int_t smNum) const;
protected:
Int_t fNSuperModule;
TObjArray fSuperModuleData;
private:
AliEMCALCalibAbs(const AliEMCALCalibAbs &);
AliEMCALCalibAbs &operator = (const AliEMCALCalibAbs &);
ClassDef(AliEMCALCalibAbs, 4)
};
#endif