ROOT logo
#ifndef ALIEMCALCALIBTEMPCOEFF_H
#define ALIEMCALCALIBTEMPCOEFF_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id: $ */

#include <TObject.h>
#include <TObjArray.h>
#include "AliEMCALGeoParams.h"
class TString;
class TTree;

/*
  Objects of this class contain temperature-dependence coefficients
*/

// total calibration factor is a product of
// a) overall calibration factor [fAbsoluteCalib]
// b) individual gain factor per tower [fRelativeCalib]
// c) time-dependent correction
// In this class we store factors needed for c)

// ******* internal class definition *************

// 1 SuperModule's worth of info: info on where the different APDs are
class AliEMCALSuperModuleCalibTempCoeff : public TObject {

 public:
  AliEMCALSuperModuleCalibTempCoeff(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++) {
	  fTC[icol][irow] = 1.0;
	  fSrc[icol][irow] = 0;
	}
      }
    }

 public:

  void SetSuperModuleNum(Int_t i) { fSuperModuleNum = i;}; // 
  Int_t GetSuperModuleNum() const { return fSuperModuleNum;}; // 
  void SetTC(int icol, int irow, Float_t f) { fTC[icol][irow] = f; }; //
  Float_t GetTC(int icol, int irow) const { return fTC[icol][irow]; }; //
  void SetSrc(int icol, int irow, Int_t i) { fSrc[icol][irow] = i; }; //
  Int_t GetSrc(int icol, int irow) const { return fSrc[icol][irow]; }; //

 private:
  Int_t fSuperModuleNum; // which SuperModule is this?
  // individual info for each tower
  Float_t fTC[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]; // Temperature Coefficient values (nominally around 2% change per deg C)
  Int_t fSrc[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]; // from DarkCurrent, or LED or ..

  ClassDef(AliEMCALSuperModuleCalibTempCoeff, 1) // help class
};
// ******* end of internal class definition *************

class AliEMCALCalibTempCoeff : public TObject {

public:

  enum kSrcType {kDarkCurrent=0, kLED=1};// code in possible sources

  AliEMCALCalibTempCoeff(const int nSM = AliEMCALGeoParams::fgkEMCALModules);

  // Read and Write txt I/O methods are normally not used, but are useful for 
  // filling the object before it is saved in OCDB 
  void ReadTextCalibTempCoeffInfo(Int_t nSM, const TString &txtFileName, Bool_t swapSides=kFALSE); // info file is for nSm=1 to fgkEMCalModules
  void WriteTextCalibTempCoeffInfo(const TString &txtFileName, Bool_t swapSides=kFALSE); // info file is for nSm=1 to fgkEMCalModules
  void ReadRootCalibTempCoeffInfo(const TString &rootFileName, Bool_t swapSides=kFALSE); // info file is for nSm=1 to fgkEMCalModules
  void ReadTreeCalibTempCoeffInfo(TTree *tree, Bool_t swapSides=kFALSE); // info file is for nSm=1 to fgkEMCalModules
  void WriteRootCalibTempCoeffInfo(const TString &rootFileName, Bool_t swapSides=kFALSE); // info file is for nSm=1 to fgkEMCalModules

  virtual ~AliEMCALCalibTempCoeff();

  // pointer to stored info.
  Int_t GetNSuperModule() const { return fNSuperModule; }; 

  // - via the index in the stored array:
  virtual AliEMCALSuperModuleCalibTempCoeff * GetSuperModuleCalibTempCoeffId(Int_t smIndex) const
   { return (AliEMCALSuperModuleCalibTempCoeff*) fSuperModuleData[smIndex]; };

  // - or via the actual SM number
  virtual AliEMCALSuperModuleCalibTempCoeff * GetSuperModuleCalibTempCoeffNum(Int_t smNum) const;

protected:

  Int_t 	  fNSuperModule; // Number of supermodules.
  TObjArray fSuperModuleData; // SuperModule data

private:

  AliEMCALCalibTempCoeff(const AliEMCALCalibTempCoeff &);
  AliEMCALCalibTempCoeff &operator = (const AliEMCALCalibTempCoeff &);

  ClassDef(AliEMCALCalibTempCoeff, 1) //CalibTempCoeff data info
};

#endif
 AliEMCALCalibTempCoeff.h:1
 AliEMCALCalibTempCoeff.h:2
 AliEMCALCalibTempCoeff.h:3
 AliEMCALCalibTempCoeff.h:4
 AliEMCALCalibTempCoeff.h:5
 AliEMCALCalibTempCoeff.h:6
 AliEMCALCalibTempCoeff.h:7
 AliEMCALCalibTempCoeff.h:8
 AliEMCALCalibTempCoeff.h:9
 AliEMCALCalibTempCoeff.h:10
 AliEMCALCalibTempCoeff.h:11
 AliEMCALCalibTempCoeff.h:12
 AliEMCALCalibTempCoeff.h:13
 AliEMCALCalibTempCoeff.h:14
 AliEMCALCalibTempCoeff.h:15
 AliEMCALCalibTempCoeff.h:16
 AliEMCALCalibTempCoeff.h:17
 AliEMCALCalibTempCoeff.h:18
 AliEMCALCalibTempCoeff.h:19
 AliEMCALCalibTempCoeff.h:20
 AliEMCALCalibTempCoeff.h:21
 AliEMCALCalibTempCoeff.h:22
 AliEMCALCalibTempCoeff.h:23
 AliEMCALCalibTempCoeff.h:24
 AliEMCALCalibTempCoeff.h:25
 AliEMCALCalibTempCoeff.h:26
 AliEMCALCalibTempCoeff.h:27
 AliEMCALCalibTempCoeff.h:28
 AliEMCALCalibTempCoeff.h:29
 AliEMCALCalibTempCoeff.h:30
 AliEMCALCalibTempCoeff.h:31
 AliEMCALCalibTempCoeff.h:32
 AliEMCALCalibTempCoeff.h:33
 AliEMCALCalibTempCoeff.h:34
 AliEMCALCalibTempCoeff.h:35
 AliEMCALCalibTempCoeff.h:36
 AliEMCALCalibTempCoeff.h:37
 AliEMCALCalibTempCoeff.h:38
 AliEMCALCalibTempCoeff.h:39
 AliEMCALCalibTempCoeff.h:40
 AliEMCALCalibTempCoeff.h:41
 AliEMCALCalibTempCoeff.h:42
 AliEMCALCalibTempCoeff.h:43
 AliEMCALCalibTempCoeff.h:44
 AliEMCALCalibTempCoeff.h:45
 AliEMCALCalibTempCoeff.h:46
 AliEMCALCalibTempCoeff.h:47
 AliEMCALCalibTempCoeff.h:48
 AliEMCALCalibTempCoeff.h:49
 AliEMCALCalibTempCoeff.h:50
 AliEMCALCalibTempCoeff.h:51
 AliEMCALCalibTempCoeff.h:52
 AliEMCALCalibTempCoeff.h:53
 AliEMCALCalibTempCoeff.h:54
 AliEMCALCalibTempCoeff.h:55
 AliEMCALCalibTempCoeff.h:56
 AliEMCALCalibTempCoeff.h:57
 AliEMCALCalibTempCoeff.h:58
 AliEMCALCalibTempCoeff.h:59
 AliEMCALCalibTempCoeff.h:60
 AliEMCALCalibTempCoeff.h:61
 AliEMCALCalibTempCoeff.h:62
 AliEMCALCalibTempCoeff.h:63
 AliEMCALCalibTempCoeff.h:64
 AliEMCALCalibTempCoeff.h:65
 AliEMCALCalibTempCoeff.h:66
 AliEMCALCalibTempCoeff.h:67
 AliEMCALCalibTempCoeff.h:68
 AliEMCALCalibTempCoeff.h:69
 AliEMCALCalibTempCoeff.h:70
 AliEMCALCalibTempCoeff.h:71
 AliEMCALCalibTempCoeff.h:72
 AliEMCALCalibTempCoeff.h:73
 AliEMCALCalibTempCoeff.h:74
 AliEMCALCalibTempCoeff.h:75
 AliEMCALCalibTempCoeff.h:76
 AliEMCALCalibTempCoeff.h:77
 AliEMCALCalibTempCoeff.h:78
 AliEMCALCalibTempCoeff.h:79
 AliEMCALCalibTempCoeff.h:80
 AliEMCALCalibTempCoeff.h:81
 AliEMCALCalibTempCoeff.h:82
 AliEMCALCalibTempCoeff.h:83
 AliEMCALCalibTempCoeff.h:84
 AliEMCALCalibTempCoeff.h:85
 AliEMCALCalibTempCoeff.h:86
 AliEMCALCalibTempCoeff.h:87
 AliEMCALCalibTempCoeff.h:88
 AliEMCALCalibTempCoeff.h:89
 AliEMCALCalibTempCoeff.h:90
 AliEMCALCalibTempCoeff.h:91
 AliEMCALCalibTempCoeff.h:92
 AliEMCALCalibTempCoeff.h:93
 AliEMCALCalibTempCoeff.h:94
 AliEMCALCalibTempCoeff.h:95
 AliEMCALCalibTempCoeff.h:96
 AliEMCALCalibTempCoeff.h:97
 AliEMCALCalibTempCoeff.h:98
 AliEMCALCalibTempCoeff.h:99
 AliEMCALCalibTempCoeff.h:100
 AliEMCALCalibTempCoeff.h:101
 AliEMCALCalibTempCoeff.h:102