ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

#include "AliTRDCalOnlineGainTableMCM.h"
#include "AliTRDCalOnlineGainTable.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).
//
// With the class AliTRDCalOnlineGainTablesMCM all values used for the 
// online calibration can be set and accessed on the MCM/channel level
//
//////////////////////////////////////////////////////////////////////////////////////////////

ClassImp(AliTRDCalOnlineGainTableMCM);

//_____________________________________________________________________________
AliTRDCalOnlineGainTableMCM::AliTRDCalOnlineGainTableMCM()
  :TObject()
  ,fAdcdac(0)
  ,fMCMGain(0.0)
{
  //
  // constructor
  //

  fAdcdac = -1;
  fMCMGain = AliTRDCalOnlineGainTable::UnDef;
  
  for (int i=0; i<21;i++) {

    fFGFN[i] = -1;
    fFGAN[i] = -1;
  }

}

//_____________________________________________________________________________
AliTRDCalOnlineGainTableMCM::~AliTRDCalOnlineGainTableMCM()
{
  //
  // destructor
  //

}

//_____________________________________________________________________________
Float_t AliTRDCalOnlineGainTableMCM::GetGainCorrectionFactor(Int_t channel)
{
  //
  // returns the Gain Correction Factor of the given channel that was used by the online gain filter
  // 1.0 means no correction
  // 0.9 means a correction of -10%
  // 1.1 means a correction of +10% etc.
  //

  if (fAdcdac == 0){
    if (fFGFN[channel] < 0){
      return -1.;
    }
    else if(fFGFN[channel] > 511){
      return -999.;
    }
    else{
      return (fFGFN[channel]/2048.)+0.875;
 
    }
  }
  else{
    // if the reference voltage of the ADC is not the default value 
    // this taken into account for the Gain Correction Factor
    Float_t fAdcdac_Correction = ( 1./(1.+((Float_t)fAdcdac/31.)*(0.4/1.05))); 
    return (fAdcdac_Correction*((fFGFN[channel]/2048.)+0.875));
  }

}

//_____________________________________________________________________________
Short_t AliTRDCalOnlineGainTableMCM::GetAdcdac()
{
  //
  // returns an integer between 0 and 31 which corresponds to an ADC reference voltage between 1.05V and 1.45V
  // U_Ref =  (1.05V + (fAdcdac/31)*0.4V
  // fAdcdac is the same value for all ADCs within one MCM
  //

  return fAdcdac;

}

//_____________________________________________________________________________
Float_t AliTRDCalOnlineGainTableMCM::GetMCMGain()
{
  //
  // returns the Gain Factor which would lead to a Gain Correction Factor of 1.0
  // this value is the same for all channels within one MCM
  // this value is used for the online PID
  //

  return fMCMGain;

}

//_____________________________________________________________________________
Short_t AliTRDCalOnlineGainTableMCM::GetFGAN(Int_t channel)
{
  //
  // returns the Gain Correction Filter Additive as an interger between 0 and 15 
  // as it is loaded into the TRAP
  //

  if (fFGAN[channel] < 0){
    return -1;
  }
  else if(fFGAN[channel] > 511){
    return -999;
  }
  else{
    return fFGAN[channel];
      
  }

}

//_____________________________________________________________________________
Short_t AliTRDCalOnlineGainTableMCM::GetFGFN(Int_t channel)
{
  //
  // returns the Gain Correction Filter Factors as an interger between 0 and 511 
  // as it is loaded into the TRAP 
  //

  if (fFGFN[channel] < 0){
    return -1;
  }
  else if(fFGFN[channel] > 511){
    return -999;
  }
  else{
    return fFGFN[channel];
      
  }

}

 AliTRDCalOnlineGainTableMCM.cxx:1
 AliTRDCalOnlineGainTableMCM.cxx:2
 AliTRDCalOnlineGainTableMCM.cxx:3
 AliTRDCalOnlineGainTableMCM.cxx:4
 AliTRDCalOnlineGainTableMCM.cxx:5
 AliTRDCalOnlineGainTableMCM.cxx:6
 AliTRDCalOnlineGainTableMCM.cxx:7
 AliTRDCalOnlineGainTableMCM.cxx:8
 AliTRDCalOnlineGainTableMCM.cxx:9
 AliTRDCalOnlineGainTableMCM.cxx:10
 AliTRDCalOnlineGainTableMCM.cxx:11
 AliTRDCalOnlineGainTableMCM.cxx:12
 AliTRDCalOnlineGainTableMCM.cxx:13
 AliTRDCalOnlineGainTableMCM.cxx:14
 AliTRDCalOnlineGainTableMCM.cxx:15
 AliTRDCalOnlineGainTableMCM.cxx:16
 AliTRDCalOnlineGainTableMCM.cxx:17
 AliTRDCalOnlineGainTableMCM.cxx:18
 AliTRDCalOnlineGainTableMCM.cxx:19
 AliTRDCalOnlineGainTableMCM.cxx:20
 AliTRDCalOnlineGainTableMCM.cxx:21
 AliTRDCalOnlineGainTableMCM.cxx:22
 AliTRDCalOnlineGainTableMCM.cxx:23
 AliTRDCalOnlineGainTableMCM.cxx:24
 AliTRDCalOnlineGainTableMCM.cxx:25
 AliTRDCalOnlineGainTableMCM.cxx:26
 AliTRDCalOnlineGainTableMCM.cxx:27
 AliTRDCalOnlineGainTableMCM.cxx:28
 AliTRDCalOnlineGainTableMCM.cxx:29
 AliTRDCalOnlineGainTableMCM.cxx:30
 AliTRDCalOnlineGainTableMCM.cxx:31
 AliTRDCalOnlineGainTableMCM.cxx:32
 AliTRDCalOnlineGainTableMCM.cxx:33
 AliTRDCalOnlineGainTableMCM.cxx:34
 AliTRDCalOnlineGainTableMCM.cxx:35
 AliTRDCalOnlineGainTableMCM.cxx:36
 AliTRDCalOnlineGainTableMCM.cxx:37
 AliTRDCalOnlineGainTableMCM.cxx:38
 AliTRDCalOnlineGainTableMCM.cxx:39
 AliTRDCalOnlineGainTableMCM.cxx:40
 AliTRDCalOnlineGainTableMCM.cxx:41
 AliTRDCalOnlineGainTableMCM.cxx:42
 AliTRDCalOnlineGainTableMCM.cxx:43
 AliTRDCalOnlineGainTableMCM.cxx:44
 AliTRDCalOnlineGainTableMCM.cxx:45
 AliTRDCalOnlineGainTableMCM.cxx:46
 AliTRDCalOnlineGainTableMCM.cxx:47
 AliTRDCalOnlineGainTableMCM.cxx:48
 AliTRDCalOnlineGainTableMCM.cxx:49
 AliTRDCalOnlineGainTableMCM.cxx:50
 AliTRDCalOnlineGainTableMCM.cxx:51
 AliTRDCalOnlineGainTableMCM.cxx:52
 AliTRDCalOnlineGainTableMCM.cxx:53
 AliTRDCalOnlineGainTableMCM.cxx:54
 AliTRDCalOnlineGainTableMCM.cxx:55
 AliTRDCalOnlineGainTableMCM.cxx:56
 AliTRDCalOnlineGainTableMCM.cxx:57
 AliTRDCalOnlineGainTableMCM.cxx:58
 AliTRDCalOnlineGainTableMCM.cxx:59
 AliTRDCalOnlineGainTableMCM.cxx:60
 AliTRDCalOnlineGainTableMCM.cxx:61
 AliTRDCalOnlineGainTableMCM.cxx:62
 AliTRDCalOnlineGainTableMCM.cxx:63
 AliTRDCalOnlineGainTableMCM.cxx:64
 AliTRDCalOnlineGainTableMCM.cxx:65
 AliTRDCalOnlineGainTableMCM.cxx:66
 AliTRDCalOnlineGainTableMCM.cxx:67
 AliTRDCalOnlineGainTableMCM.cxx:68
 AliTRDCalOnlineGainTableMCM.cxx:69
 AliTRDCalOnlineGainTableMCM.cxx:70
 AliTRDCalOnlineGainTableMCM.cxx:71
 AliTRDCalOnlineGainTableMCM.cxx:72
 AliTRDCalOnlineGainTableMCM.cxx:73
 AliTRDCalOnlineGainTableMCM.cxx:74
 AliTRDCalOnlineGainTableMCM.cxx:75
 AliTRDCalOnlineGainTableMCM.cxx:76
 AliTRDCalOnlineGainTableMCM.cxx:77
 AliTRDCalOnlineGainTableMCM.cxx:78
 AliTRDCalOnlineGainTableMCM.cxx:79
 AliTRDCalOnlineGainTableMCM.cxx:80
 AliTRDCalOnlineGainTableMCM.cxx:81
 AliTRDCalOnlineGainTableMCM.cxx:82
 AliTRDCalOnlineGainTableMCM.cxx:83
 AliTRDCalOnlineGainTableMCM.cxx:84
 AliTRDCalOnlineGainTableMCM.cxx:85
 AliTRDCalOnlineGainTableMCM.cxx:86
 AliTRDCalOnlineGainTableMCM.cxx:87
 AliTRDCalOnlineGainTableMCM.cxx:88
 AliTRDCalOnlineGainTableMCM.cxx:89
 AliTRDCalOnlineGainTableMCM.cxx:90
 AliTRDCalOnlineGainTableMCM.cxx:91
 AliTRDCalOnlineGainTableMCM.cxx:92
 AliTRDCalOnlineGainTableMCM.cxx:93
 AliTRDCalOnlineGainTableMCM.cxx:94
 AliTRDCalOnlineGainTableMCM.cxx:95
 AliTRDCalOnlineGainTableMCM.cxx:96
 AliTRDCalOnlineGainTableMCM.cxx:97
 AliTRDCalOnlineGainTableMCM.cxx:98
 AliTRDCalOnlineGainTableMCM.cxx:99
 AliTRDCalOnlineGainTableMCM.cxx:100
 AliTRDCalOnlineGainTableMCM.cxx:101
 AliTRDCalOnlineGainTableMCM.cxx:102
 AliTRDCalOnlineGainTableMCM.cxx:103
 AliTRDCalOnlineGainTableMCM.cxx:104
 AliTRDCalOnlineGainTableMCM.cxx:105
 AliTRDCalOnlineGainTableMCM.cxx:106
 AliTRDCalOnlineGainTableMCM.cxx:107
 AliTRDCalOnlineGainTableMCM.cxx:108
 AliTRDCalOnlineGainTableMCM.cxx:109
 AliTRDCalOnlineGainTableMCM.cxx:110
 AliTRDCalOnlineGainTableMCM.cxx:111
 AliTRDCalOnlineGainTableMCM.cxx:112
 AliTRDCalOnlineGainTableMCM.cxx:113
 AliTRDCalOnlineGainTableMCM.cxx:114
 AliTRDCalOnlineGainTableMCM.cxx:115
 AliTRDCalOnlineGainTableMCM.cxx:116
 AliTRDCalOnlineGainTableMCM.cxx:117
 AliTRDCalOnlineGainTableMCM.cxx:118
 AliTRDCalOnlineGainTableMCM.cxx:119
 AliTRDCalOnlineGainTableMCM.cxx:120
 AliTRDCalOnlineGainTableMCM.cxx:121
 AliTRDCalOnlineGainTableMCM.cxx:122
 AliTRDCalOnlineGainTableMCM.cxx:123
 AliTRDCalOnlineGainTableMCM.cxx:124
 AliTRDCalOnlineGainTableMCM.cxx:125
 AliTRDCalOnlineGainTableMCM.cxx:126
 AliTRDCalOnlineGainTableMCM.cxx:127
 AliTRDCalOnlineGainTableMCM.cxx:128
 AliTRDCalOnlineGainTableMCM.cxx:129
 AliTRDCalOnlineGainTableMCM.cxx:130
 AliTRDCalOnlineGainTableMCM.cxx:131
 AliTRDCalOnlineGainTableMCM.cxx:132
 AliTRDCalOnlineGainTableMCM.cxx:133
 AliTRDCalOnlineGainTableMCM.cxx:134
 AliTRDCalOnlineGainTableMCM.cxx:135
 AliTRDCalOnlineGainTableMCM.cxx:136
 AliTRDCalOnlineGainTableMCM.cxx:137
 AliTRDCalOnlineGainTableMCM.cxx:138
 AliTRDCalOnlineGainTableMCM.cxx:139
 AliTRDCalOnlineGainTableMCM.cxx:140
 AliTRDCalOnlineGainTableMCM.cxx:141
 AliTRDCalOnlineGainTableMCM.cxx:142
 AliTRDCalOnlineGainTableMCM.cxx:143
 AliTRDCalOnlineGainTableMCM.cxx:144
 AliTRDCalOnlineGainTableMCM.cxx:145
 AliTRDCalOnlineGainTableMCM.cxx:146
 AliTRDCalOnlineGainTableMCM.cxx:147
 AliTRDCalOnlineGainTableMCM.cxx:148
 AliTRDCalOnlineGainTableMCM.cxx:149
 AliTRDCalOnlineGainTableMCM.cxx:150
 AliTRDCalOnlineGainTableMCM.cxx:151
 AliTRDCalOnlineGainTableMCM.cxx:152
 AliTRDCalOnlineGainTableMCM.cxx:153
 AliTRDCalOnlineGainTableMCM.cxx:154
 AliTRDCalOnlineGainTableMCM.cxx:155
 AliTRDCalOnlineGainTableMCM.cxx:156
 AliTRDCalOnlineGainTableMCM.cxx:157
 AliTRDCalOnlineGainTableMCM.cxx:158
 AliTRDCalOnlineGainTableMCM.cxx:159
 AliTRDCalOnlineGainTableMCM.cxx:160
 AliTRDCalOnlineGainTableMCM.cxx:161
 AliTRDCalOnlineGainTableMCM.cxx:162
 AliTRDCalOnlineGainTableMCM.cxx:163
 AliTRDCalOnlineGainTableMCM.cxx:164
 AliTRDCalOnlineGainTableMCM.cxx:165
 AliTRDCalOnlineGainTableMCM.cxx:166
 AliTRDCalOnlineGainTableMCM.cxx:167
 AliTRDCalOnlineGainTableMCM.cxx:168
 AliTRDCalOnlineGainTableMCM.cxx:169
 AliTRDCalOnlineGainTableMCM.cxx:170
 AliTRDCalOnlineGainTableMCM.cxx:171
 AliTRDCalOnlineGainTableMCM.cxx:172