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 <AliTRDfeeParam.h>
#include "AliTRDCalOnlineGainTableROC.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).
//
// AliTRDCalOnlineGainTableROC is a class to allocate MCM Gain Tables 
// and to access all stored calibration values from the ROC level by indicating row and col
//
//////////////////////////////////////////////////////////////////////////////////////////////

ClassImp(AliTRDCalOnlineGainTableROC);

//_____________________________________________________________________________
AliTRDCalOnlineGainTableROC::AliTRDCalOnlineGainTableROC()
  :TObject()
{
  //
  // constructor
  //

  for (int i=0; i<128; i++) {
    fMCMGainTables[i] = 0;
  }
}

//_____________________________________________________________________________
AliTRDCalOnlineGainTableROC::AliTRDCalOnlineGainTableROC(const AliTRDCalOnlineGainTableROC& other)
  :TObject(other)
{
  //
  // copy constructor
  //

  for (int i=0; i<128; i++) {
    if (other.GetGainTableMCM(i)) {
      fMCMGainTables[i] = new AliTRDCalOnlineGainTableMCM( *(other.GetGainTableMCM(i)) );
    } else {
      fMCMGainTables[i] = 0;
    }
  }

}

//_____________________________________________________________________________
AliTRDCalOnlineGainTableROC& AliTRDCalOnlineGainTableROC::operator=(const AliTRDCalOnlineGainTableROC& other)
{
  //
  // assignment operator
  //

  for (int i=0; i<128; i++) {

    if (fMCMGainTables[i]) {
      delete fMCMGainTables[i];
    }

    if (other.GetGainTableMCM(i)) {
      fMCMGainTables[i] = new AliTRDCalOnlineGainTableMCM( *(other.GetGainTableMCM(i)) );
    } else {
      fMCMGainTables[i] = 0;
    }
  }

  return *this;

}

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

  for (int i=0; i<128; i++) {
    if (fMCMGainTables[i]) {
      delete fMCMGainTables[i];
    }
  }

}

//_____________________________________________________________________________
Float_t AliTRDCalOnlineGainTableROC::GetGainCorrectionFactor(Int_t row, Int_t col)
{
  //
  // chooses ROB/MCM/channel from row/col
  // returns the Gain Correction Factor of the given channel
  //

  AliTRDfeeParam * para = AliTRDfeeParam::Instance(); 

  Int_t rob = para->GetROBfromPad(row,col);
  Int_t mcm = para->GetMCMfromPad(row,col);
  Int_t channel =19-(col%18);

  AliTRDCalOnlineGainTableMCM* gtbl=GetGainTableMCM(rob,mcm);

  if (gtbl) {
    return gtbl->GetGainCorrectionFactor(channel);
  } else {
    return AliTRDCalOnlineGainTable::UnDef;
  }

}

//_____________________________________________________________________________
Short_t AliTRDCalOnlineGainTableROC::GetAdcdac(Int_t row, Int_t col)
{
  //
  // chooses ROB/MCM/channel from row/col
  // returns the ADC's reference voltage of the given MCM
  //

  AliTRDfeeParam * para = AliTRDfeeParam::Instance(); 

  Int_t rob = para->GetROBfromPad(row,col);
  Int_t mcm = para->GetMCMfromPad(row,col);

  AliTRDCalOnlineGainTableMCM* gtbl=GetGainTableMCM(rob,mcm);

  if (gtbl) {
    return gtbl->GetAdcdac();
  } else {
    return -999;
  }

}

//_____________________________________________________________________________
Float_t AliTRDCalOnlineGainTableROC::GetMCMGain(Int_t row, Int_t col)
{
  //
  // chooses ROB/MCM/channel from row/col
  // returns the Gain Factor which would lead to a Correction Factor of 1.0 within the given MCM
  //

  AliTRDfeeParam * para = AliTRDfeeParam::Instance(); 

  Int_t rob = para->GetROBfromPad(row,col);
  Int_t mcm = para->GetMCMfromPad(row,col);

  AliTRDCalOnlineGainTableMCM* gtbl=GetGainTableMCM(rob,mcm);

  if (gtbl) {
    return gtbl->GetMCMGain();
  } else {
    return AliTRDCalOnlineGainTable::UnDef;
  }

}

//_____________________________________________________________________________
Short_t AliTRDCalOnlineGainTableROC::GetFGAN(Int_t row, Int_t col)
{
  //
  // chooses ROB/MCM/channel from row/col
  // returns the Gain Correction Filter Factor of the given channel
  //

  AliTRDfeeParam * para = AliTRDfeeParam::Instance(); 

  Int_t rob = para->GetROBfromPad(row,col);
  Int_t mcm = para->GetMCMfromPad(row,col);
  Int_t channel =19-(col%18);

  AliTRDCalOnlineGainTableMCM* gtbl=GetGainTableMCM(rob,mcm);

  if (gtbl) {
    return gtbl->GetFGAN(channel);
  } else {
    return -999;
  }

}

//_____________________________________________________________________________
Short_t AliTRDCalOnlineGainTableROC::GetFGFN(Int_t row, Int_t col)
{
  //
  // chooses ROB/MCM/channel from row/col
  // returns the Gain Correction Filter Additive of the given channel
  //

  AliTRDfeeParam * para = AliTRDfeeParam::Instance(); 

  Int_t rob = para->GetROBfromPad(row,col);
  Int_t mcm = para->GetMCMfromPad(row,col);
  Int_t channel =19-(col%18);

  AliTRDCalOnlineGainTableMCM* gtbl=GetGainTableMCM(rob,mcm);

  if (gtbl) {
    return gtbl->GetFGFN(channel);
  } else {
    return -999;
  }

}  

//_____________________________________________________________________________
void AliTRDCalOnlineGainTableROC::AllocateGainTableMCM(Int_t rob, Int_t mcm)
{
  //
  // allocates a Gain Table for the given MCM
  //

  Int_t index = rob*16 + mcm;

  if (fMCMGainTables[index]) {
    delete fMCMGainTables[index];
  }

  fMCMGainTables[index] = new AliTRDCalOnlineGainTableMCM;
}

 AliTRDCalOnlineGainTableROC.cxx:1
 AliTRDCalOnlineGainTableROC.cxx:2
 AliTRDCalOnlineGainTableROC.cxx:3
 AliTRDCalOnlineGainTableROC.cxx:4
 AliTRDCalOnlineGainTableROC.cxx:5
 AliTRDCalOnlineGainTableROC.cxx:6
 AliTRDCalOnlineGainTableROC.cxx:7
 AliTRDCalOnlineGainTableROC.cxx:8
 AliTRDCalOnlineGainTableROC.cxx:9
 AliTRDCalOnlineGainTableROC.cxx:10
 AliTRDCalOnlineGainTableROC.cxx:11
 AliTRDCalOnlineGainTableROC.cxx:12
 AliTRDCalOnlineGainTableROC.cxx:13
 AliTRDCalOnlineGainTableROC.cxx:14
 AliTRDCalOnlineGainTableROC.cxx:15
 AliTRDCalOnlineGainTableROC.cxx:16
 AliTRDCalOnlineGainTableROC.cxx:17
 AliTRDCalOnlineGainTableROC.cxx:18
 AliTRDCalOnlineGainTableROC.cxx:19
 AliTRDCalOnlineGainTableROC.cxx:20
 AliTRDCalOnlineGainTableROC.cxx:21
 AliTRDCalOnlineGainTableROC.cxx:22
 AliTRDCalOnlineGainTableROC.cxx:23
 AliTRDCalOnlineGainTableROC.cxx:24
 AliTRDCalOnlineGainTableROC.cxx:25
 AliTRDCalOnlineGainTableROC.cxx:26
 AliTRDCalOnlineGainTableROC.cxx:27
 AliTRDCalOnlineGainTableROC.cxx:28
 AliTRDCalOnlineGainTableROC.cxx:29
 AliTRDCalOnlineGainTableROC.cxx:30
 AliTRDCalOnlineGainTableROC.cxx:31
 AliTRDCalOnlineGainTableROC.cxx:32
 AliTRDCalOnlineGainTableROC.cxx:33
 AliTRDCalOnlineGainTableROC.cxx:34
 AliTRDCalOnlineGainTableROC.cxx:35
 AliTRDCalOnlineGainTableROC.cxx:36
 AliTRDCalOnlineGainTableROC.cxx:37
 AliTRDCalOnlineGainTableROC.cxx:38
 AliTRDCalOnlineGainTableROC.cxx:39
 AliTRDCalOnlineGainTableROC.cxx:40
 AliTRDCalOnlineGainTableROC.cxx:41
 AliTRDCalOnlineGainTableROC.cxx:42
 AliTRDCalOnlineGainTableROC.cxx:43
 AliTRDCalOnlineGainTableROC.cxx:44
 AliTRDCalOnlineGainTableROC.cxx:45
 AliTRDCalOnlineGainTableROC.cxx:46
 AliTRDCalOnlineGainTableROC.cxx:47
 AliTRDCalOnlineGainTableROC.cxx:48
 AliTRDCalOnlineGainTableROC.cxx:49
 AliTRDCalOnlineGainTableROC.cxx:50
 AliTRDCalOnlineGainTableROC.cxx:51
 AliTRDCalOnlineGainTableROC.cxx:52
 AliTRDCalOnlineGainTableROC.cxx:53
 AliTRDCalOnlineGainTableROC.cxx:54
 AliTRDCalOnlineGainTableROC.cxx:55
 AliTRDCalOnlineGainTableROC.cxx:56
 AliTRDCalOnlineGainTableROC.cxx:57
 AliTRDCalOnlineGainTableROC.cxx:58
 AliTRDCalOnlineGainTableROC.cxx:59
 AliTRDCalOnlineGainTableROC.cxx:60
 AliTRDCalOnlineGainTableROC.cxx:61
 AliTRDCalOnlineGainTableROC.cxx:62
 AliTRDCalOnlineGainTableROC.cxx:63
 AliTRDCalOnlineGainTableROC.cxx:64
 AliTRDCalOnlineGainTableROC.cxx:65
 AliTRDCalOnlineGainTableROC.cxx:66
 AliTRDCalOnlineGainTableROC.cxx:67
 AliTRDCalOnlineGainTableROC.cxx:68
 AliTRDCalOnlineGainTableROC.cxx:69
 AliTRDCalOnlineGainTableROC.cxx:70
 AliTRDCalOnlineGainTableROC.cxx:71
 AliTRDCalOnlineGainTableROC.cxx:72
 AliTRDCalOnlineGainTableROC.cxx:73
 AliTRDCalOnlineGainTableROC.cxx:74
 AliTRDCalOnlineGainTableROC.cxx:75
 AliTRDCalOnlineGainTableROC.cxx:76
 AliTRDCalOnlineGainTableROC.cxx:77
 AliTRDCalOnlineGainTableROC.cxx:78
 AliTRDCalOnlineGainTableROC.cxx:79
 AliTRDCalOnlineGainTableROC.cxx:80
 AliTRDCalOnlineGainTableROC.cxx:81
 AliTRDCalOnlineGainTableROC.cxx:82
 AliTRDCalOnlineGainTableROC.cxx:83
 AliTRDCalOnlineGainTableROC.cxx:84
 AliTRDCalOnlineGainTableROC.cxx:85
 AliTRDCalOnlineGainTableROC.cxx:86
 AliTRDCalOnlineGainTableROC.cxx:87
 AliTRDCalOnlineGainTableROC.cxx:88
 AliTRDCalOnlineGainTableROC.cxx:89
 AliTRDCalOnlineGainTableROC.cxx:90
 AliTRDCalOnlineGainTableROC.cxx:91
 AliTRDCalOnlineGainTableROC.cxx:92
 AliTRDCalOnlineGainTableROC.cxx:93
 AliTRDCalOnlineGainTableROC.cxx:94
 AliTRDCalOnlineGainTableROC.cxx:95
 AliTRDCalOnlineGainTableROC.cxx:96
 AliTRDCalOnlineGainTableROC.cxx:97
 AliTRDCalOnlineGainTableROC.cxx:98
 AliTRDCalOnlineGainTableROC.cxx:99
 AliTRDCalOnlineGainTableROC.cxx:100
 AliTRDCalOnlineGainTableROC.cxx:101
 AliTRDCalOnlineGainTableROC.cxx:102
 AliTRDCalOnlineGainTableROC.cxx:103
 AliTRDCalOnlineGainTableROC.cxx:104
 AliTRDCalOnlineGainTableROC.cxx:105
 AliTRDCalOnlineGainTableROC.cxx:106
 AliTRDCalOnlineGainTableROC.cxx:107
 AliTRDCalOnlineGainTableROC.cxx:108
 AliTRDCalOnlineGainTableROC.cxx:109
 AliTRDCalOnlineGainTableROC.cxx:110
 AliTRDCalOnlineGainTableROC.cxx:111
 AliTRDCalOnlineGainTableROC.cxx:112
 AliTRDCalOnlineGainTableROC.cxx:113
 AliTRDCalOnlineGainTableROC.cxx:114
 AliTRDCalOnlineGainTableROC.cxx:115
 AliTRDCalOnlineGainTableROC.cxx:116
 AliTRDCalOnlineGainTableROC.cxx:117
 AliTRDCalOnlineGainTableROC.cxx:118
 AliTRDCalOnlineGainTableROC.cxx:119
 AliTRDCalOnlineGainTableROC.cxx:120
 AliTRDCalOnlineGainTableROC.cxx:121
 AliTRDCalOnlineGainTableROC.cxx:122
 AliTRDCalOnlineGainTableROC.cxx:123
 AliTRDCalOnlineGainTableROC.cxx:124
 AliTRDCalOnlineGainTableROC.cxx:125
 AliTRDCalOnlineGainTableROC.cxx:126
 AliTRDCalOnlineGainTableROC.cxx:127
 AliTRDCalOnlineGainTableROC.cxx:128
 AliTRDCalOnlineGainTableROC.cxx:129
 AliTRDCalOnlineGainTableROC.cxx:130
 AliTRDCalOnlineGainTableROC.cxx:131
 AliTRDCalOnlineGainTableROC.cxx:132
 AliTRDCalOnlineGainTableROC.cxx:133
 AliTRDCalOnlineGainTableROC.cxx:134
 AliTRDCalOnlineGainTableROC.cxx:135
 AliTRDCalOnlineGainTableROC.cxx:136
 AliTRDCalOnlineGainTableROC.cxx:137
 AliTRDCalOnlineGainTableROC.cxx:138
 AliTRDCalOnlineGainTableROC.cxx:139
 AliTRDCalOnlineGainTableROC.cxx:140
 AliTRDCalOnlineGainTableROC.cxx:141
 AliTRDCalOnlineGainTableROC.cxx:142
 AliTRDCalOnlineGainTableROC.cxx:143
 AliTRDCalOnlineGainTableROC.cxx:144
 AliTRDCalOnlineGainTableROC.cxx:145
 AliTRDCalOnlineGainTableROC.cxx:146
 AliTRDCalOnlineGainTableROC.cxx:147
 AliTRDCalOnlineGainTableROC.cxx:148
 AliTRDCalOnlineGainTableROC.cxx:149
 AliTRDCalOnlineGainTableROC.cxx:150
 AliTRDCalOnlineGainTableROC.cxx:151
 AliTRDCalOnlineGainTableROC.cxx:152
 AliTRDCalOnlineGainTableROC.cxx:153
 AliTRDCalOnlineGainTableROC.cxx:154
 AliTRDCalOnlineGainTableROC.cxx:155
 AliTRDCalOnlineGainTableROC.cxx:156
 AliTRDCalOnlineGainTableROC.cxx:157
 AliTRDCalOnlineGainTableROC.cxx:158
 AliTRDCalOnlineGainTableROC.cxx:159
 AliTRDCalOnlineGainTableROC.cxx:160
 AliTRDCalOnlineGainTableROC.cxx:161
 AliTRDCalOnlineGainTableROC.cxx:162
 AliTRDCalOnlineGainTableROC.cxx:163
 AliTRDCalOnlineGainTableROC.cxx:164
 AliTRDCalOnlineGainTableROC.cxx:165
 AliTRDCalOnlineGainTableROC.cxx:166
 AliTRDCalOnlineGainTableROC.cxx:167
 AliTRDCalOnlineGainTableROC.cxx:168
 AliTRDCalOnlineGainTableROC.cxx:169
 AliTRDCalOnlineGainTableROC.cxx:170
 AliTRDCalOnlineGainTableROC.cxx:171
 AliTRDCalOnlineGainTableROC.cxx:172
 AliTRDCalOnlineGainTableROC.cxx:173
 AliTRDCalOnlineGainTableROC.cxx:174
 AliTRDCalOnlineGainTableROC.cxx:175
 AliTRDCalOnlineGainTableROC.cxx:176
 AliTRDCalOnlineGainTableROC.cxx:177
 AliTRDCalOnlineGainTableROC.cxx:178
 AliTRDCalOnlineGainTableROC.cxx:179
 AliTRDCalOnlineGainTableROC.cxx:180
 AliTRDCalOnlineGainTableROC.cxx:181
 AliTRDCalOnlineGainTableROC.cxx:182
 AliTRDCalOnlineGainTableROC.cxx:183
 AliTRDCalOnlineGainTableROC.cxx:184
 AliTRDCalOnlineGainTableROC.cxx:185
 AliTRDCalOnlineGainTableROC.cxx:186
 AliTRDCalOnlineGainTableROC.cxx:187
 AliTRDCalOnlineGainTableROC.cxx:188
 AliTRDCalOnlineGainTableROC.cxx:189
 AliTRDCalOnlineGainTableROC.cxx:190
 AliTRDCalOnlineGainTableROC.cxx:191
 AliTRDCalOnlineGainTableROC.cxx:192
 AliTRDCalOnlineGainTableROC.cxx:193
 AliTRDCalOnlineGainTableROC.cxx:194
 AliTRDCalOnlineGainTableROC.cxx:195
 AliTRDCalOnlineGainTableROC.cxx:196
 AliTRDCalOnlineGainTableROC.cxx:197
 AliTRDCalOnlineGainTableROC.cxx:198
 AliTRDCalOnlineGainTableROC.cxx:199
 AliTRDCalOnlineGainTableROC.cxx:200
 AliTRDCalOnlineGainTableROC.cxx:201
 AliTRDCalOnlineGainTableROC.cxx:202
 AliTRDCalOnlineGainTableROC.cxx:203
 AliTRDCalOnlineGainTableROC.cxx:204
 AliTRDCalOnlineGainTableROC.cxx:205
 AliTRDCalOnlineGainTableROC.cxx:206
 AliTRDCalOnlineGainTableROC.cxx:207
 AliTRDCalOnlineGainTableROC.cxx:208
 AliTRDCalOnlineGainTableROC.cxx:209
 AliTRDCalOnlineGainTableROC.cxx:210
 AliTRDCalOnlineGainTableROC.cxx:211
 AliTRDCalOnlineGainTableROC.cxx:212
 AliTRDCalOnlineGainTableROC.cxx:213
 AliTRDCalOnlineGainTableROC.cxx:214
 AliTRDCalOnlineGainTableROC.cxx:215
 AliTRDCalOnlineGainTableROC.cxx:216
 AliTRDCalOnlineGainTableROC.cxx:217
 AliTRDCalOnlineGainTableROC.cxx:218
 AliTRDCalOnlineGainTableROC.cxx:219
 AliTRDCalOnlineGainTableROC.cxx:220
 AliTRDCalOnlineGainTableROC.cxx:221
 AliTRDCalOnlineGainTableROC.cxx:222
 AliTRDCalOnlineGainTableROC.cxx:223
 AliTRDCalOnlineGainTableROC.cxx:224
 AliTRDCalOnlineGainTableROC.cxx:225
 AliTRDCalOnlineGainTableROC.cxx:226
 AliTRDCalOnlineGainTableROC.cxx:227
 AliTRDCalOnlineGainTableROC.cxx:228
 AliTRDCalOnlineGainTableROC.cxx:229
 AliTRDCalOnlineGainTableROC.cxx:230
 AliTRDCalOnlineGainTableROC.cxx:231
 AliTRDCalOnlineGainTableROC.cxx:232
 AliTRDCalOnlineGainTableROC.cxx:233
 AliTRDCalOnlineGainTableROC.cxx:234
 AliTRDCalOnlineGainTableROC.cxx:235
 AliTRDCalOnlineGainTableROC.cxx:236
 AliTRDCalOnlineGainTableROC.cxx:237
 AliTRDCalOnlineGainTableROC.cxx:238
 AliTRDCalOnlineGainTableROC.cxx:239
 AliTRDCalOnlineGainTableROC.cxx:240
 AliTRDCalOnlineGainTableROC.cxx:241
 AliTRDCalOnlineGainTableROC.cxx:242
 AliTRDCalOnlineGainTableROC.cxx:243
 AliTRDCalOnlineGainTableROC.cxx:244
 AliTRDCalOnlineGainTableROC.cxx:245
 AliTRDCalOnlineGainTableROC.cxx:246
 AliTRDCalOnlineGainTableROC.cxx:247
 AliTRDCalOnlineGainTableROC.cxx:248