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.                  *
 **************************************************************************/

/* $Id$ */

//-------------------------------------------------------------------------
//             Implementation of class AliAnalysisTaskPileup
//
// The class re-weights the number of analysed events with the correction
// factor to account for the event pileup.
//
// The final idea will be to include all of the methods for the pileup
// calculation.
//
// For the moment, the implemented method is based on a work 
// by L. Aphecetche.
// The probability of having at least 1 collision is given by:
// MB L0 trigger / max collision rate
// The max collision rate is given by:
//    number of bunches X revolution frequency ~ CBEAMB L0 trigger
// Assuming a poissonian distribution of the collision, with:
//    mu = mean number of collisions
// the probability of having 0 collisions is:
//    exp{-mu} = 1 - L0b_MB / max collision rate
// Since the MB trigger is measuring the probability of having at least
// 1 collisions, the number should be corrected by the factor:
//    CF = mu / ( 1 - exp{-mu} )
// The class weights the number of events with this correction factor
//
// CAVEATS:
// - so far the class needs to access the OCDB
//   (hopefully it will be changed in the future)
//   Hence the following libraries need to be included (in addition to
//   the standard analysis ones):
//   libRAWDatabase.so libCDB.so libSTEER.so libPWGHFbase.so
//-------------------------------------------------------------------------

#include <Riostream.h>

// ROOT includes
#include "TH1.h"
#include "TH2.h"
#include "TCanvas.h"
#include "TROOT.h"
#include "TString.h"
#include "TObjArray.h"
#include "TObjString.h"
#include "TMath.h"

// STEER includes
#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliAODEvent.h"
#include "AliAODInputHandler.h"
#include "AliTriggerScalersESD.h"
#include "AliCentrality.h"

// ANALYSIS includes
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisDataSlot.h"
#include "AliAnalysisDataContainer.h"

#include "AliCounterCollection.h"

#include "AliAnalysisTaskPileup.h"

#if defined(READOCDB)
#include "AliTriggerRunScalers.h"
#include "AliTriggerConfiguration.h"
#include "AliTriggerClass.h"
#include "AliCDBManager.h"
#include "AliCDBEntry.h"
#include "AliCDBPath.h"
#endif


ClassImp(AliAnalysisTaskPileup)


//________________________________________________________________________
AliAnalysisTaskPileup::AliAnalysisTaskPileup() :
AliAnalysisTaskSE(),
  fEventCounters(0x0),
  fHistoEventsList(0x0),
  fTriggerClasses(0x0),
  fTriggerClassIndex(0x0),
  fIsInitCDB(0),
  fCentralityClasses(0x0),
  fStorageList("")
#if defined(READOCDB)
  , fTriggerRunScalers(0x0)
#endif

{
  /// Default Constructor
}


//________________________________________________________________________
AliAnalysisTaskPileup::AliAnalysisTaskPileup(const char *name) :
  AliAnalysisTaskSE(name),
  fEventCounters(0x0),
  fHistoEventsList(0x0),
  fTriggerClasses(0x0),
  fTriggerClassIndex(0x0),
  fIsInitCDB(0),
  fCentralityClasses(0x0),
  fStorageList("")
#if defined(READOCDB)
  , fTriggerRunScalers(0x0)
#endif
{
  /// Constructor

  DefineOutput(1,AliCounterCollection::Class());
  DefineOutput(2,TObjArray::Class());
}

//________________________________________________________________________
AliAnalysisTaskPileup::~AliAnalysisTaskPileup()
{
  /// Destructor

  // For proof: do not delete output containers
  if ( ! AliAnalysisManager::GetAnalysisManager() || ! AliAnalysisManager::GetAnalysisManager()->IsProofMode() ) {
    delete fEventCounters;
  }

  delete fHistoEventsList;
  delete fTriggerClasses;
  delete fTriggerClassIndex;

  //#if defined(READOCDB)
  //delete fTriggerRunScalers; // Not owner -> Owned by OCDB
  //#endif

}


//___________________________________________________________________________
void AliAnalysisTaskPileup::NotifyRun()
{
  /// Notify run

#if defined(READOCDB)
  if ( fStorageList.IsNull() ) {
    AliError("Default storage not set! Pileup corrections won't be calculated!");
    return;
  }
  if ( ! AliCDBManager::Instance()->GetDefaultStorage() ) {
    TObjArray* storageList = fStorageList.Tokenize(" ");
    storageList->SetOwner();
    for ( Int_t ientry=0; ientry<storageList->GetEntries(); ientry++ ) {
      TObjString* calibStr = (TObjString*)storageList->At(ientry);
      ientry++;
      TObjString* dbStr = (TObjString*)storageList->At(ientry);
      TString calibName = calibStr->GetString();
      if ( ! calibName.CompareTo("default") ) {
	AliCDBManager::Instance()->SetDefaultStorage(dbStr->GetName());
      }
      else {
	AliCDBManager::Instance()->SetSpecificStorage(calibStr->GetName(), dbStr->GetName());
      }
    }
    delete storageList;
  }

  // Default storage was not correclty set: nothing done
  if ( ! AliCDBManager::Instance()->GetDefaultStorage() ) return;

  AliCDBManager::Instance()->SetRun(InputEvent()->GetRunNumber());

  AliCDBEntry *entry = 0x0;
  entry = AliCDBManager::Instance()->Get("GRP/CTP/Config");
  if ( ! entry ) return;
  AliTriggerConfiguration* trigConf = (AliTriggerConfiguration*)entry->GetObject();
  const TObjArray& classesArray = trigConf->GetClasses();
  Int_t nclasses = classesArray.GetEntriesFast();

  if ( fTriggerClasses ) delete fTriggerClasses;

  fTriggerClasses = new TObjArray(nclasses);
  fTriggerClasses->SetOwner();

  Int_t currActive = -1;
  for( Int_t iclass=0; iclass < nclasses; iclass++ ) {
    AliTriggerClass* trclass = (AliTriggerClass*)classesArray.At(iclass);
    if (trclass && trclass->GetMask()>0) {
      currActive++;
      Int_t currPos = currActive;

      // Store the CBEAMB class at the first position
      TString trigName = trclass->GetName();
      if ( ( trigName.Contains("CBEAMB") ||  trigName.Contains("CTRUE") ) && ! trigName.Contains("WU") )
	currPos = 0;
      else if ( ! fTriggerClasses->At(0) )
	currPos++;

      Int_t trindex = TMath::Nint(TMath::Log2(trclass->GetMask()));
      TObjString* objString = new TObjString(trigName.Data());
      fTriggerClasses->AddAtAndExpand(objString, currPos);
      (*fTriggerClassIndex)[currPos] = trindex;
      if ( fDebug >= 3 ) printf("AliAnalysisTaskPileup: Current class %s  index %i  position %i\n", trigName.Data(), trindex, currPos);
    } // is class active
  } // loop on trigger classes

  entry = AliCDBManager::Instance()->Get("GRP/CTP/Scalers");
  if ( ! entry ) return;
  AliInfo("Found an AliTriggerRunScalers in GRP/CTP/Scalers, reading it");
  fTriggerRunScalers = static_cast<AliTriggerRunScalers*> (entry->GetObject());
  if (fTriggerRunScalers->CorrectScalersOverflow() == 0) AliInfo("32bit Trigger counters corrected for overflow");

  fIsInitCDB = kTRUE;

#endif

}


//___________________________________________________________________________
void AliAnalysisTaskPileup::UserCreateOutputObjects()
{
  /// Create histograms and counters

  fTriggerClassIndex = new TArrayI(50);
  fTriggerClassIndex->Reset(-1);

  fCentralityClasses = new TAxis(20, 0., 100.);

  TString centralityClassesStr = "", currClass = "";
  for ( Int_t ibin=1; ibin<=fCentralityClasses->GetNbins(); ibin++ ){
    if ( ! centralityClassesStr.IsNull() )
      centralityClassesStr.Append("/");
    currClass = Form("%.0f-%.0f",fCentralityClasses->GetBinLowEdge(ibin),fCentralityClasses->GetBinUpEdge(ibin));
    centralityClassesStr += currClass;
    fCentralityClasses->SetBinLabel(ibin, currClass.Data());
  }
  
  // The framework has problems if the name of the object
  // and the one of container differ
  // To be complaint, get the name from container and set it
  TString containerName = GetOutputSlot(1)->GetContainer()->GetName();

  // initialize event counters
  fEventCounters = new AliCounterCollection(containerName.Data());
  fEventCounters->AddRubric("event", "any/correctedL0");
  fEventCounters->AddRubric("trigger", 1000000);
  fEventCounters->AddRubric("vtxSelection", "any/hasVtxContrib/nonPileupSPD");
  fEventCounters->AddRubric("selected", "yes/no");
  fEventCounters->AddRubric("centrality", centralityClassesStr.Data());
  fEventCounters->Init(kTRUE);

  // Post data at least once per task to ensure data synchronisation (required for merging)
  PostData(1, fEventCounters);
}

//________________________________________________________________________
void AliAnalysisTaskPileup::UserExec(Option_t *)
{
  /// Called for each event

  AliAODEvent* aodEvent = 0x0;

  AliESDEvent* esdEvent = dynamic_cast<AliESDEvent*> (InputEvent());
  if ( ! esdEvent ) {
    aodEvent = dynamic_cast<AliAODEvent*> (InputEvent());
  }

  if ( ! aodEvent && ! esdEvent ) {
    AliError ("AOD or ESD event not found. Nothing done!");
    return;
  }
 
  // check physics selection
  Bool_t isPhysicsSelected = (fInputHandler && fInputHandler->IsEventSelected());
  TString selected = ( isPhysicsSelected ) ? "yes" : "no";

  TString firedTrigClasses = ( esdEvent ) ? esdEvent->GetFiredTriggerClasses() : aodEvent->GetFiredTriggerClasses();

  if ( ! fIsInitCDB ) {
    delete fTriggerClasses;
    fTriggerClasses = firedTrigClasses.Tokenize(" ");
    fTriggerClasses->SetOwner();
  }

#if defined(READOCDB)

  //if ( firedTrigClasses.IsNull() ) return; // Reject non-physics events

  if ( fDebug >= 2 ) printf("\nAliAnalysisTaskPileup: Event %lli\n", Entry());

  // If scalers is not correctly loaded, the task becomes a mere event counter
  Int_t nPoints = ( fTriggerRunScalers ) ? fTriggerRunScalers->GetScalersRecordsESD()->GetEntriesFast() : 0;

  AliTriggerScalersRecordESD* trigScalerRecords1 = 0x0;
  AliTriggerScalersRecordESD* trigScalerRecords2 = 0x0;
  if ( nPoints > 1 ) {
    // Add protection for MC (no scalers there!)

    AliTimeStamp timeStamp(InputEvent()->GetOrbitNumber(), InputEvent()->GetPeriodNumber(), InputEvent()->GetBunchCrossNumber());
    Int_t position = fTriggerRunScalers->FindNearestScalersRecord(&timeStamp);
    if ( position < 0 ) {
      AliWarning("Position out of range: put to 1");
      position = 1;
    } 
    if ( position == 0 ) position++; // Don't trust the first one
    else if ( position + 1 >= nPoints ) position--;
    if ( fDebug >= 2 ) printf("AliAnalysisTaskPileup: position %i\n", position);
    trigScalerRecords1 = (AliTriggerScalersRecordESD*)fTriggerRunScalers->GetScalersRecordsESD()->At(position);

    // Sometimes scalers are filled very close to each others
    // in this case skip to the next entry
    for ( Int_t ipos=position+1; ipos<nPoints; ipos++ ) {
      trigScalerRecords2 = (AliTriggerScalersRecordESD*)fTriggerRunScalers->GetScalersRecordsESD()->At(ipos);
      Double_t deltaTime = (Double_t)( trigScalerRecords2->GetTimeStamp()->GetSeconds() - trigScalerRecords1->GetTimeStamp()->GetSeconds() );
      if ( fDebug >= 2 ) printf("AliAnalysisTaskPileup: Pos %i  TimeStamp %u - %u = %.0f\n", ipos, trigScalerRecords2->GetTimeStamp()->GetSeconds(), trigScalerRecords1->GetTimeStamp()->GetSeconds(), deltaTime);

      if ( deltaTime > 1 )
	break;
    } // loop on position
  } // nPoins > 0

#endif

  ULong64_t trigMask = 0;
  Double_t correctFactor = 1.;

  Int_t nVtxContrib = ( esdEvent ) ? esdEvent->GetPrimaryVertex()->GetNContributors() : aodEvent->GetPrimaryVertex()->GetNContributors();
  Bool_t isPileupSPD = ( esdEvent ) ? esdEvent->IsPileupFromSPD(3,0.8) : aodEvent->IsPileupFromSPD(3,0.8);

  Double_t centralityClass = InputEvent()->GetCentrality()->GetCentralityPercentile("V0M");
  // If percentile is exactly 100. the bin chosen is in overflow
  // fix it by setting 99.999 instead of 100.
  if ( centralityClass >= 100. ) centralityClass = 99.999;
  Int_t centralityBin = fCentralityClasses->FindBin(centralityClass);

  TString vtxSelKey[3] = {"any","hasVtxContrib","nonPileupSPD"};
  Bool_t fillSel[3] = {kTRUE, ( nVtxContrib > 0 ), ( ( nVtxContrib > 0 ) && ( ! isPileupSPD ) )};

  //const AliTriggerScalersRecordESD* trigScalerRecords = esdEvent->GetHeader()->GetTriggerScalersRecord(); // REMEMBER TO CUT

  TString trigName = "";
  TString eventType = "";

  // Get entries counts the number of entries != 0
  // However the position 0 can be empty in MC (it is reserved to CBEAMB)
  // In this case with GetEntries the last entry is lost
  // Use GetEntriesFast instead
  Int_t nTriggerClasses = fTriggerClasses->GetEntriesFast();
  Int_t classIndex = -1;
#if defined(READOCDB)
  Double_t deltaScalersBeam = 0., deltaScalers = 0.;
#endif
  //Bool_t isFiredOnce = kFALSE;
  for (Int_t itrig=0; itrig<nTriggerClasses+1; itrig++) {

    Double_t correctFactorL0 = 1.;

    Bool_t isClassFired = kFALSE;

    if ( itrig < nTriggerClasses ) {

      if ( fIsInitCDB ) {
	// Check if current mask contains trigger
	classIndex = (*fTriggerClassIndex)[itrig];
	if ( classIndex < 0 ) continue; // Protection for MC (where BEAMB not present
	trigMask = ( 1ull << classIndex );
	isClassFired = ( trigMask & InputEvent()->GetTriggerMask() );
      }
      else
	isClassFired = kTRUE;

      trigName = ((TObjString*)fTriggerClasses->At(itrig))->GetString();

#if defined(READOCDB)
      if ( trigScalerRecords2 && ( isClassFired || itrig == 0 ) ) {
	// Get scalers
	const AliTriggerScalersESD* scaler1 = trigScalerRecords1->GetTriggerScalersForClass(classIndex+1);
	const AliTriggerScalersESD* scaler2 = trigScalerRecords2->GetTriggerScalersForClass(classIndex+1);
	deltaScalers = scaler2->GetLOCB() - scaler1->GetLOCB();
 
	if ( itrig == 0 )
	  deltaScalersBeam = deltaScalers;
	else if ( isClassFired ) {
	  correctFactorL0 = GetL0Correction(deltaScalers, deltaScalersBeam);
	  if ( fDebug >= 2 ) printf("AliAnalysisTaskPileup: Scalers: %s %.0f  %s %.0f -> CF %f\n", fTriggerClasses->At(itrig)->GetName(), deltaScalers, fTriggerClasses->At(0)->GetName(), deltaScalersBeam, correctFactorL0);
	}
      }
#endif
    } // if ( itrig < nTriggerClasses )
    else {
      classIndex = -1;
      trigName = "any";
      isClassFired = kTRUE; // isFiredOnce;
    }

    if ( ! isClassFired ) continue;
    //isFiredOnce = kTRUE;

    //const AliTriggerScalersESD* trigScaler = trigScalerRecords->GetTriggerScalersForClass(classIndex+1); // REMEMBER TO CUT
    //if ( classIndex > 1 ) printf("Index: trigger %i  scaler %i\n", classIndex+1, trigScaler->GetClassIndex()); // REMEMBER TO CUT

    if ( fDebug >= 2 ) printf("AliAnalysisTaskPileup: Fired trig %s\n", trigName.Data());

    for ( Int_t ievType=0; ievType<2; ievType++ ){
      switch ( ievType ) {
      case kHeventsCorrectL0:
	correctFactor = correctFactorL0;
	eventType = "correctedL0";
	break;
      default:
	correctFactor = 1.;
	eventType = "any";
	break;
      }

      for ( Int_t isel=0; isel<3; isel++ ) {
	if ( ! fillSel[isel] ) continue;
	fEventCounters->Count(Form("event:%s/trigger:%s/vtxSelection:%s/selected:%s/centrality:%s",eventType.Data(),trigName.Data(), vtxSelKey[isel].Data(), selected.Data(),fCentralityClasses->GetBinLabel(centralityBin)),correctFactor);
      } // loop on vertex selection
    } // loop on event type
  } // loop on trigger classes

  // Post final data. It will be written to a file with option "RECREATE"
  PostData(1, fEventCounters);
}


//________________________________________________________________________
void AliAnalysisTaskPileup::Terminate(Option_t *)
{
  //
  /// Save final histograms
  /// and draw result to the screen
  //

  // Fill the container only at the very last step
  // i.e. in local, when done interactively
  if ( gROOT->IsBatch() )
    return;

  fEventCounters = dynamic_cast<AliCounterCollection*>(GetOutputData(1));
  if ( ! fEventCounters ) return;

  if ( ! fHistoEventsList ) fHistoEventsList = new TObjArray(0);
  fHistoEventsList->SetOwner();

  TH2D* histo = 0x0;
  const Int_t kNevtTypes = 2;
  TString evtSel[kNevtTypes] = {"event:any", "event:correctedL0"};
  TString evtName[kNevtTypes] = {"", "CorrectL0"};
  TString evtTitle[kNevtTypes] = {"Events", "L0 corrected events"};
  const Int_t kNphysSel = 2;
  TString physSel[kNphysSel] = {"selected:any","selected:yes"};
  TString physName[kNphysSel] = {"", "PhysSel"};
  TString physTitle[kNphysSel] = {"", "w/ physics selection"};

  TString typeName[2] = {"", "Centrality"};

  Int_t currHisto = -1;
  TString currName = "";
  for ( Int_t itype=0; itype<2; itype++ ) {
    for ( Int_t isel=0; isel<kNphysSel; isel++ ) {
      for ( Int_t iev=0; iev<kNevtTypes; iev++ ) {
	currName = Form("%s/%s", evtSel[iev].Data(), physSel[isel].Data());
	if ( itype == 0 )
	  histo = fEventCounters->Get("trigger","vtxSelection",currName.Data());
	else {
	  currName.Append("/vtxSelection:any");
	  histo = fEventCounters->Get("trigger","centrality",currName.Data());
	}
	if ( ! histo ) continue;
	currHisto++;
	currName = Form("hEvents%s%s%s", typeName[itype].Data(), evtName[iev].Data(), physName[isel].Data());
	histo->SetName(currName.Data());
	currName = Form("%s %s", evtTitle[iev].Data(), physTitle[isel].Data());
	histo->SetTitle(currName.Data());
	fHistoEventsList->AddAtAndExpand(histo, currHisto);
      } // loop on event type
      TH2D* num = (TH2D*)fHistoEventsList->At(currHisto);
      TH2D* den = (TH2D*)fHistoEventsList->At(currHisto-1);
      if ( ! num || ! den ) continue;
      currName = Form("hPileupL0%s%s_%s", typeName[itype].Data(), physName[isel].Data(), GetName());
      TH2D* histoPileupL0 = (TH2D*)num->Clone(currName.Data());
      histoPileupL0->Divide(den);
      currName.ReplaceAll("hPileupL0","canPileupL0");
      TCanvas *can = new TCanvas(currName.Data(),"Pileup",10,10,310,310);
      can->SetFillColor(10); can->SetHighLightColor(10);
      can->SetLeftMargin(0.15); can->SetBottomMargin(0.15);
      histoPileupL0->DrawCopy("text");
      delete histoPileupL0;
    } // loop on physics selection
  } // loop on histo type

  PostData(2, fHistoEventsList);
}


//________________________________________________________________________
Double_t AliAnalysisTaskPileup::GetL0Correction(Double_t nCINT1B, Double_t nCBEAMB)
{
  /// Get the correction factor for L0 calculation

  if ( nCBEAMB == 0. )
    return 1.;

  Double_t ratio = nCINT1B / nCBEAMB;

  if ( ratio >= 1. || ratio == 0. )
    return 1.;

  Double_t mu = -TMath::Log(1-ratio);

  return mu / ( 1. - TMath::Exp(-mu) );

}

//________________________________________________________________________
void AliAnalysisTaskPileup::SetDefaultStorage(TString dbString)
{
  /// Set default storage
  SetSpecificStorage("default", dbString);
}


//________________________________________________________________________
void AliAnalysisTaskPileup::SetSpecificStorage(TString calibType, TString dbString)
{
  /// Set specific storage
#if defined(READOCDB)
  if ( ! fStorageList.IsNull() ) fStorageList += " ";
  fStorageList += Form("%s %s", calibType.Data(), dbString.Data());
  if ( fDebug >= 3 ) printf("AliAnalysisTaskPileup: Setting storage %s %s", calibType.Data(), dbString.Data());
#else
  calibType = "";
  dbString  = "";
  AliWarning("Class was not compiled to run on OCDB. Command will not have effect");
#endif
}

 AliAnalysisTaskPileup.cxx:1
 AliAnalysisTaskPileup.cxx:2
 AliAnalysisTaskPileup.cxx:3
 AliAnalysisTaskPileup.cxx:4
 AliAnalysisTaskPileup.cxx:5
 AliAnalysisTaskPileup.cxx:6
 AliAnalysisTaskPileup.cxx:7
 AliAnalysisTaskPileup.cxx:8
 AliAnalysisTaskPileup.cxx:9
 AliAnalysisTaskPileup.cxx:10
 AliAnalysisTaskPileup.cxx:11
 AliAnalysisTaskPileup.cxx:12
 AliAnalysisTaskPileup.cxx:13
 AliAnalysisTaskPileup.cxx:14
 AliAnalysisTaskPileup.cxx:15
 AliAnalysisTaskPileup.cxx:16
 AliAnalysisTaskPileup.cxx:17
 AliAnalysisTaskPileup.cxx:18
 AliAnalysisTaskPileup.cxx:19
 AliAnalysisTaskPileup.cxx:20
 AliAnalysisTaskPileup.cxx:21
 AliAnalysisTaskPileup.cxx:22
 AliAnalysisTaskPileup.cxx:23
 AliAnalysisTaskPileup.cxx:24
 AliAnalysisTaskPileup.cxx:25
 AliAnalysisTaskPileup.cxx:26
 AliAnalysisTaskPileup.cxx:27
 AliAnalysisTaskPileup.cxx:28
 AliAnalysisTaskPileup.cxx:29
 AliAnalysisTaskPileup.cxx:30
 AliAnalysisTaskPileup.cxx:31
 AliAnalysisTaskPileup.cxx:32
 AliAnalysisTaskPileup.cxx:33
 AliAnalysisTaskPileup.cxx:34
 AliAnalysisTaskPileup.cxx:35
 AliAnalysisTaskPileup.cxx:36
 AliAnalysisTaskPileup.cxx:37
 AliAnalysisTaskPileup.cxx:38
 AliAnalysisTaskPileup.cxx:39
 AliAnalysisTaskPileup.cxx:40
 AliAnalysisTaskPileup.cxx:41
 AliAnalysisTaskPileup.cxx:42
 AliAnalysisTaskPileup.cxx:43
 AliAnalysisTaskPileup.cxx:44
 AliAnalysisTaskPileup.cxx:45
 AliAnalysisTaskPileup.cxx:46
 AliAnalysisTaskPileup.cxx:47
 AliAnalysisTaskPileup.cxx:48
 AliAnalysisTaskPileup.cxx:49
 AliAnalysisTaskPileup.cxx:50
 AliAnalysisTaskPileup.cxx:51
 AliAnalysisTaskPileup.cxx:52
 AliAnalysisTaskPileup.cxx:53
 AliAnalysisTaskPileup.cxx:54
 AliAnalysisTaskPileup.cxx:55
 AliAnalysisTaskPileup.cxx:56
 AliAnalysisTaskPileup.cxx:57
 AliAnalysisTaskPileup.cxx:58
 AliAnalysisTaskPileup.cxx:59
 AliAnalysisTaskPileup.cxx:60
 AliAnalysisTaskPileup.cxx:61
 AliAnalysisTaskPileup.cxx:62
 AliAnalysisTaskPileup.cxx:63
 AliAnalysisTaskPileup.cxx:64
 AliAnalysisTaskPileup.cxx:65
 AliAnalysisTaskPileup.cxx:66
 AliAnalysisTaskPileup.cxx:67
 AliAnalysisTaskPileup.cxx:68
 AliAnalysisTaskPileup.cxx:69
 AliAnalysisTaskPileup.cxx:70
 AliAnalysisTaskPileup.cxx:71
 AliAnalysisTaskPileup.cxx:72
 AliAnalysisTaskPileup.cxx:73
 AliAnalysisTaskPileup.cxx:74
 AliAnalysisTaskPileup.cxx:75
 AliAnalysisTaskPileup.cxx:76
 AliAnalysisTaskPileup.cxx:77
 AliAnalysisTaskPileup.cxx:78
 AliAnalysisTaskPileup.cxx:79
 AliAnalysisTaskPileup.cxx:80
 AliAnalysisTaskPileup.cxx:81
 AliAnalysisTaskPileup.cxx:82
 AliAnalysisTaskPileup.cxx:83
 AliAnalysisTaskPileup.cxx:84
 AliAnalysisTaskPileup.cxx:85
 AliAnalysisTaskPileup.cxx:86
 AliAnalysisTaskPileup.cxx:87
 AliAnalysisTaskPileup.cxx:88
 AliAnalysisTaskPileup.cxx:89
 AliAnalysisTaskPileup.cxx:90
 AliAnalysisTaskPileup.cxx:91
 AliAnalysisTaskPileup.cxx:92
 AliAnalysisTaskPileup.cxx:93
 AliAnalysisTaskPileup.cxx:94
 AliAnalysisTaskPileup.cxx:95
 AliAnalysisTaskPileup.cxx:96
 AliAnalysisTaskPileup.cxx:97
 AliAnalysisTaskPileup.cxx:98
 AliAnalysisTaskPileup.cxx:99
 AliAnalysisTaskPileup.cxx:100
 AliAnalysisTaskPileup.cxx:101
 AliAnalysisTaskPileup.cxx:102
 AliAnalysisTaskPileup.cxx:103
 AliAnalysisTaskPileup.cxx:104
 AliAnalysisTaskPileup.cxx:105
 AliAnalysisTaskPileup.cxx:106
 AliAnalysisTaskPileup.cxx:107
 AliAnalysisTaskPileup.cxx:108
 AliAnalysisTaskPileup.cxx:109
 AliAnalysisTaskPileup.cxx:110
 AliAnalysisTaskPileup.cxx:111
 AliAnalysisTaskPileup.cxx:112
 AliAnalysisTaskPileup.cxx:113
 AliAnalysisTaskPileup.cxx:114
 AliAnalysisTaskPileup.cxx:115
 AliAnalysisTaskPileup.cxx:116
 AliAnalysisTaskPileup.cxx:117
 AliAnalysisTaskPileup.cxx:118
 AliAnalysisTaskPileup.cxx:119
 AliAnalysisTaskPileup.cxx:120
 AliAnalysisTaskPileup.cxx:121
 AliAnalysisTaskPileup.cxx:122
 AliAnalysisTaskPileup.cxx:123
 AliAnalysisTaskPileup.cxx:124
 AliAnalysisTaskPileup.cxx:125
 AliAnalysisTaskPileup.cxx:126
 AliAnalysisTaskPileup.cxx:127
 AliAnalysisTaskPileup.cxx:128
 AliAnalysisTaskPileup.cxx:129
 AliAnalysisTaskPileup.cxx:130
 AliAnalysisTaskPileup.cxx:131
 AliAnalysisTaskPileup.cxx:132
 AliAnalysisTaskPileup.cxx:133
 AliAnalysisTaskPileup.cxx:134
 AliAnalysisTaskPileup.cxx:135
 AliAnalysisTaskPileup.cxx:136
 AliAnalysisTaskPileup.cxx:137
 AliAnalysisTaskPileup.cxx:138
 AliAnalysisTaskPileup.cxx:139
 AliAnalysisTaskPileup.cxx:140
 AliAnalysisTaskPileup.cxx:141
 AliAnalysisTaskPileup.cxx:142
 AliAnalysisTaskPileup.cxx:143
 AliAnalysisTaskPileup.cxx:144
 AliAnalysisTaskPileup.cxx:145
 AliAnalysisTaskPileup.cxx:146
 AliAnalysisTaskPileup.cxx:147
 AliAnalysisTaskPileup.cxx:148
 AliAnalysisTaskPileup.cxx:149
 AliAnalysisTaskPileup.cxx:150
 AliAnalysisTaskPileup.cxx:151
 AliAnalysisTaskPileup.cxx:152
 AliAnalysisTaskPileup.cxx:153
 AliAnalysisTaskPileup.cxx:154
 AliAnalysisTaskPileup.cxx:155
 AliAnalysisTaskPileup.cxx:156
 AliAnalysisTaskPileup.cxx:157
 AliAnalysisTaskPileup.cxx:158
 AliAnalysisTaskPileup.cxx:159
 AliAnalysisTaskPileup.cxx:160
 AliAnalysisTaskPileup.cxx:161
 AliAnalysisTaskPileup.cxx:162
 AliAnalysisTaskPileup.cxx:163
 AliAnalysisTaskPileup.cxx:164
 AliAnalysisTaskPileup.cxx:165
 AliAnalysisTaskPileup.cxx:166
 AliAnalysisTaskPileup.cxx:167
 AliAnalysisTaskPileup.cxx:168
 AliAnalysisTaskPileup.cxx:169
 AliAnalysisTaskPileup.cxx:170
 AliAnalysisTaskPileup.cxx:171
 AliAnalysisTaskPileup.cxx:172
 AliAnalysisTaskPileup.cxx:173
 AliAnalysisTaskPileup.cxx:174
 AliAnalysisTaskPileup.cxx:175
 AliAnalysisTaskPileup.cxx:176
 AliAnalysisTaskPileup.cxx:177
 AliAnalysisTaskPileup.cxx:178
 AliAnalysisTaskPileup.cxx:179
 AliAnalysisTaskPileup.cxx:180
 AliAnalysisTaskPileup.cxx:181
 AliAnalysisTaskPileup.cxx:182
 AliAnalysisTaskPileup.cxx:183
 AliAnalysisTaskPileup.cxx:184
 AliAnalysisTaskPileup.cxx:185
 AliAnalysisTaskPileup.cxx:186
 AliAnalysisTaskPileup.cxx:187
 AliAnalysisTaskPileup.cxx:188
 AliAnalysisTaskPileup.cxx:189
 AliAnalysisTaskPileup.cxx:190
 AliAnalysisTaskPileup.cxx:191
 AliAnalysisTaskPileup.cxx:192
 AliAnalysisTaskPileup.cxx:193
 AliAnalysisTaskPileup.cxx:194
 AliAnalysisTaskPileup.cxx:195
 AliAnalysisTaskPileup.cxx:196
 AliAnalysisTaskPileup.cxx:197
 AliAnalysisTaskPileup.cxx:198
 AliAnalysisTaskPileup.cxx:199
 AliAnalysisTaskPileup.cxx:200
 AliAnalysisTaskPileup.cxx:201
 AliAnalysisTaskPileup.cxx:202
 AliAnalysisTaskPileup.cxx:203
 AliAnalysisTaskPileup.cxx:204
 AliAnalysisTaskPileup.cxx:205
 AliAnalysisTaskPileup.cxx:206
 AliAnalysisTaskPileup.cxx:207
 AliAnalysisTaskPileup.cxx:208
 AliAnalysisTaskPileup.cxx:209
 AliAnalysisTaskPileup.cxx:210
 AliAnalysisTaskPileup.cxx:211
 AliAnalysisTaskPileup.cxx:212
 AliAnalysisTaskPileup.cxx:213
 AliAnalysisTaskPileup.cxx:214
 AliAnalysisTaskPileup.cxx:215
 AliAnalysisTaskPileup.cxx:216
 AliAnalysisTaskPileup.cxx:217
 AliAnalysisTaskPileup.cxx:218
 AliAnalysisTaskPileup.cxx:219
 AliAnalysisTaskPileup.cxx:220
 AliAnalysisTaskPileup.cxx:221
 AliAnalysisTaskPileup.cxx:222
 AliAnalysisTaskPileup.cxx:223
 AliAnalysisTaskPileup.cxx:224
 AliAnalysisTaskPileup.cxx:225
 AliAnalysisTaskPileup.cxx:226
 AliAnalysisTaskPileup.cxx:227
 AliAnalysisTaskPileup.cxx:228
 AliAnalysisTaskPileup.cxx:229
 AliAnalysisTaskPileup.cxx:230
 AliAnalysisTaskPileup.cxx:231
 AliAnalysisTaskPileup.cxx:232
 AliAnalysisTaskPileup.cxx:233
 AliAnalysisTaskPileup.cxx:234
 AliAnalysisTaskPileup.cxx:235
 AliAnalysisTaskPileup.cxx:236
 AliAnalysisTaskPileup.cxx:237
 AliAnalysisTaskPileup.cxx:238
 AliAnalysisTaskPileup.cxx:239
 AliAnalysisTaskPileup.cxx:240
 AliAnalysisTaskPileup.cxx:241
 AliAnalysisTaskPileup.cxx:242
 AliAnalysisTaskPileup.cxx:243
 AliAnalysisTaskPileup.cxx:244
 AliAnalysisTaskPileup.cxx:245
 AliAnalysisTaskPileup.cxx:246
 AliAnalysisTaskPileup.cxx:247
 AliAnalysisTaskPileup.cxx:248
 AliAnalysisTaskPileup.cxx:249
 AliAnalysisTaskPileup.cxx:250
 AliAnalysisTaskPileup.cxx:251
 AliAnalysisTaskPileup.cxx:252
 AliAnalysisTaskPileup.cxx:253
 AliAnalysisTaskPileup.cxx:254
 AliAnalysisTaskPileup.cxx:255
 AliAnalysisTaskPileup.cxx:256
 AliAnalysisTaskPileup.cxx:257
 AliAnalysisTaskPileup.cxx:258
 AliAnalysisTaskPileup.cxx:259
 AliAnalysisTaskPileup.cxx:260
 AliAnalysisTaskPileup.cxx:261
 AliAnalysisTaskPileup.cxx:262
 AliAnalysisTaskPileup.cxx:263
 AliAnalysisTaskPileup.cxx:264
 AliAnalysisTaskPileup.cxx:265
 AliAnalysisTaskPileup.cxx:266
 AliAnalysisTaskPileup.cxx:267
 AliAnalysisTaskPileup.cxx:268
 AliAnalysisTaskPileup.cxx:269
 AliAnalysisTaskPileup.cxx:270
 AliAnalysisTaskPileup.cxx:271
 AliAnalysisTaskPileup.cxx:272
 AliAnalysisTaskPileup.cxx:273
 AliAnalysisTaskPileup.cxx:274
 AliAnalysisTaskPileup.cxx:275
 AliAnalysisTaskPileup.cxx:276
 AliAnalysisTaskPileup.cxx:277
 AliAnalysisTaskPileup.cxx:278
 AliAnalysisTaskPileup.cxx:279
 AliAnalysisTaskPileup.cxx:280
 AliAnalysisTaskPileup.cxx:281
 AliAnalysisTaskPileup.cxx:282
 AliAnalysisTaskPileup.cxx:283
 AliAnalysisTaskPileup.cxx:284
 AliAnalysisTaskPileup.cxx:285
 AliAnalysisTaskPileup.cxx:286
 AliAnalysisTaskPileup.cxx:287
 AliAnalysisTaskPileup.cxx:288
 AliAnalysisTaskPileup.cxx:289
 AliAnalysisTaskPileup.cxx:290
 AliAnalysisTaskPileup.cxx:291
 AliAnalysisTaskPileup.cxx:292
 AliAnalysisTaskPileup.cxx:293
 AliAnalysisTaskPileup.cxx:294
 AliAnalysisTaskPileup.cxx:295
 AliAnalysisTaskPileup.cxx:296
 AliAnalysisTaskPileup.cxx:297
 AliAnalysisTaskPileup.cxx:298
 AliAnalysisTaskPileup.cxx:299
 AliAnalysisTaskPileup.cxx:300
 AliAnalysisTaskPileup.cxx:301
 AliAnalysisTaskPileup.cxx:302
 AliAnalysisTaskPileup.cxx:303
 AliAnalysisTaskPileup.cxx:304
 AliAnalysisTaskPileup.cxx:305
 AliAnalysisTaskPileup.cxx:306
 AliAnalysisTaskPileup.cxx:307
 AliAnalysisTaskPileup.cxx:308
 AliAnalysisTaskPileup.cxx:309
 AliAnalysisTaskPileup.cxx:310
 AliAnalysisTaskPileup.cxx:311
 AliAnalysisTaskPileup.cxx:312
 AliAnalysisTaskPileup.cxx:313
 AliAnalysisTaskPileup.cxx:314
 AliAnalysisTaskPileup.cxx:315
 AliAnalysisTaskPileup.cxx:316
 AliAnalysisTaskPileup.cxx:317
 AliAnalysisTaskPileup.cxx:318
 AliAnalysisTaskPileup.cxx:319
 AliAnalysisTaskPileup.cxx:320
 AliAnalysisTaskPileup.cxx:321
 AliAnalysisTaskPileup.cxx:322
 AliAnalysisTaskPileup.cxx:323
 AliAnalysisTaskPileup.cxx:324
 AliAnalysisTaskPileup.cxx:325
 AliAnalysisTaskPileup.cxx:326
 AliAnalysisTaskPileup.cxx:327
 AliAnalysisTaskPileup.cxx:328
 AliAnalysisTaskPileup.cxx:329
 AliAnalysisTaskPileup.cxx:330
 AliAnalysisTaskPileup.cxx:331
 AliAnalysisTaskPileup.cxx:332
 AliAnalysisTaskPileup.cxx:333
 AliAnalysisTaskPileup.cxx:334
 AliAnalysisTaskPileup.cxx:335
 AliAnalysisTaskPileup.cxx:336
 AliAnalysisTaskPileup.cxx:337
 AliAnalysisTaskPileup.cxx:338
 AliAnalysisTaskPileup.cxx:339
 AliAnalysisTaskPileup.cxx:340
 AliAnalysisTaskPileup.cxx:341
 AliAnalysisTaskPileup.cxx:342
 AliAnalysisTaskPileup.cxx:343
 AliAnalysisTaskPileup.cxx:344
 AliAnalysisTaskPileup.cxx:345
 AliAnalysisTaskPileup.cxx:346
 AliAnalysisTaskPileup.cxx:347
 AliAnalysisTaskPileup.cxx:348
 AliAnalysisTaskPileup.cxx:349
 AliAnalysisTaskPileup.cxx:350
 AliAnalysisTaskPileup.cxx:351
 AliAnalysisTaskPileup.cxx:352
 AliAnalysisTaskPileup.cxx:353
 AliAnalysisTaskPileup.cxx:354
 AliAnalysisTaskPileup.cxx:355
 AliAnalysisTaskPileup.cxx:356
 AliAnalysisTaskPileup.cxx:357
 AliAnalysisTaskPileup.cxx:358
 AliAnalysisTaskPileup.cxx:359
 AliAnalysisTaskPileup.cxx:360
 AliAnalysisTaskPileup.cxx:361
 AliAnalysisTaskPileup.cxx:362
 AliAnalysisTaskPileup.cxx:363
 AliAnalysisTaskPileup.cxx:364
 AliAnalysisTaskPileup.cxx:365
 AliAnalysisTaskPileup.cxx:366
 AliAnalysisTaskPileup.cxx:367
 AliAnalysisTaskPileup.cxx:368
 AliAnalysisTaskPileup.cxx:369
 AliAnalysisTaskPileup.cxx:370
 AliAnalysisTaskPileup.cxx:371
 AliAnalysisTaskPileup.cxx:372
 AliAnalysisTaskPileup.cxx:373
 AliAnalysisTaskPileup.cxx:374
 AliAnalysisTaskPileup.cxx:375
 AliAnalysisTaskPileup.cxx:376
 AliAnalysisTaskPileup.cxx:377
 AliAnalysisTaskPileup.cxx:378
 AliAnalysisTaskPileup.cxx:379
 AliAnalysisTaskPileup.cxx:380
 AliAnalysisTaskPileup.cxx:381
 AliAnalysisTaskPileup.cxx:382
 AliAnalysisTaskPileup.cxx:383
 AliAnalysisTaskPileup.cxx:384
 AliAnalysisTaskPileup.cxx:385
 AliAnalysisTaskPileup.cxx:386
 AliAnalysisTaskPileup.cxx:387
 AliAnalysisTaskPileup.cxx:388
 AliAnalysisTaskPileup.cxx:389
 AliAnalysisTaskPileup.cxx:390
 AliAnalysisTaskPileup.cxx:391
 AliAnalysisTaskPileup.cxx:392
 AliAnalysisTaskPileup.cxx:393
 AliAnalysisTaskPileup.cxx:394
 AliAnalysisTaskPileup.cxx:395
 AliAnalysisTaskPileup.cxx:396
 AliAnalysisTaskPileup.cxx:397
 AliAnalysisTaskPileup.cxx:398
 AliAnalysisTaskPileup.cxx:399
 AliAnalysisTaskPileup.cxx:400
 AliAnalysisTaskPileup.cxx:401
 AliAnalysisTaskPileup.cxx:402
 AliAnalysisTaskPileup.cxx:403
 AliAnalysisTaskPileup.cxx:404
 AliAnalysisTaskPileup.cxx:405
 AliAnalysisTaskPileup.cxx:406
 AliAnalysisTaskPileup.cxx:407
 AliAnalysisTaskPileup.cxx:408
 AliAnalysisTaskPileup.cxx:409
 AliAnalysisTaskPileup.cxx:410
 AliAnalysisTaskPileup.cxx:411
 AliAnalysisTaskPileup.cxx:412
 AliAnalysisTaskPileup.cxx:413
 AliAnalysisTaskPileup.cxx:414
 AliAnalysisTaskPileup.cxx:415
 AliAnalysisTaskPileup.cxx:416
 AliAnalysisTaskPileup.cxx:417
 AliAnalysisTaskPileup.cxx:418
 AliAnalysisTaskPileup.cxx:419
 AliAnalysisTaskPileup.cxx:420
 AliAnalysisTaskPileup.cxx:421
 AliAnalysisTaskPileup.cxx:422
 AliAnalysisTaskPileup.cxx:423
 AliAnalysisTaskPileup.cxx:424
 AliAnalysisTaskPileup.cxx:425
 AliAnalysisTaskPileup.cxx:426
 AliAnalysisTaskPileup.cxx:427
 AliAnalysisTaskPileup.cxx:428
 AliAnalysisTaskPileup.cxx:429
 AliAnalysisTaskPileup.cxx:430
 AliAnalysisTaskPileup.cxx:431
 AliAnalysisTaskPileup.cxx:432
 AliAnalysisTaskPileup.cxx:433
 AliAnalysisTaskPileup.cxx:434
 AliAnalysisTaskPileup.cxx:435
 AliAnalysisTaskPileup.cxx:436
 AliAnalysisTaskPileup.cxx:437
 AliAnalysisTaskPileup.cxx:438
 AliAnalysisTaskPileup.cxx:439
 AliAnalysisTaskPileup.cxx:440
 AliAnalysisTaskPileup.cxx:441
 AliAnalysisTaskPileup.cxx:442
 AliAnalysisTaskPileup.cxx:443
 AliAnalysisTaskPileup.cxx:444
 AliAnalysisTaskPileup.cxx:445
 AliAnalysisTaskPileup.cxx:446
 AliAnalysisTaskPileup.cxx:447
 AliAnalysisTaskPileup.cxx:448
 AliAnalysisTaskPileup.cxx:449
 AliAnalysisTaskPileup.cxx:450
 AliAnalysisTaskPileup.cxx:451
 AliAnalysisTaskPileup.cxx:452
 AliAnalysisTaskPileup.cxx:453
 AliAnalysisTaskPileup.cxx:454
 AliAnalysisTaskPileup.cxx:455
 AliAnalysisTaskPileup.cxx:456
 AliAnalysisTaskPileup.cxx:457
 AliAnalysisTaskPileup.cxx:458
 AliAnalysisTaskPileup.cxx:459
 AliAnalysisTaskPileup.cxx:460
 AliAnalysisTaskPileup.cxx:461
 AliAnalysisTaskPileup.cxx:462
 AliAnalysisTaskPileup.cxx:463
 AliAnalysisTaskPileup.cxx:464
 AliAnalysisTaskPileup.cxx:465
 AliAnalysisTaskPileup.cxx:466
 AliAnalysisTaskPileup.cxx:467
 AliAnalysisTaskPileup.cxx:468
 AliAnalysisTaskPileup.cxx:469
 AliAnalysisTaskPileup.cxx:470
 AliAnalysisTaskPileup.cxx:471
 AliAnalysisTaskPileup.cxx:472
 AliAnalysisTaskPileup.cxx:473
 AliAnalysisTaskPileup.cxx:474
 AliAnalysisTaskPileup.cxx:475
 AliAnalysisTaskPileup.cxx:476
 AliAnalysisTaskPileup.cxx:477
 AliAnalysisTaskPileup.cxx:478
 AliAnalysisTaskPileup.cxx:479
 AliAnalysisTaskPileup.cxx:480
 AliAnalysisTaskPileup.cxx:481
 AliAnalysisTaskPileup.cxx:482
 AliAnalysisTaskPileup.cxx:483
 AliAnalysisTaskPileup.cxx:484
 AliAnalysisTaskPileup.cxx:485
 AliAnalysisTaskPileup.cxx:486
 AliAnalysisTaskPileup.cxx:487
 AliAnalysisTaskPileup.cxx:488
 AliAnalysisTaskPileup.cxx:489
 AliAnalysisTaskPileup.cxx:490
 AliAnalysisTaskPileup.cxx:491
 AliAnalysisTaskPileup.cxx:492
 AliAnalysisTaskPileup.cxx:493
 AliAnalysisTaskPileup.cxx:494
 AliAnalysisTaskPileup.cxx:495
 AliAnalysisTaskPileup.cxx:496
 AliAnalysisTaskPileup.cxx:497
 AliAnalysisTaskPileup.cxx:498
 AliAnalysisTaskPileup.cxx:499
 AliAnalysisTaskPileup.cxx:500
 AliAnalysisTaskPileup.cxx:501
 AliAnalysisTaskPileup.cxx:502
 AliAnalysisTaskPileup.cxx:503
 AliAnalysisTaskPileup.cxx:504
 AliAnalysisTaskPileup.cxx:505
 AliAnalysisTaskPileup.cxx:506
 AliAnalysisTaskPileup.cxx:507
 AliAnalysisTaskPileup.cxx:508
 AliAnalysisTaskPileup.cxx:509
 AliAnalysisTaskPileup.cxx:510
 AliAnalysisTaskPileup.cxx:511
 AliAnalysisTaskPileup.cxx:512
 AliAnalysisTaskPileup.cxx:513
 AliAnalysisTaskPileup.cxx:514
 AliAnalysisTaskPileup.cxx:515
 AliAnalysisTaskPileup.cxx:516
 AliAnalysisTaskPileup.cxx:517
 AliAnalysisTaskPileup.cxx:518
 AliAnalysisTaskPileup.cxx:519
 AliAnalysisTaskPileup.cxx:520
 AliAnalysisTaskPileup.cxx:521
 AliAnalysisTaskPileup.cxx:522
 AliAnalysisTaskPileup.cxx:523
 AliAnalysisTaskPileup.cxx:524
 AliAnalysisTaskPileup.cxx:525
 AliAnalysisTaskPileup.cxx:526
 AliAnalysisTaskPileup.cxx:527
 AliAnalysisTaskPileup.cxx:528
 AliAnalysisTaskPileup.cxx:529
 AliAnalysisTaskPileup.cxx:530
 AliAnalysisTaskPileup.cxx:531
 AliAnalysisTaskPileup.cxx:532
 AliAnalysisTaskPileup.cxx:533
 AliAnalysisTaskPileup.cxx:534
 AliAnalysisTaskPileup.cxx:535
 AliAnalysisTaskPileup.cxx:536
 AliAnalysisTaskPileup.cxx:537
 AliAnalysisTaskPileup.cxx:538
 AliAnalysisTaskPileup.cxx:539
 AliAnalysisTaskPileup.cxx:540
 AliAnalysisTaskPileup.cxx:541
 AliAnalysisTaskPileup.cxx:542
 AliAnalysisTaskPileup.cxx:543
 AliAnalysisTaskPileup.cxx:544
 AliAnalysisTaskPileup.cxx:545
 AliAnalysisTaskPileup.cxx:546
 AliAnalysisTaskPileup.cxx:547
 AliAnalysisTaskPileup.cxx:548
 AliAnalysisTaskPileup.cxx:549
 AliAnalysisTaskPileup.cxx:550
 AliAnalysisTaskPileup.cxx:551
 AliAnalysisTaskPileup.cxx:552
 AliAnalysisTaskPileup.cxx:553