#include <Riostream.h>
#include "TH1.h"
#include "TH2.h"
#include "TCanvas.h"
#include "TROOT.h"
#include "TString.h"
#include "TObjArray.h"
#include "TObjString.h"
#include "TMath.h"
#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliAODEvent.h"
#include "AliAODInputHandler.h"
#include "AliTriggerScalersESD.h"
#include "AliCentrality.h"
#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
{
}
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
{
DefineOutput(1,AliCounterCollection::Class());
DefineOutput(2,TObjArray::Class());
}
AliAnalysisTaskPileup::~AliAnalysisTaskPileup()
{
if ( ! AliAnalysisManager::GetAnalysisManager() || ! AliAnalysisManager::GetAnalysisManager()->IsProofMode() ) {
delete fEventCounters;
}
delete fHistoEventsList;
delete fTriggerClasses;
delete fTriggerClassIndex;
}
void AliAnalysisTaskPileup::NotifyRun()
{
#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;
}
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;
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);
}
}
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()
{
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());
}
TString containerName = GetOutputSlot(1)->GetContainer()->GetName();
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);
PostData(1, fEventCounters);
}
void AliAnalysisTaskPileup::UserExec(Option_t *)
{
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;
}
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 ( fDebug >= 2 ) printf("\nAliAnalysisTaskPileup: Event %lli\n", Entry());
Int_t nPoints = ( fTriggerRunScalers ) ? fTriggerRunScalers->GetScalersRecordsESD()->GetEntriesFast() : 0;
AliTriggerScalersRecordESD* trigScalerRecords1 = 0x0;
AliTriggerScalersRecordESD* trigScalerRecords2 = 0x0;
if ( nPoints > 1 ) {
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++;
else if ( position + 1 >= nPoints ) position--;
if ( fDebug >= 2 ) printf("AliAnalysisTaskPileup: position %i\n", position);
trigScalerRecords1 = (AliTriggerScalersRecordESD*)fTriggerRunScalers->GetScalersRecordsESD()->At(position);
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;
}
}
#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 ( 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 ) )};
TString trigName = "";
TString eventType = "";
Int_t nTriggerClasses = fTriggerClasses->GetEntriesFast();
Int_t classIndex = -1;
#if defined(READOCDB)
Double_t deltaScalersBeam = 0., deltaScalers = 0.;
#endif
for (Int_t itrig=0; itrig<nTriggerClasses+1; itrig++) {
Double_t correctFactorL0 = 1.;
Bool_t isClassFired = kFALSE;
if ( itrig < nTriggerClasses ) {
if ( fIsInitCDB ) {
classIndex = (*fTriggerClassIndex)[itrig];
if ( classIndex < 0 ) continue;
trigMask = ( 1ull << classIndex );
isClassFired = ( trigMask & InputEvent()->GetTriggerMask() );
}
else
isClassFired = kTRUE;
trigName = ((TObjString*)fTriggerClasses->At(itrig))->GetString();
#if defined(READOCDB)
if ( trigScalerRecords2 && ( isClassFired || itrig == 0 ) ) {
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
}
else {
classIndex = -1;
trigName = "any";
isClassFired = kTRUE;
}
if ( ! isClassFired ) continue;
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);
}
}
}
PostData(1, fEventCounters);
}
void AliAnalysisTaskPileup::Terminate(Option_t *)
{
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);
}
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;
}
}
PostData(2, fHistoEventsList);
}
Double_t AliAnalysisTaskPileup::GetL0Correction(Double_t nCINT1B, Double_t nCBEAMB)
{
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)
{
SetSpecificStorage("default", dbString);
}
void AliAnalysisTaskPileup::SetSpecificStorage(TString calibType, TString dbString)
{
#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