ROOT logo
// $Id$
//
// Class to put cells into trigger patches
//
// Author: M. Verweij

#include <TClonesArray.h>
#include <TRandom3.h>
#include <TProfile.h>
#include <TH3F.h>

#include "AliAnalysisManager.h"
#include "AliLog.h"
#include "AliEMCALGeometry.h"
#include "AliEmcalTriggerPatchInfo.h"
#include "AliEmcalTriggerBitConfig.h"

#include "AliEmcalPatchFromCellMaker.h"

ClassImp(AliEmcalPatchFromCellMaker)

//________________________________________________________________________
AliEmcalPatchFromCellMaker::AliEmcalPatchFromCellMaker() : 
  AliAnalysisTaskEmcal("AliEmcalPatchFromCellMaker",kTRUE),
  fCaloTriggersOutName("EmcalPatches32x32"),
  fCaloTriggersOut(0),
  fPatchDim(32),
  fMinCellE(0.05),
  fCellTimeMin(485e-9),
  fCellTimeMax(685e-9),
  fL1Slide(0),
  fTriggerBitConfig(0x0),
  fh3EEtaPhiCell(0),
  fh2CellEnergyVsTime(0),
  fh1CellEnergySum(0)
{
  // Constructor.
 for (Int_t i = 0; i < kPatchCols; i++) {
    for (Int_t j = 0; j < kPatchRows; j++) {
      fPatchADCSimple[i][j] = 0.;
      fPatchESimple[i][j] = 0.;
    }
 }

  SetMakeGeneralHistograms(kTRUE);
}

//________________________________________________________________________
AliEmcalPatchFromCellMaker::AliEmcalPatchFromCellMaker(const char *name) : 
  AliAnalysisTaskEmcal(name,kTRUE),
  fCaloTriggersOutName("EmcalPatches32x32"),
  fCaloTriggersOut(0),
  fPatchDim(32),
  fMinCellE(0.05),
  fCellTimeMin(485e-9),
  fCellTimeMax(685e-9),
  fL1Slide(0),
  fTriggerBitConfig(0x0),
  fh3EEtaPhiCell(0),
  fh2CellEnergyVsTime(0),
  fh1CellEnergySum(0)
{
  // Constructor.
 for (Int_t i = 0; i < kPatchCols; i++) {
    for (Int_t j = 0; j < kPatchRows; j++) {
      fPatchADCSimple[i][j] = 0.;
      fPatchESimple[i][j] = 0.;
    }
 }

  SetMakeGeneralHistograms(kTRUE);
}

//________________________________________________________________________
AliEmcalPatchFromCellMaker::~AliEmcalPatchFromCellMaker()
{
  // Destructor.
}

//________________________________________________________________________
void AliEmcalPatchFromCellMaker::ExecOnce() 
{
  // Init the analysis.

  AliAnalysisTaskEmcal::ExecOnce();

  if (!fInitialized)
    return;

  if (!fCaloTriggersOutName.IsNull()) {
    fCaloTriggersOut = new TClonesArray("AliEmcalTriggerPatchInfo");
    fCaloTriggersOut->SetName(fCaloTriggersOutName);

    if (!(InputEvent()->FindListObject(fCaloTriggersOutName))) {
      InputEvent()->AddObject(fCaloTriggersOut);
    }
    else {
      fInitialized = kFALSE;
      AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fCaloTriggersOutName.Data()));
      return;
    }
  }

  if(!fTriggerBitConfig)
    fTriggerBitConfig = new AliEmcalTriggerBitConfigNew();

}

//________________________________________________________________________
void AliEmcalPatchFromCellMaker::UserCreateOutputObjects()
{
  // Create user output.

  AliAnalysisTaskEmcal::UserCreateOutputObjects();

  Int_t fgkNPhiBins = 18*8;
  Float_t kMinPhi   = 0.;
  Float_t kMaxPhi   = 2.*TMath::Pi();
  Double_t *binsPhi = new Double_t[fgkNPhiBins+1];
  for(Int_t i=0; i<=fgkNPhiBins; i++) binsPhi[i]=(Double_t)kMinPhi + (kMaxPhi-kMinPhi)/fgkNPhiBins*(Double_t)i ;

  Int_t fgkNEtaBins = 100;
  Float_t fgkEtaMin = -1.;
  Float_t fgkEtaMax =  1.;
  Double_t *binsEta=new Double_t[fgkNEtaBins+1];
  for(Int_t i=0; i<=fgkNEtaBins; i++) binsEta[i]=(Double_t)fgkEtaMin + (fgkEtaMax-fgkEtaMin)/fgkNEtaBins*(Double_t)i ;

  Int_t fgkNTimeBins = 600;
  Float_t kMinTime   = -200.;
  Float_t kMaxTime   = 1000;
  Double_t *binsTime = new Double_t[fgkNTimeBins+1];
  for(Int_t i=0; i<=fgkNTimeBins; i++) binsTime[i]=(Double_t)kMinTime + (kMaxTime-kMinTime)/fgkNTimeBins*(Double_t)i ;

  Double_t enBinEdges[3][2];
  enBinEdges[0][0] = 1.; //10 bins
  enBinEdges[0][1] = 0.1;
  enBinEdges[1][0] = 5.; //8 bins
  enBinEdges[1][1] = 0.5;
  enBinEdges[2][0] = 100.;//95 bins
  enBinEdges[2][1] = 1.;

  const Float_t enmin1 =  0;
  const Float_t enmax1 =  enBinEdges[0][0];
  const Float_t enmin2 =  enmax1 ;
  const Float_t enmax2 =  enBinEdges[1][0];
  const Float_t enmin3 =  enmax2 ;
  const Float_t enmax3 =  enBinEdges[2][0];//fgkEnMax;
  const Int_t nbin11 = (int)((enmax1-enmin1)/enBinEdges[0][1]);
  const Int_t nbin12 = (int)((enmax2-enmin2)/enBinEdges[1][1])+nbin11;
  const Int_t nbin13 = (int)((enmax3-enmin3)/enBinEdges[2][1])+nbin12;

  Int_t fgkNEnBins=nbin13;
  Double_t *binsEn=new Double_t[fgkNEnBins+1];
  for(Int_t i=0; i<=fgkNEnBins; i++) {
    if(i<=nbin11) binsEn[i]=(Double_t)enmin1 + (enmax1-enmin1)/nbin11*(Double_t)i ;
    if(i<=nbin12 && i>nbin11) binsEn[i]=(Double_t)enmin2 + (enmax2-enmin2)/(nbin12-nbin11)*((Double_t)i-(Double_t)nbin11) ;
    if(i<=nbin13 && i>nbin12) binsEn[i]=(Double_t)enmin3 + (enmax3-enmin3)/(nbin13-nbin12)*((Double_t)i-(Double_t)nbin12) ;
  }

  fh3EEtaPhiCell = new TH3F("fh3EEtaPhiCell","fh3EEtaPhiCell;E_{cell};#eta;#phi",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
  fOutput->Add(fh3EEtaPhiCell);

  fh2CellEnergyVsTime = new TH2F("fh2CellEnergyVsTime","fh2CellEnergyVsTime;E_{cell};time",fgkNEnBins,binsEn,fgkNTimeBins,binsTime);
  fOutput->Add(fh2CellEnergyVsTime);

  fh1CellEnergySum = new TH1F("fh1CellEnergySum","fh1CellEnergySum;E_{cell};time",fgkNEnBins,binsEn);
  fOutput->Add(fh1CellEnergySum);

  PostData(1, fOutput); // Post data for ALL output slots > 0 here.

  if(binsEn)                delete [] binsEn;
  if(binsPhi)               delete [] binsPhi;
  if(binsEta)               delete [] binsEta;
  if(binsTime)              delete [] binsTime;
}

//________________________________________________________________________
Bool_t AliEmcalPatchFromCellMaker::Run() 
{
  // Main loop, called for each event.
  
  fCaloTriggersOut->Delete();

  if (!fCaloCells) {
    AliError(Form("Calo cells container %s not available.", fCaloCellsName.Data()));
    return kFALSE;
  }

 for (Int_t i = 0; i < kPatchCols; i++) {
    for (Int_t j = 0; j < kPatchRows; j++) {
      fPatchADCSimple[i][j] = 0.;
      fPatchESimple[i][j] = 0.;
    }
 }

  if(!FillPatchADCSimple()) {
    AliError(Form("%s Could not create simple ADC patches",GetName()));
    return kFALSE;
  }

  RunSimpleOfflineTrigger();

  Double_t sum = 0.;
  for (Int_t i = 0; i < kPatchCols; i++) {
    for (Int_t j = 0; j < kPatchRows; j++) {
      sum+=fPatchESimple[i][j];
    }
  }

  return kTRUE;
}

//________________________________________________________________________
Bool_t AliEmcalPatchFromCellMaker::FillPatchADCSimple()
{

  // fill the array for offline trigger processing

  // fill the patch ADCs from cells
  Double_t sum = 0.;
  Int_t nCell = fCaloCells->GetNumberOfCells();
  for(Int_t iCell = 0; iCell < nCell; ++iCell) {
    // get the cell info, based in index in array
    Short_t cellId = fCaloCells->GetCellNumber(iCell);

    Double_t cellT = fCaloCells->GetCellTime(cellId); 
    Double_t amp = fCaloCells->GetAmplitude(iCell);
    fh2CellEnergyVsTime->Fill(amp,cellT*1e9);

    //timing cuts
    if(cellT<fCellTimeMin || cellT>fCellTimeMax) continue;
    //energy cut
    if(amp<fMinCellE) continue;
    sum+=amp;

    // get position
    Int_t absId=-1;
    fGeom->GetFastORIndexFromCellIndex(cellId, absId);
    Int_t globCol=-1, globRow=-1;
    fGeom->GetPositionInEMCALFromAbsFastORIndex(absId, globCol, globRow);
    // add
    fPatchADCSimple[globCol][globRow] += amp/kEMCL1ADCtoGeV;
    fPatchESimple[globCol][globRow] += amp;

    TVector3 pos;
    fGeom->GetGlobal(cellId, pos);
    TLorentzVector lv(pos,amp);
    Double_t cellEta = lv.Eta();
    Double_t cellPhi = lv.Phi();
    if(cellPhi<0.) cellPhi+=TMath::TwoPi();
    if(cellPhi>TMath::TwoPi()) cellPhi-=TMath::TwoPi();
    fh3EEtaPhiCell->Fill(amp,cellEta,cellPhi); 
  }
  fh1CellEnergySum->Fill(sum);

  return kTRUE;
}

//________________________________________________________________________
void AliEmcalPatchFromCellMaker::RunSimpleOfflineTrigger()
{
  // Runs a simple offline trigger algorithm.
  // It creates separate patches with dimension fPatchDim

  // run the trigger algo, stepping by stepsize (in trigger tower units)
  Int_t itrig = 0;
  Int_t patchSize = GetDimFastor();
  Int_t stepSize = GetSlidingStepSizeFastor();
  Int_t maxCol = kPatchCols - patchSize;
  //  Int_t maxRow = kPatchRows - patchSize;
  Int_t maxRow = fGeom->GetNTotalTRU()*2 - patchSize; //apparently this is the total TRU in phi ??
  //  Printf("fGeom->GetNTotalTRU(): %d %d = %d x %d ;  %d x %d",fGeom->GetNTRU(),fGeom->GetNTotalTRU(),fGeom->GetNTRUEta(),fGeom->GetNTRUPhi(),fGeom->GetNModulesInTRUEta(),fGeom->GetNModulesInTRUPhi());

  for (Int_t i = 0; i <= maxCol; i += stepSize) {
    for (Int_t j = 0; j <= maxRow; j += stepSize) {
      // get the trigger towers composing the patch
      Int_t   adcAmp = 0;
      Double_t enAmp = 0.;
      // window
      for (Int_t k = 0; k < patchSize; ++k) {
        for (Int_t l = 0; l < patchSize; ++l) {
	  // add amplitudes
          adcAmp += (ULong64_t)fPatchADCSimple[i+k][j+l];
	  enAmp += fPatchESimple[i+k][j+l];
	}
      }

      if (adcAmp == 0) {
	AliDebug(2,"EMCal trigger patch with 0 ADC counts.");
	continue;
      }

      Int_t absId=-1;
      Int_t cellAbsId[4]={-1,-1,-1,-1};

      // get low left edge (eta max, phi min)
      fGeom->GetAbsFastORIndexFromPositionInEMCAL(i, j, absId);
      // convert to the 4 absId of the cells composing the trigger channel
      fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
      TVector3 edge1;
      fGeom->GetGlobal(cellAbsId[0], edge1);

      // get up right edge (eta min, phi max)
      fGeom->GetAbsFastORIndexFromPositionInEMCAL(i+patchSize-1, j+patchSize-1, absId);
      fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
      TVector3 edge2;
      fGeom->GetGlobal(cellAbsId[3], edge2);

      // get the center of the patch
      Int_t offsetCenter = TMath::FloorNint(0.5*patchSize);
      fGeom->GetAbsFastORIndexFromPositionInEMCAL(i+offsetCenter-1, j+offsetCenter-1, absId);
      fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
      TVector3 center1;
      fGeom->GetGlobal(cellAbsId[3], center1);

      fGeom->GetAbsFastORIndexFromPositionInEMCAL(i+offsetCenter, j+offsetCenter, absId);
      fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
      TVector3 center2;
      fGeom->GetGlobal(cellAbsId[0], center2);

      TVector3 centerGeo(center1);
      centerGeo += center2;
      centerGeo *= 0.5;

      // save the trigger object
      AliEmcalTriggerPatchInfo *trigger =
	new ((*fCaloTriggersOut)[itrig]) AliEmcalTriggerPatchInfo();
      itrig++;
      trigger->SetTriggerBitConfig(fTriggerBitConfig);
      trigger->SetCenterGeo(centerGeo, enAmp);
      trigger->SetEdge1(edge1, enAmp);
      trigger->SetEdge2(edge2, enAmp);
      trigger->SetADCAmp(adcAmp);
      trigger->SetEdgeCell(i*2, j*2); // from triggers to cells
    }
  } // trigger algo
  AliDebug(2,Form("Created %d trigger patches (%d) in this event",itrig,patchSize));

}

//________________________________________________________________________
Int_t AliEmcalPatchFromCellMaker::GetDimFastor() const {

  Int_t dim = TMath::FloorNint((Double_t)(fPatchDim/2.));
  return dim;
}

//________________________________________________________________________
Int_t AliEmcalPatchFromCellMaker::GetSlidingStepSizeFastor() const {

  Int_t dim = GetDimFastor();
  if(!fL1Slide) return dim;

  if(dim==2) return 2;
  else if(dim==4) return 4;
  else if(dim==8) return 4;
  else if(dim==16) return 8;
  else return -1;
}




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