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 "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).
//
//////////////////////////////////////////////////////////////////////////////////////////////

ClassImp(AliTRDCalOnlineGainTable);

const Float_t AliTRDCalOnlineGainTable::UnDef=-999.;

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

  for (int i=0; i<540; i++) {
    fROCGainTables[i] = 0;
  }

}

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

  for (int i=0; i<540; i++) {
    if (other.GetGainTableROC(i)) {
      fROCGainTables[i] = new AliTRDCalOnlineGainTableROC( *(other.GetGainTableROC(i)) );
    } else {
      fROCGainTables[i] = 0;
    }
  }

}

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

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

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

    if (other.GetGainTableROC(i)) {
      fROCGainTables[i] = new AliTRDCalOnlineGainTableROC( *(other.GetGainTableROC(i)) );
    } else {
      fROCGainTables[i] = 0;
    }
  }

  return *this;

}

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

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

}

//_____________________________________________________________________________
Float_t AliTRDCalOnlineGainTable::GetGainCorrectionFactor(Int_t det
                                                        , Int_t row
                                                        , Int_t col) const
{
  //
  // returns the Gain Correction Factor of the channel
  // given by det, row, col
  //

  AliTRDCalOnlineGainTableROC* gtbl = GetGainTableROC(det);

  if (gtbl) {
    return gtbl->GetGainCorrectionFactor(row,col);
  } else {
    return AliTRDCalOnlineGainTable::UnDef;
  }

}

//_____________________________________________________________________________
Float_t AliTRDCalOnlineGainTable::GetGainCorrectionFactor(Int_t sector
                                                        , Int_t stack
                                                        , Int_t layer
							, Int_t row
                                                        , Int_t col) const
{ 
  //
  // returns the Gain Correction Factor of the channel
  // given by sector, stack, layer, row, col
  //

  return GetGainCorrectionFactor(30*sector + 6*stack + layer, row, col);
}

//_____________________________________________________________________________
Short_t AliTRDCalOnlineGainTable::GetAdcdac(Int_t det, Int_t row, Int_t col)
{
  //
  // returns the ADC's reference voltage of the channel 
  // given by det, row, col
  //

  AliTRDCalOnlineGainTableROC* gtbl = GetGainTableROC(det);

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

}

//_____________________________________________________________________________
Short_t AliTRDCalOnlineGainTable::GetAdcdac(Int_t sector, Int_t stack, Int_t layer, 
						Int_t row, Int_t col)
{ 
  //
  // returns the ADC's reference voltage of the channel 
  // given by sector, stack, layer, row, col
  //

  return GetAdcdac(30*sector + 6*stack + layer, row, col);
}

//_____________________________________________________________________________
Float_t AliTRDCalOnlineGainTable::GetMCMGain(Int_t det, Int_t row, Int_t col)
{ 
  //
  // returns the Gain Factor which would lead to a Correction Factor of 1.0  
  // within the MCM given by det, row, col
  //

  AliTRDCalOnlineGainTableROC* gtbl = GetGainTableROC(det);

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

}

//_____________________________________________________________________________
Float_t AliTRDCalOnlineGainTable::GetMCMGain(Int_t sector, Int_t stack, Int_t layer, 
						Int_t row, Int_t col)
{  
  //
  // returns the Gain Factor which would lead to a Correction Factor of 1.0  
  // within the MCM given by sector, stack, layer, row, col
  //

  return GetMCMGain(30*sector + 6*stack + layer, row, col);
}

//_____________________________________________________________________________
Short_t AliTRDCalOnlineGainTable::GetFGAN(Int_t det, Int_t row, Int_t col)
{
  //
  // returns the Gain Correction Filter Additive of the channel
  // given by det, row, col
  //

  AliTRDCalOnlineGainTableROC* gtbl = GetGainTableROC(det);

  if (gtbl) {
    return gtbl->GetFGAN(row,col);
  } else {
    return -999;
  }

}

//_____________________________________________________________________________
Short_t AliTRDCalOnlineGainTable::GetFGAN(Int_t sector, Int_t stack, Int_t layer, 
						Int_t row, Int_t col)
{ 
  //
  // returns the Gain Correction Filter Additive of the channel
  // given by sector, stack, layer, row, col
  //

  return GetFGAN(30*sector + 6*stack + layer, row, col);
}

//_____________________________________________________________________________
Short_t AliTRDCalOnlineGainTable::GetFGFN(Int_t det, Int_t row, Int_t col)
{  
  //
  // returns the Gain Correction Filter Factor of the channel
  // given by det, row, col
  //

  AliTRDCalOnlineGainTableROC* gtbl = GetGainTableROC(det);

  if (gtbl) {
    return gtbl->GetFGFN(row,col);
  } else {
    return -999;
  }
}

//_____________________________________________________________________________
Short_t AliTRDCalOnlineGainTable::GetFGFN(Int_t sector, Int_t stack, Int_t layer, 
						Int_t row, Int_t col)
{  
  //
  // returns the Gain Correction Filter Factor of the channel
  // given by sector, stack, layer, row, col
  //

  return GetFGFN(30*sector + 6*stack + layer, row, col);
}

//_____________________________________________________________________________
void AliTRDCalOnlineGainTable::AllocateGainTableROC(Int_t det)
{ 
  //
  // allocates a Gain Table for the given detector
  //

  if (fROCGainTables[det]) {
    delete fROCGainTables[det];
  }

  fROCGainTables[det] = new AliTRDCalOnlineGainTableROC;
}

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