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

#include <TObject.h>
#include "AliTRDCalOnlineGainTableROC.h"

//////////////////////////////////////////////////////////////////////////////////////////////
//
// Data structure to store gaintables of the online calibration in the OCDB
// consisting of three classes:
// AliTRDCalOnlineGainTable 
// AliTRDCalOnlineGainTableROC 
// AliTRDCalOnlineGainTableMCM
//
// AliTRDCalOnlineGainTable is the main class from which all stored data can be accessed.
// The two sub-classes AliTRDCalOnlineGainTableROC and AliTRDCalOnlineGainTableMCM
// contain the gaintables on ROC level and on the MCM level respectively.
//
// The online calibration is used to compensate gain deviations on the pad level.
// For the offline reconstruction the online calibration has to be undone. 
// The corresponding gain correction factor that was used by the online gain filter can be accessed 
// via the functions AliTRDCalOnlineGainTable::GetGainCorrectionFactor(Int_t det, Int_t row, Int_t col) 
// and AliTRDCalOnlineGainTable::GetGainCorrectionFactor(Int_t sector, Int_t stack, Int_t layer, Int_t row, Int_t col).
//
//////////////////////////////////////////////////////////////////////////////////////////////

class AliTRDCalOnlineGainTable: public TObject
{
public:

  AliTRDCalOnlineGainTable();
  AliTRDCalOnlineGainTable(const AliTRDCalOnlineGainTable& other);
  AliTRDCalOnlineGainTable& operator=(const AliTRDCalOnlineGainTable& other);
  ~AliTRDCalOnlineGainTable();

  Float_t GetGainCorrectionFactor(Int_t det, Int_t row, Int_t col) const;
  Float_t GetGainCorrectionFactor(Int_t sector, Int_t stack, Int_t layer, Int_t row, Int_t col) const;

  Short_t GetAdcdac(Int_t det, Int_t row, Int_t col);
  Short_t GetAdcdac(Int_t sector, Int_t stack, Int_t layer, Int_t row, Int_t col);

  Float_t GetMCMGain(Int_t det, Int_t row, Int_t col);
  Float_t GetMCMGain(Int_t sector, Int_t stack, Int_t layer, Int_t row, Int_t col);

  Short_t GetFGAN(Int_t det, Int_t row, Int_t col);
  Short_t GetFGAN(Int_t sector, Int_t stack, Int_t layer, Int_t row, Int_t col);

  Short_t GetFGFN(Int_t det, Int_t row, Int_t col);
  Short_t GetFGFN(Int_t sector, Int_t stack, Int_t layer, Int_t row, Int_t col);

  void AllocateGainTableROC(Int_t det);

  AliTRDCalOnlineGainTableROC *GetGainTableROC(Int_t det) const
  {
    // returns the Gain Table for the given detector
    return fROCGainTables[det];
  }

  AliTRDCalOnlineGainTableROC *GetGainTableROC(Int_t sector, Int_t stack, Int_t layer) const
  {
    // returns the Gain Table for the given detector
    return GetGainTableROC(sector*30 + stack*6 + layer);
  } 

  static const Float_t UnDef;

protected:

  AliTRDCalOnlineGainTableROC* fROCGainTables[540]; // Array of gain tables for all ROCs
  
  ClassDef(AliTRDCalOnlineGainTable,2);             // TRD online gain tables

};

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