+// ******* internal class definition *************
+// values per single APD
+class AliEMCALCalibMapAPDVal : public TObject {
+
+ public:
+ AliEMCALCalibMapAPDVal() : TObject(), // just init values
+ fHardWareId(0),
+ fAPDNum(0),
+ fV30(0),
+ fBreakDown(0),
+ fDarkCurrent(0)
+ {
+ Init();
+ }
+
+ void Init() {
+ fHardWareId = 0;
+ fAPDNum = 0;
+ fV30 = 0;
+ fBreakDown = 0;
+ fDarkCurrent = 0;
+ for (int i=0; i<3; i++) {
+ fPar[i] = 0;
+ fParErr[i] = 0;
+ }
+ return;
+ }
+
+ public:
+ void SetHardWareId(Int_t i) { fHardWareId = i; }; //
+ Int_t GetHardWareId() const { return fHardWareId; }; //
+ void SetAPDNum(Int_t i) { fAPDNum = i; }; //
+ Int_t GetAPDNum() const { return fAPDNum; }; //
+ void SetV30(Float_t f) { fV30 = f; }; //
+ Float_t GetV30() const { return fV30; }; //
+ void SetPar(int ip, Float_t f) { fPar[ip] = f; }; //
+ Float_t GetPar(int ip) const { return fPar[ip]; }; //
+ void SetParErr(int ip, Float_t f) { fParErr[ip] = f; }; //
+ Float_t GetParErr(int ip) const { return fParErr[ip]; }; //
+ void SetBreakDown(Int_t i) { fBreakDown = i; }; //
+ Int_t GetBreakDown() const { return fBreakDown; }; //
+ void SetDarkCurrent(Float_t f) { fDarkCurrent = f; }; //
+ Float_t GetDarkCurrent() const { return fDarkCurrent; }; //
+
+ private:
+ Int_t fHardWareId; // HardWareIndex
+ // info from APD calibrations
+ Int_t fAPDNum; // assigned APD-PA number; Catania 10000-, Houston: 20000-
+ Float_t fV30; // Catania/Houston Voltage V30 (V) at T = 25 deg C
+ Float_t fPar[3]; // fit parameters, p0,p1,p2 - for ADC vs bias measurement
+ Float_t fParErr[3]; // error on fit parameters
+
+ Int_t fBreakDown; // Hamamatsu Breakdown Voltage (V)
+ Float_t fDarkCurrent; // Hamamatsu Dark Current (A)
+
+ ClassDef(AliEMCALCalibMapAPDVal, 2) // help class
+}; // AliEMCALCalibAPDVal
+
+// 1 SuperModule's worth of info: info on where the different APDs are
+class AliEMCALSuperModuleCalibMapAPD : public TObject {
+ public:
+ AliEMCALSuperModuleCalibMapAPD(const int smNum=0) : TObject(), // just init values
+ fSuperModuleNum(smNum)
+ {
+ for (int icol=0; icol<AliEMCALGeoParams::fgkEMCALCols; icol++) {
+ for (int irow=0; irow<AliEMCALGeoParams::fgkEMCALRows; irow++) {
+ fAPDVal[icol][irow].Init();
+ }
+ }
+ }
+
+ public:
+ void SetSuperModuleNum(Int_t i) { fSuperModuleNum = i;}; //
+ Int_t GetSuperModuleNum() const { return fSuperModuleNum;}; //
+ AliEMCALCalibMapAPDVal * GetAPDVal(int icol, int irow)
+ { return &fAPDVal[icol][irow]; };
+
+ private:
+ Int_t fSuperModuleNum; // SuperModule index
+ AliEMCALCalibMapAPDVal fAPDVal[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]; // APD calibration info
+
+ ClassDef(AliEMCALSuperModuleCalibMapAPD, 2) // help class
+};
+// ******* end of internal class definition *************
+