ROOT logo
#ifndef ALIEMCALCALIBDATA_H
#define ALIEMCALCALIBDATA_H

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

/* $Id$ */

////////////////////////////////////////////////
//
//  class for EMCAL calibration               //
//
////////////////////////////////////////////////

#include "TNamed.h"
#include "AliEMCALGeoParams.h"

class AliEMCALCalibData: public TNamed {

 public:

  AliEMCALCalibData();
  AliEMCALCalibData(const char* name);
  AliEMCALCalibData(const AliEMCALCalibData &calibda);
  AliEMCALCalibData& operator= (const AliEMCALCalibData &calibda);
  virtual ~AliEMCALCalibData() { ; }
  
  void    Reset();
  void    Print(Option_t *option = "") const;
  
  // All indexes start from 0!
  Float_t GetADCchannel      (Int_t module, Int_t column, Int_t row) const;
  Float_t GetADCchannelOnline(Int_t module, Int_t column, Int_t row) const;
  Float_t GetADCchannelDecal (Int_t module, Int_t column, Int_t row) const;
  Float_t GetADCpedestal     (Int_t module, Int_t column, Int_t row) const;
  Float_t GetTimeChannelDecal(Int_t module, Int_t column, Int_t row) const;
  Float_t GetTimeChannel     (Int_t module, Int_t column, Int_t row, Int_t bc) const;
	
  Float_t GetADCchannelRef   () const { return fADCchannelRef ; }

  void    SetADCchannel      (Int_t module, Int_t column, Int_t row, Float_t value);
  void    SetADCchannelOnline(Int_t module, Int_t column, Int_t row, Float_t value);
  void    SetADCchannelDecal (Int_t module, Int_t column, Int_t row, Float_t value);
  void    SetADCpedestal     (Int_t module, Int_t column, Int_t row, Float_t value);
  void    SetTimeChannelDecal(Int_t module, Int_t column, Int_t row, Float_t value);
  void    SetTimeChannel     (Int_t module, Int_t column, Int_t row, Int_t bc, Float_t value);

  void    SetADCchannelRef   (Float_t value) { fADCchannelRef = value ; }

  static const int fgkECALModules  = 12;   // number of modules in EMCAL
  static const int fgkDCALModules  = 10;   // number of modules in DCAL 8+2 in possible future
  
 protected:

  Float_t  fADCchannelRef ;  // base value of the ADC channel set from cosmics calibration, not to be used, instead use fADCchannelOnline

  Float_t  fADCchannel          [fgkECALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]    ; // width of one ADC channel in GeV ([mod][col][row])
  Float_t  fADCchannelOnline    [fgkECALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]    ; // width of one ADC channel in GeV obtained from the voltage settings online
  Float_t  fADCchannelDecal     [fgkECALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]    ; // decalibrate width of one ADC channel in GeV ([mod][col][row])
  Float_t  fADCpedestal         [fgkECALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]    ; // value of the  ADC pedestal ([mod][col][row]), not used
  Float_t  fTimeChannelDecal    [fgkECALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]    ; // time shift of one ADC channel ([mod][col][row])
  Float_t  fTimeChannel         [fgkECALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows][4] ; // time shift of one ADC channel ([mod][col][row][bunch crossing number])

  // Add specific arrays for DCal to avoid backward incompatibilities,
  // dimension of DCal SM is smaller than EMCAL but assume the same to avoid complications due to partial SM
  Float_t  fADCchannelDCAL      [fgkDCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]    ; // width of one ADC channel in GeV ([mod][col][row])
  Float_t  fADCchannelOnlineDCAL[fgkDCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]    ; // width of one ADC channel in GeV  obtained from the voltage settings online
  Float_t  fADCchannelDecalDCAL [fgkDCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]    ; // decalibrate width of one ADC channel in GeV ([mod][col][row])
  Float_t  fADCpedestalDCAL     [fgkDCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]    ; // value of the  ADC pedestal ([mod][col][row]), not used
  Float_t  fTimeChannelDecalDCAL[fgkDCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]    ; // time shift of one ADC channel ([mod][col][row])
  Float_t  fTimeChannelDCAL     [fgkDCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows][4] ; // time shift of one ADC channel ([mod][col][row][bunch crossing number])

  
  ClassDef(AliEMCALCalibData,6)    // EMCAL Calibration data
};

#endif
 AliEMCALCalibData.h:1
 AliEMCALCalibData.h:2
 AliEMCALCalibData.h:3
 AliEMCALCalibData.h:4
 AliEMCALCalibData.h:5
 AliEMCALCalibData.h:6
 AliEMCALCalibData.h:7
 AliEMCALCalibData.h:8
 AliEMCALCalibData.h:9
 AliEMCALCalibData.h:10
 AliEMCALCalibData.h:11
 AliEMCALCalibData.h:12
 AliEMCALCalibData.h:13
 AliEMCALCalibData.h:14
 AliEMCALCalibData.h:15
 AliEMCALCalibData.h:16
 AliEMCALCalibData.h:17
 AliEMCALCalibData.h:18
 AliEMCALCalibData.h:19
 AliEMCALCalibData.h:20
 AliEMCALCalibData.h:21
 AliEMCALCalibData.h:22
 AliEMCALCalibData.h:23
 AliEMCALCalibData.h:24
 AliEMCALCalibData.h:25
 AliEMCALCalibData.h:26
 AliEMCALCalibData.h:27
 AliEMCALCalibData.h:28
 AliEMCALCalibData.h:29
 AliEMCALCalibData.h:30
 AliEMCALCalibData.h:31
 AliEMCALCalibData.h:32
 AliEMCALCalibData.h:33
 AliEMCALCalibData.h:34
 AliEMCALCalibData.h:35
 AliEMCALCalibData.h:36
 AliEMCALCalibData.h:37
 AliEMCALCalibData.h:38
 AliEMCALCalibData.h:39
 AliEMCALCalibData.h:40
 AliEMCALCalibData.h:41
 AliEMCALCalibData.h:42
 AliEMCALCalibData.h:43
 AliEMCALCalibData.h:44
 AliEMCALCalibData.h:45
 AliEMCALCalibData.h:46
 AliEMCALCalibData.h:47
 AliEMCALCalibData.h:48
 AliEMCALCalibData.h:49
 AliEMCALCalibData.h:50
 AliEMCALCalibData.h:51
 AliEMCALCalibData.h:52
 AliEMCALCalibData.h:53
 AliEMCALCalibData.h:54
 AliEMCALCalibData.h:55
 AliEMCALCalibData.h:56
 AliEMCALCalibData.h:57
 AliEMCALCalibData.h:58
 AliEMCALCalibData.h:59
 AliEMCALCalibData.h:60
 AliEMCALCalibData.h:61
 AliEMCALCalibData.h:62
 AliEMCALCalibData.h:63
 AliEMCALCalibData.h:64
 AliEMCALCalibData.h:65
 AliEMCALCalibData.h:66
 AliEMCALCalibData.h:67
 AliEMCALCalibData.h:68
 AliEMCALCalibData.h:69
 AliEMCALCalibData.h:70
 AliEMCALCalibData.h:71
 AliEMCALCalibData.h:72
 AliEMCALCalibData.h:73
 AliEMCALCalibData.h:74
 AliEMCALCalibData.h:75
 AliEMCALCalibData.h:76
 AliEMCALCalibData.h:77