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.                  *
 **************************************************************************/
// After-burner for the EMCAL cluster unfolding algorithm
//
// Input: TObjArray  *clusArray -- array of AliVClusters;
//        AliVCaloCells  *cellsEMCAL -- EMCAL cells.
//
// Output is appended to clusArray, the original (unfolded or not) clusters
// are deleted or moved to another position in clusArray.
//
// If you want to use particular geometry, you must initialize it _before_
// creating AliEMCALAfterBurnerUF instance. Add this or similar line to the
// initialization section:
//
//    AliEMCALGeometry::GetInstance("EMCAL_FIRSTYEARV1");
//
// gGeoManager must be initialized for this code to work! Do it yourself or
// provide geometry.root file in the current directory so that
// AliEMCALAfterBurnerUF will take it by itself.
// How to use:
//
//   // add this lines to the initialization section of your analysis
//   AliEMCALAfterBurnerUF *abuf = new AliEMCALAfterBurnerUF();
//   TObjArray *clusArray = new TObjArray(100);
//
//
//   AliVEvent *event = InputEvent();
//   AliVCaloCells *cellsEMCAL = event->GetEMCALCells();
//
//   for (Int_t i = 0; i < event->GetNumberOfCaloClusters(); i++)
//   {
//     AliVCluster *clus = event->GetCaloCluster(i);
//
//     clusArray->Add(clus->Clone());   // NOTE _CLONE_ in this line
//   }
//
//   abuf->UnfoldClusters(clusArray, cellsEMCAL);
//
//   // do an analysis with clusArray
//   // ....
//
//   // prevent memory leak
//   clusArray->Delete();
//
//----
//  Author: Olga Driga (SUBATECH)

// --- ROOT system ---
#include <TObjArray.h>
#include <TClonesArray.h>
#include <TGeoManager.h>

// --- Standard library --

// --- AliRoot header files ---
#include <AliEMCALAfterBurnerUF.h>
#include <AliEMCALGeometry.h>
#include <AliEMCALUnfolding.h>
#include <AliAODCaloCluster.h>
#include <AliVCaloCells.h>
#include <AliEMCALRecPoint.h>
#include <AliEMCALDigit.h>

ClassImp(AliEMCALAfterBurnerUF)

//------------------------------------------------------------------------
AliEMCALAfterBurnerUF::AliEMCALAfterBurnerUF():
  fGeom(NULL),
  fLogWeight(4.5),      // correct?
  fECALocMaxCut(0.03),  // value suggested by Adam
  fMinECut(0.01),
  fRecPoints(NULL),
  fDigitsArr(NULL),
  fClusterUnfolding(NULL)
{
  // Use this constructor, if unsure

  Init();
}

//------------------------------------------------------------------------
AliEMCALAfterBurnerUF::AliEMCALAfterBurnerUF(Float_t logWeight, Float_t ecaLocMaxCut, Float_t minECut):
  fGeom(NULL),
  fLogWeight(logWeight),
  fECALocMaxCut(ecaLocMaxCut),
  fMinECut(minECut),
  fRecPoints(NULL),
  fDigitsArr(NULL),
  fClusterUnfolding(NULL)
{
  // This constructor allows to set parameters
  // Recommended values:
  //   Float_t logWeight = 4.5, ECALocMaxCut = 0.03

  Init();
}

//------------------------------------------------------------------------
void AliEMCALAfterBurnerUF::Init()
{
  // After-burner initialization
  // Imports geometry.root (if required), creates unfolding class instance
  //
  // TODO: geometry.root does not allow to use the method AliEMCALRecPoint::EvalAll();
  //       for this to work, the OCDB geometry must be imported instead

  if (!gGeoManager)
    Warning("AliEMCALAfterBurnerUF::Init","GeoManager not found, please import the geometry.root file or pass to the geometry the misalignment matrices");
//    TGeoManager::Import("geometry.root");

  // required for global cluster position recalculation
  if (!gGeoManager)
    Info("AliEMCALAfterBurnerUF::Init", "gGeoManager was not set, be careful");

  // initialize geometry, if not yet initialized
  if (!AliEMCALGeometry::GetInstance()) {
    Warning("AliEMCALAfterBurnerUF::Init", "AliEMCALGeometry is not yet initialized. Initializing with EMCAL_COMPLETEV1");
    AliEMCALGeometry::GetInstance("EMCAL_COMPLETEV1");
  }

  // AliEMCALRecPoint is using exactly this call
  fGeom = AliEMCALGeometry::GetInstance();
  if (!fGeom)
    Fatal("AliEMCALAfterBurnerUF::AliEMCALAfterBurnerUF", "could not get EMCAL geometry");

  fClusterUnfolding = new AliEMCALUnfolding(fGeom);
  fClusterUnfolding->SetECALocalMaxCut(fECALocMaxCut);
  fClusterUnfolding->SetThreshold(fMinECut); 
  
  // clusters --> recPoints, cells --> digits and back ;)
  fRecPoints = new TObjArray(100);
  fDigitsArr = new TClonesArray("AliEMCALDigit",1152);
}

//------------------------------------------------------------------------
AliEMCALAfterBurnerUF::~AliEMCALAfterBurnerUF()
{
  //
  // destructor
  //

  if (fClusterUnfolding) delete fClusterUnfolding;

  if (fRecPoints) {
    fRecPoints->Delete();
    delete fRecPoints;
  }
  if (fDigitsArr) {
    fDigitsArr->Clear("C");
    delete fDigitsArr;
  }
}

//------------------------------------------------------------------------
void AliEMCALAfterBurnerUF::Clear()
{
  //Clean the arrays
  
  if (fRecPoints) fRecPoints->Delete();  // do not Clear(), it leaks, why?
  if (fDigitsArr) fDigitsArr->Clear("C");
  
}
//------------------------------------------------------------------------
void AliEMCALAfterBurnerUF::RecPoints2Clusters(TObjArray *clusArray)
{
  // Restore clusters from recPoints
  // Cluster energy, global position, cells and their amplitude fractions are restored
  //
  // TODO: restore time and other parameters

  for(Int_t i = 0; i < fRecPoints->GetEntriesFast(); i++)
  {
    AliEMCALRecPoint *recPoint = (AliEMCALRecPoint*) fRecPoints->At(i);

    const Int_t ncells = recPoint->GetMultiplicity();
    Int_t ncellsTrue = 0;

    // cells and their amplitude fractions
    UShort_t absIds[ncells];  // NOTE: unfolding must not give recPoints with no cells!
    Double32_t ratios[ncells];

    for (Int_t c = 0; c < ncells; c++) {
      AliEMCALDigit *digit = (AliEMCALDigit*) fDigitsArr->At(recPoint->GetDigitsList()[c]);

      absIds[ncellsTrue] = digit->GetId();
      ratios[ncellsTrue] = recPoint->GetEnergiesList()[c]/digit->GetAmplitude();

      if (ratios[ncellsTrue] > 0.001) ncellsTrue++;
    }

    if (ncellsTrue < 1) {
      Warning("AliEMCALAfterBurnerUF::RecPoints2Clusters", "skipping cluster with no cells");
      continue;
    }

    TVector3 gpos;
    Float_t g[3];

    // calculate new cluster position
    recPoint->EvalGlobalPosition(fLogWeight, fDigitsArr);
    recPoint->GetGlobalPosition(gpos);
    gpos.GetXYZ(g);

    // create a new cluster
    AliAODCaloCluster *clus = new AliAODCaloCluster();
    clus->SetType(AliVCluster::kEMCALClusterv1);
    clus->SetE(recPoint->GetEnergy());
    clus->SetPosition(g);
    clus->SetNCells(ncellsTrue);
    clus->SetCellsAbsId(absIds);
    clus->SetCellsAmplitudeFraction(ratios);
    // TODO: time not stored
    // TODO: some other properties not stored

    clusArray->Add(clus);
  } // recPoints loop

}

//------------------------------------------------------------------------
void AliEMCALAfterBurnerUF::UnfoldClusters(TObjArray *clusArray, AliVCaloCells *cellsEMCAL)
{
  // Unfolds clusters.
  //
  // Input: TObjArray of clusters, EMCAL cells.
  // Output is added to the same array, original clusters are _deleted_ or moved to another position.

  Int_t ndigits = 0;

  Int_t nclus = clusArray->GetEntriesFast();

  /* Fill recPoints with digits
  */
  for (Int_t i = 0; i < nclus; i++)
  {
    AliVCluster *clus = (AliVCluster*) clusArray->At(i);
    if (!clus->IsEMCAL()) continue;

    // new recPoint
    AliEMCALRecPoint *recPoint = new AliEMCALRecPoint("");
    recPoint->SetClusterType(AliVCluster::kEMCALClusterv1);
    fRecPoints->Add(recPoint);

    // fill digits
    for (Int_t c = 0; c < clus->GetNCells(); c++) {
      Int_t absId = clus->GetCellAbsId(c);
      Double_t amp = cellsEMCAL->GetCellAmplitude(absId);
      Double_t time = cellsEMCAL->GetCellTime(absId);

      // NOTE: it is easy to include cells recalibration here:
      // amp *= factor;

      AliEMCALDigit *digit = (AliEMCALDigit*) fDigitsArr->New(ndigits);

      digit->SetId(absId);
      digit->SetAmplitude(amp);
      digit->SetTime(time);
      digit->SetTimeR(time);
      digit->SetIndexInList(ndigits);

      recPoint->AddDigit(*digit, amp, kFALSE);

      ndigits++;
    }

    // this cluster will be substituted with the result of unfolding
    clusArray->RemoveAt(i);
    delete clus;
  } // cluster loop


  /* Peform unfolding
  */
  fClusterUnfolding->SetInput(fRecPoints->GetEntriesFast(), fRecPoints, fDigitsArr);
  fClusterUnfolding->MakeUnfolding();

  /* Restore clusters from recPoints.
  */
  RecPoints2Clusters(clusArray);

  // clean up
  fRecPoints->Delete(); // do not Clear(), it leaks, why?
  fDigitsArr->Clear("C");

  clusArray->Compress();

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