ROOT logo
/* $Id$ */

// ------------------------------------------------------
//
// Class to handle corrections.
//
// ------------------------------------------------------
//

#include <TFile.h>
#include <TCanvas.h>
#include <TH2F.h>

#include <AliLog.h>

#include "AliCorrectionMatrix.h"

//____________________________________________________________________
ClassImp(AliCorrectionMatrix)

//____________________________________________________________________
AliCorrectionMatrix::AliCorrectionMatrix() : TNamed(),
  fhMeas(0),
  fhGene(0),
  fhCorr(0)
{
  // default constructor
}

//____________________________________________________________________
AliCorrectionMatrix::AliCorrectionMatrix(const Char_t* name, const Char_t* title) : TNamed(name, title),
  fhMeas(0),
  fhGene(0),
  fhCorr(0)
{
  // constructor initializing tnamed
}

//____________________________________________________________________
AliCorrectionMatrix::AliCorrectionMatrix(const AliCorrectionMatrix& c) : TNamed(c),
  fhMeas(0),
  fhGene(0),
  fhCorr(0)
{
  // copy constructor
  ((AliCorrectionMatrix &)c).Copy(*this);
}

//____________________________________________________________________
AliCorrectionMatrix::~AliCorrectionMatrix()
{
  //
  // destructor
  //

  if (fhMeas)
  {
    delete fhMeas;
    fhMeas = 0;
  }

  if (fhGene)
  {
    delete fhGene;
    fhGene = 0;
  }

  if (fhCorr)
  {
    delete fhCorr;
    fhCorr = 0;
  }
}

//____________________________________________________________________
AliCorrectionMatrix &AliCorrectionMatrix::operator=(const AliCorrectionMatrix &c)
{
  // assigment operator

  if (this != &c)
    ((AliCorrectionMatrix &) c).Copy(*this);

  return *this;
}

//____________________________________________________________________
void AliCorrectionMatrix::Copy(TObject& c) const
{
  // copy function

  AliCorrectionMatrix& target = (AliCorrectionMatrix &) c;

  if (fhMeas)
    target.fhMeas = dynamic_cast<TH1*> (fhMeas->Clone());

  if (fhGene)
    target.fhGene = dynamic_cast<TH1*> (fhGene->Clone());

  if (fhCorr)
    target.fhCorr = dynamic_cast<TH1*> (fhCorr->Clone());
}

//________________________________________________________________________
void AliCorrectionMatrix::SetAxisTitles(const Char_t* titleX, const Char_t* titleY, const Char_t* titleZ)
{
  //
  // method for setting the axis titles of the histograms
  //

  fhMeas ->SetXTitle(titleX);  fhMeas ->SetYTitle(titleY);  fhMeas ->SetZTitle(titleZ);
  fhGene ->SetXTitle(titleX);  fhGene ->SetYTitle(titleY);  fhGene ->SetZTitle(titleZ);
  fhCorr ->SetXTitle(titleX);  fhCorr ->SetYTitle(titleY);  fhCorr ->SetZTitle(titleZ);
}

//____________________________________________________________________
Long64_t AliCorrectionMatrix::Merge(TCollection* list)
{
  // Merge a list of AliCorrectionMatrix objects with this (needed for
  // PROOF). 
  // Returns the number of merged objects (including this).

  if (!list)
    return 0;
  
  if (list->IsEmpty())
    return 1;

  TIterator* iter = list->MakeIterator();
  TObject* obj;

  // collections of measured and generated histograms
  TList* collectionMeas = new TList;
  TList* collectionGene = new TList;
  
  Int_t count = 0;
  while ((obj = iter->Next())) {
    
    AliCorrectionMatrix* entry = dynamic_cast<AliCorrectionMatrix*> (obj);
    if (entry == 0) 
      continue;

    collectionMeas->Add(entry->GetMeasuredHistogram());
    collectionGene->Add(entry->GetGeneratedHistogram());

    count++;
  }
  fhMeas->Merge(collectionMeas);
  fhGene->Merge(collectionGene);

  delete collectionMeas;
  delete collectionGene;

  return count+1;
}

//____________________________________________________________________
void AliCorrectionMatrix::Divide()
{
  //
  // divides generated by measured to get the correction
  //

  if (!fhMeas || !fhGene || !fhCorr) {
    AliDebug(AliLog::kError, "measured or generated histograms not available");
    return;
  }

  fhCorr->Divide(fhGene, fhMeas, 1, 1, "B");

  Int_t emptyBins = 0;
  for (Int_t x=1; x<=fhCorr->GetNbinsX(); ++x)
    for (Int_t y=1; y<=fhCorr->GetNbinsY(); ++y)
      for (Int_t z=1; z<=fhCorr->GetNbinsZ(); ++z)
        if (fhCorr->GetBinContent(x, y, z) == 0)
          ++emptyBins;

  if (emptyBins > 0)
    printf("INFO: In %s we have %d empty bins (of %d) in the correction map\n", GetTitle(), emptyBins, fhCorr->GetNbinsX() * fhCorr->GetNbinsY() * fhCorr->GetNbinsZ());
}

//____________________________________________________________________
void AliCorrectionMatrix::Multiply()
{
  //
  // multiplies measured with correction to get the generated
  //

  if (!fhMeas || !fhGene || !fhCorr)
    return;

  fhGene->Multiply(fhMeas, fhCorr, 1, 1, "B");
}

//____________________________________________________________________
void AliCorrectionMatrix::Add(AliCorrectionMatrix* aMatrixToAdd, Float_t c) {
  //
  // adds the measured and generated of aMatrixToAdd to measured and generated of this
  // 
  // NB: the correction will naturally stay the same
  
  fhMeas->Add(aMatrixToAdd->GetMeasuredHistogram(), c);
  fhGene->Add(aMatrixToAdd->GetGeneratedHistogram(), c);
}


//____________________________________________________________________
Bool_t AliCorrectionMatrix::LoadHistograms(const Char_t* dir)
{
  //
  // loads the histograms from a file
  // if dir is empty a directory with the name of this object is taken (like in SaveHistogram)
  //

  if (!dir)
    dir = GetName();

  if (!gDirectory->cd(dir))
    return kFALSE;

  if (fhGene)
  {
    delete fhGene;
    fhGene=0;
  }

  if (fhCorr)
  {
    delete fhCorr;
    fhCorr=0;
  }

  if (fhMeas)
  {
    delete fhMeas;
    fhMeas=0;
  }

  fhMeas  = dynamic_cast<TH1*> (gDirectory->Get("measured"));
  if (!fhMeas)
    Info("LoadHistograms", "No measured hist available");

  fhGene  = dynamic_cast<TH1*> (gDirectory->Get("generated"));
  if (!fhGene)
    Info("LoadHistograms", "No generated hist available");

  fhCorr  = dynamic_cast<TH1*> (gDirectory->Get("correction"));

  Bool_t success = kTRUE;
  if (!fhCorr)
  {
    Info("LoadHistograms", "No correction hist available");
    success = kFALSE;
  }

  gDirectory->cd("..");

  return success;
}

//____________________________________________________________________
void AliCorrectionMatrix::SaveHistograms()
{
  //
  // saves the histograms
  //

  gDirectory->mkdir(GetName());
  gDirectory->cd(GetName());

  if (fhMeas)
    fhMeas ->Write();

  if (fhGene)
    fhGene ->Write();

  if (fhCorr)
    fhCorr->Write();

  gDirectory->cd("..");
}

//____________________________________________________________________
void AliCorrectionMatrix::DrawHistograms(const Char_t* canvasName)
{
  //
  // draws all histograms on one TCanvas
  // if canvasName is 0 the name of this object is taken
  //

  if (!canvasName)
    canvasName = Form("%s_canvas", GetName());

  TCanvas* canvas = new TCanvas(canvasName, GetTitle(), 1200, 400);
  canvas->Divide(3, 1);

  canvas->cd(1);
  if (fhMeas)
    fhMeas->Draw("COLZ");

  canvas->cd(2);
  if (fhGene)
  {
    // work around ROOT bug #22011
    if (fhGene->GetEntries() == 0)
      fhGene->SetEntries(1);
    fhGene->Draw("COLZ");
  }

  canvas->cd(3);
  if (fhCorr)
    fhCorr->Draw("COLZ");
}

//____________________________________________________________________
void AliCorrectionMatrix::ReduceInformation()
{
  // this function deletes the measured and generated histograms to reduce the amount of data
  // in memory

  if (fhMeas)
  {
    delete fhMeas;
    fhMeas = 0;
  }

  if (fhGene)
  {
    delete fhGene;
    fhGene = 0;
  }
}

//____________________________________________________________________
void AliCorrectionMatrix::Reset(Option_t* option)
{
  // resets the histograms

  if (fhGene)
    fhGene->Reset(option);

  if (fhMeas)
    fhMeas->Reset(option);

  if (fhCorr)
    fhCorr->Reset(option);
}

//____________________________________________________________________
void AliCorrectionMatrix::SetCorrectionToUnity()
{
  // sets the correction matrix to unity

  if (!fhCorr)
    return;

  for (Int_t x=0; x<=fhCorr->GetNbinsX()+1; ++x)
    for (Int_t y=0; y<=fhCorr->GetNbinsY()+1; ++y)
      for (Int_t z=0; z<=fhCorr->GetNbinsZ()+1; ++z)
      {
        fhCorr->SetBinContent(x, y, z, 1);
        fhCorr->SetBinError(x, y, z, 0);
      }
}

//____________________________________________________________________
void AliCorrectionMatrix::Scale(Double_t factor)
{
  // scales the generated and measured histogram with the given factor

  Printf("Scaling histograms with %f", factor);

  fhMeas->Scale(factor);
  fhGene->Scale(factor);
}

//____________________________________________________________________
void AliCorrectionMatrix::ResetErrorsOnCorrections()
{
  // set the errors on the correction matrix to 0

  if (!fhCorr)
    return;

  for (Int_t x=0; x<=fhCorr->GetNbinsX()+1; ++x)
    for (Int_t y=0; y<=fhCorr->GetNbinsY()+1; ++y)
      for (Int_t z=0; z<=fhCorr->GetNbinsZ()+1; ++z)
        fhCorr->SetBinError(x, y, z, 0);
}
 AliCorrectionMatrix.cxx:1
 AliCorrectionMatrix.cxx:2
 AliCorrectionMatrix.cxx:3
 AliCorrectionMatrix.cxx:4
 AliCorrectionMatrix.cxx:5
 AliCorrectionMatrix.cxx:6
 AliCorrectionMatrix.cxx:7
 AliCorrectionMatrix.cxx:8
 AliCorrectionMatrix.cxx:9
 AliCorrectionMatrix.cxx:10
 AliCorrectionMatrix.cxx:11
 AliCorrectionMatrix.cxx:12
 AliCorrectionMatrix.cxx:13
 AliCorrectionMatrix.cxx:14
 AliCorrectionMatrix.cxx:15
 AliCorrectionMatrix.cxx:16
 AliCorrectionMatrix.cxx:17
 AliCorrectionMatrix.cxx:18
 AliCorrectionMatrix.cxx:19
 AliCorrectionMatrix.cxx:20
 AliCorrectionMatrix.cxx:21
 AliCorrectionMatrix.cxx:22
 AliCorrectionMatrix.cxx:23
 AliCorrectionMatrix.cxx:24
 AliCorrectionMatrix.cxx:25
 AliCorrectionMatrix.cxx:26
 AliCorrectionMatrix.cxx:27
 AliCorrectionMatrix.cxx:28
 AliCorrectionMatrix.cxx:29
 AliCorrectionMatrix.cxx:30
 AliCorrectionMatrix.cxx:31
 AliCorrectionMatrix.cxx:32
 AliCorrectionMatrix.cxx:33
 AliCorrectionMatrix.cxx:34
 AliCorrectionMatrix.cxx:35
 AliCorrectionMatrix.cxx:36
 AliCorrectionMatrix.cxx:37
 AliCorrectionMatrix.cxx:38
 AliCorrectionMatrix.cxx:39
 AliCorrectionMatrix.cxx:40
 AliCorrectionMatrix.cxx:41
 AliCorrectionMatrix.cxx:42
 AliCorrectionMatrix.cxx:43
 AliCorrectionMatrix.cxx:44
 AliCorrectionMatrix.cxx:45
 AliCorrectionMatrix.cxx:46
 AliCorrectionMatrix.cxx:47
 AliCorrectionMatrix.cxx:48
 AliCorrectionMatrix.cxx:49
 AliCorrectionMatrix.cxx:50
 AliCorrectionMatrix.cxx:51
 AliCorrectionMatrix.cxx:52
 AliCorrectionMatrix.cxx:53
 AliCorrectionMatrix.cxx:54
 AliCorrectionMatrix.cxx:55
 AliCorrectionMatrix.cxx:56
 AliCorrectionMatrix.cxx:57
 AliCorrectionMatrix.cxx:58
 AliCorrectionMatrix.cxx:59
 AliCorrectionMatrix.cxx:60
 AliCorrectionMatrix.cxx:61
 AliCorrectionMatrix.cxx:62
 AliCorrectionMatrix.cxx:63
 AliCorrectionMatrix.cxx:64
 AliCorrectionMatrix.cxx:65
 AliCorrectionMatrix.cxx:66
 AliCorrectionMatrix.cxx:67
 AliCorrectionMatrix.cxx:68
 AliCorrectionMatrix.cxx:69
 AliCorrectionMatrix.cxx:70
 AliCorrectionMatrix.cxx:71
 AliCorrectionMatrix.cxx:72
 AliCorrectionMatrix.cxx:73
 AliCorrectionMatrix.cxx:74
 AliCorrectionMatrix.cxx:75
 AliCorrectionMatrix.cxx:76
 AliCorrectionMatrix.cxx:77
 AliCorrectionMatrix.cxx:78
 AliCorrectionMatrix.cxx:79
 AliCorrectionMatrix.cxx:80
 AliCorrectionMatrix.cxx:81
 AliCorrectionMatrix.cxx:82
 AliCorrectionMatrix.cxx:83
 AliCorrectionMatrix.cxx:84
 AliCorrectionMatrix.cxx:85
 AliCorrectionMatrix.cxx:86
 AliCorrectionMatrix.cxx:87
 AliCorrectionMatrix.cxx:88
 AliCorrectionMatrix.cxx:89
 AliCorrectionMatrix.cxx:90
 AliCorrectionMatrix.cxx:91
 AliCorrectionMatrix.cxx:92
 AliCorrectionMatrix.cxx:93
 AliCorrectionMatrix.cxx:94
 AliCorrectionMatrix.cxx:95
 AliCorrectionMatrix.cxx:96
 AliCorrectionMatrix.cxx:97
 AliCorrectionMatrix.cxx:98
 AliCorrectionMatrix.cxx:99
 AliCorrectionMatrix.cxx:100
 AliCorrectionMatrix.cxx:101
 AliCorrectionMatrix.cxx:102
 AliCorrectionMatrix.cxx:103
 AliCorrectionMatrix.cxx:104
 AliCorrectionMatrix.cxx:105
 AliCorrectionMatrix.cxx:106
 AliCorrectionMatrix.cxx:107
 AliCorrectionMatrix.cxx:108
 AliCorrectionMatrix.cxx:109
 AliCorrectionMatrix.cxx:110
 AliCorrectionMatrix.cxx:111
 AliCorrectionMatrix.cxx:112
 AliCorrectionMatrix.cxx:113
 AliCorrectionMatrix.cxx:114
 AliCorrectionMatrix.cxx:115
 AliCorrectionMatrix.cxx:116
 AliCorrectionMatrix.cxx:117
 AliCorrectionMatrix.cxx:118
 AliCorrectionMatrix.cxx:119
 AliCorrectionMatrix.cxx:120
 AliCorrectionMatrix.cxx:121
 AliCorrectionMatrix.cxx:122
 AliCorrectionMatrix.cxx:123
 AliCorrectionMatrix.cxx:124
 AliCorrectionMatrix.cxx:125
 AliCorrectionMatrix.cxx:126
 AliCorrectionMatrix.cxx:127
 AliCorrectionMatrix.cxx:128
 AliCorrectionMatrix.cxx:129
 AliCorrectionMatrix.cxx:130
 AliCorrectionMatrix.cxx:131
 AliCorrectionMatrix.cxx:132
 AliCorrectionMatrix.cxx:133
 AliCorrectionMatrix.cxx:134
 AliCorrectionMatrix.cxx:135
 AliCorrectionMatrix.cxx:136
 AliCorrectionMatrix.cxx:137
 AliCorrectionMatrix.cxx:138
 AliCorrectionMatrix.cxx:139
 AliCorrectionMatrix.cxx:140
 AliCorrectionMatrix.cxx:141
 AliCorrectionMatrix.cxx:142
 AliCorrectionMatrix.cxx:143
 AliCorrectionMatrix.cxx:144
 AliCorrectionMatrix.cxx:145
 AliCorrectionMatrix.cxx:146
 AliCorrectionMatrix.cxx:147
 AliCorrectionMatrix.cxx:148
 AliCorrectionMatrix.cxx:149
 AliCorrectionMatrix.cxx:150
 AliCorrectionMatrix.cxx:151
 AliCorrectionMatrix.cxx:152
 AliCorrectionMatrix.cxx:153
 AliCorrectionMatrix.cxx:154
 AliCorrectionMatrix.cxx:155
 AliCorrectionMatrix.cxx:156
 AliCorrectionMatrix.cxx:157
 AliCorrectionMatrix.cxx:158
 AliCorrectionMatrix.cxx:159
 AliCorrectionMatrix.cxx:160
 AliCorrectionMatrix.cxx:161
 AliCorrectionMatrix.cxx:162
 AliCorrectionMatrix.cxx:163
 AliCorrectionMatrix.cxx:164
 AliCorrectionMatrix.cxx:165
 AliCorrectionMatrix.cxx:166
 AliCorrectionMatrix.cxx:167
 AliCorrectionMatrix.cxx:168
 AliCorrectionMatrix.cxx:169
 AliCorrectionMatrix.cxx:170
 AliCorrectionMatrix.cxx:171
 AliCorrectionMatrix.cxx:172
 AliCorrectionMatrix.cxx:173
 AliCorrectionMatrix.cxx:174
 AliCorrectionMatrix.cxx:175
 AliCorrectionMatrix.cxx:176
 AliCorrectionMatrix.cxx:177
 AliCorrectionMatrix.cxx:178
 AliCorrectionMatrix.cxx:179
 AliCorrectionMatrix.cxx:180
 AliCorrectionMatrix.cxx:181
 AliCorrectionMatrix.cxx:182
 AliCorrectionMatrix.cxx:183
 AliCorrectionMatrix.cxx:184
 AliCorrectionMatrix.cxx:185
 AliCorrectionMatrix.cxx:186
 AliCorrectionMatrix.cxx:187
 AliCorrectionMatrix.cxx:188
 AliCorrectionMatrix.cxx:189
 AliCorrectionMatrix.cxx:190
 AliCorrectionMatrix.cxx:191
 AliCorrectionMatrix.cxx:192
 AliCorrectionMatrix.cxx:193
 AliCorrectionMatrix.cxx:194
 AliCorrectionMatrix.cxx:195
 AliCorrectionMatrix.cxx:196
 AliCorrectionMatrix.cxx:197
 AliCorrectionMatrix.cxx:198
 AliCorrectionMatrix.cxx:199
 AliCorrectionMatrix.cxx:200
 AliCorrectionMatrix.cxx:201
 AliCorrectionMatrix.cxx:202
 AliCorrectionMatrix.cxx:203
 AliCorrectionMatrix.cxx:204
 AliCorrectionMatrix.cxx:205
 AliCorrectionMatrix.cxx:206
 AliCorrectionMatrix.cxx:207
 AliCorrectionMatrix.cxx:208
 AliCorrectionMatrix.cxx:209
 AliCorrectionMatrix.cxx:210
 AliCorrectionMatrix.cxx:211
 AliCorrectionMatrix.cxx:212
 AliCorrectionMatrix.cxx:213
 AliCorrectionMatrix.cxx:214
 AliCorrectionMatrix.cxx:215
 AliCorrectionMatrix.cxx:216
 AliCorrectionMatrix.cxx:217
 AliCorrectionMatrix.cxx:218
 AliCorrectionMatrix.cxx:219
 AliCorrectionMatrix.cxx:220
 AliCorrectionMatrix.cxx:221
 AliCorrectionMatrix.cxx:222
 AliCorrectionMatrix.cxx:223
 AliCorrectionMatrix.cxx:224
 AliCorrectionMatrix.cxx:225
 AliCorrectionMatrix.cxx:226
 AliCorrectionMatrix.cxx:227
 AliCorrectionMatrix.cxx:228
 AliCorrectionMatrix.cxx:229
 AliCorrectionMatrix.cxx:230
 AliCorrectionMatrix.cxx:231
 AliCorrectionMatrix.cxx:232
 AliCorrectionMatrix.cxx:233
 AliCorrectionMatrix.cxx:234
 AliCorrectionMatrix.cxx:235
 AliCorrectionMatrix.cxx:236
 AliCorrectionMatrix.cxx:237
 AliCorrectionMatrix.cxx:238
 AliCorrectionMatrix.cxx:239
 AliCorrectionMatrix.cxx:240
 AliCorrectionMatrix.cxx:241
 AliCorrectionMatrix.cxx:242
 AliCorrectionMatrix.cxx:243
 AliCorrectionMatrix.cxx:244
 AliCorrectionMatrix.cxx:245
 AliCorrectionMatrix.cxx:246
 AliCorrectionMatrix.cxx:247
 AliCorrectionMatrix.cxx:248
 AliCorrectionMatrix.cxx:249
 AliCorrectionMatrix.cxx:250
 AliCorrectionMatrix.cxx:251
 AliCorrectionMatrix.cxx:252
 AliCorrectionMatrix.cxx:253
 AliCorrectionMatrix.cxx:254
 AliCorrectionMatrix.cxx:255
 AliCorrectionMatrix.cxx:256
 AliCorrectionMatrix.cxx:257
 AliCorrectionMatrix.cxx:258
 AliCorrectionMatrix.cxx:259
 AliCorrectionMatrix.cxx:260
 AliCorrectionMatrix.cxx:261
 AliCorrectionMatrix.cxx:262
 AliCorrectionMatrix.cxx:263
 AliCorrectionMatrix.cxx:264
 AliCorrectionMatrix.cxx:265
 AliCorrectionMatrix.cxx:266
 AliCorrectionMatrix.cxx:267
 AliCorrectionMatrix.cxx:268
 AliCorrectionMatrix.cxx:269
 AliCorrectionMatrix.cxx:270
 AliCorrectionMatrix.cxx:271
 AliCorrectionMatrix.cxx:272
 AliCorrectionMatrix.cxx:273
 AliCorrectionMatrix.cxx:274
 AliCorrectionMatrix.cxx:275
 AliCorrectionMatrix.cxx:276
 AliCorrectionMatrix.cxx:277
 AliCorrectionMatrix.cxx:278
 AliCorrectionMatrix.cxx:279
 AliCorrectionMatrix.cxx:280
 AliCorrectionMatrix.cxx:281
 AliCorrectionMatrix.cxx:282
 AliCorrectionMatrix.cxx:283
 AliCorrectionMatrix.cxx:284
 AliCorrectionMatrix.cxx:285
 AliCorrectionMatrix.cxx:286
 AliCorrectionMatrix.cxx:287
 AliCorrectionMatrix.cxx:288
 AliCorrectionMatrix.cxx:289
 AliCorrectionMatrix.cxx:290
 AliCorrectionMatrix.cxx:291
 AliCorrectionMatrix.cxx:292
 AliCorrectionMatrix.cxx:293
 AliCorrectionMatrix.cxx:294
 AliCorrectionMatrix.cxx:295
 AliCorrectionMatrix.cxx:296
 AliCorrectionMatrix.cxx:297
 AliCorrectionMatrix.cxx:298
 AliCorrectionMatrix.cxx:299
 AliCorrectionMatrix.cxx:300
 AliCorrectionMatrix.cxx:301
 AliCorrectionMatrix.cxx:302
 AliCorrectionMatrix.cxx:303
 AliCorrectionMatrix.cxx:304
 AliCorrectionMatrix.cxx:305
 AliCorrectionMatrix.cxx:306
 AliCorrectionMatrix.cxx:307
 AliCorrectionMatrix.cxx:308
 AliCorrectionMatrix.cxx:309
 AliCorrectionMatrix.cxx:310
 AliCorrectionMatrix.cxx:311
 AliCorrectionMatrix.cxx:312
 AliCorrectionMatrix.cxx:313
 AliCorrectionMatrix.cxx:314
 AliCorrectionMatrix.cxx:315
 AliCorrectionMatrix.cxx:316
 AliCorrectionMatrix.cxx:317
 AliCorrectionMatrix.cxx:318
 AliCorrectionMatrix.cxx:319
 AliCorrectionMatrix.cxx:320
 AliCorrectionMatrix.cxx:321
 AliCorrectionMatrix.cxx:322
 AliCorrectionMatrix.cxx:323
 AliCorrectionMatrix.cxx:324
 AliCorrectionMatrix.cxx:325
 AliCorrectionMatrix.cxx:326
 AliCorrectionMatrix.cxx:327
 AliCorrectionMatrix.cxx:328
 AliCorrectionMatrix.cxx:329
 AliCorrectionMatrix.cxx:330
 AliCorrectionMatrix.cxx:331
 AliCorrectionMatrix.cxx:332
 AliCorrectionMatrix.cxx:333
 AliCorrectionMatrix.cxx:334
 AliCorrectionMatrix.cxx:335
 AliCorrectionMatrix.cxx:336
 AliCorrectionMatrix.cxx:337
 AliCorrectionMatrix.cxx:338
 AliCorrectionMatrix.cxx:339
 AliCorrectionMatrix.cxx:340
 AliCorrectionMatrix.cxx:341
 AliCorrectionMatrix.cxx:342
 AliCorrectionMatrix.cxx:343
 AliCorrectionMatrix.cxx:344
 AliCorrectionMatrix.cxx:345
 AliCorrectionMatrix.cxx:346
 AliCorrectionMatrix.cxx:347
 AliCorrectionMatrix.cxx:348
 AliCorrectionMatrix.cxx:349
 AliCorrectionMatrix.cxx:350
 AliCorrectionMatrix.cxx:351
 AliCorrectionMatrix.cxx:352
 AliCorrectionMatrix.cxx:353
 AliCorrectionMatrix.cxx:354
 AliCorrectionMatrix.cxx:355
 AliCorrectionMatrix.cxx:356
 AliCorrectionMatrix.cxx:357
 AliCorrectionMatrix.cxx:358
 AliCorrectionMatrix.cxx:359
 AliCorrectionMatrix.cxx:360
 AliCorrectionMatrix.cxx:361
 AliCorrectionMatrix.cxx:362
 AliCorrectionMatrix.cxx:363
 AliCorrectionMatrix.cxx:364
 AliCorrectionMatrix.cxx:365
 AliCorrectionMatrix.cxx:366
 AliCorrectionMatrix.cxx:367
 AliCorrectionMatrix.cxx:368
 AliCorrectionMatrix.cxx:369
 AliCorrectionMatrix.cxx:370
 AliCorrectionMatrix.cxx:371
 AliCorrectionMatrix.cxx:372
 AliCorrectionMatrix.cxx:373
 AliCorrectionMatrix.cxx:374
 AliCorrectionMatrix.cxx:375
 AliCorrectionMatrix.cxx:376
 AliCorrectionMatrix.cxx:377
 AliCorrectionMatrix.cxx:378
 AliCorrectionMatrix.cxx:379
 AliCorrectionMatrix.cxx:380
 AliCorrectionMatrix.cxx:381
 AliCorrectionMatrix.cxx:382
 AliCorrectionMatrix.cxx:383
 AliCorrectionMatrix.cxx:384
 AliCorrectionMatrix.cxx:385
 AliCorrectionMatrix.cxx:386
 AliCorrectionMatrix.cxx:387
 AliCorrectionMatrix.cxx:388