AliAnalysisTaskChargedJetsPA* AddTaskChargedJetsPA( Double_t jetRadius = 0.4, Int_t trigger = AliVEvent::kINT7, Bool_t isMC = kFALSE, Int_t ptHardBin = -1, Double_t randomConeR = 0.4, Double_t trackBgrdConeR = 0.6, const char* containerSuffix = "", const char* usedTracks = "PicoTracks", const char* centralityType = "V0A", Double_t trackEtaWindow = 0.9, Double_t minJetPt = 5.0, // signal jet min pt Double_t minBackgroundJetPt = 0.0, // background jet min pt Double_t dijetLeadingMinPt = 10.0, Double_t dijetMaxAngleDev = 10.0, Int_t numberOfPtHardBins = 0, const char* externalMacro = NULL, Bool_t useVertexCut = kTRUE, Bool_t usePileUpCut = kTRUE, Bool_t isEMCalTrain = kFALSE, Bool_t calculateExternalRho = kFALSE, Bool_t analyzeDeprecatedBackgrounds = kTRUE ) { // #### Detect the demanded trigger with its readable name TString triggerName(Form("Trigger_%i", trigger)); if (trigger == AliVEvent::kAnyINT) triggerName = "kAnyINT"; else if (trigger == AliVEvent::kAny) triggerName = "kAny"; else if(trigger == AliVEvent::kINT7) triggerName = "kINT7"; else if(trigger == AliVEvent::kMB) triggerName = "kMB"; else if(trigger == AliVEvent::kEMC7) triggerName = "kEMC7"; else if(trigger == AliVEvent::kEMCEJE) triggerName = "kEMCEJE"; else if(trigger == AliVEvent::kEMCEGA) triggerName = "kEMCEGA"; // #### Define manager and data container names AliAnalysisManager *manager = AliAnalysisManager::GetAnalysisManager(); if (!manager) { ::Error("AddTaskChargedJetsPA", "No analysis manager to connect to."); return NULL; } TString stringPtHard(""); TString containerNameSuffix(""); if (ptHardBin!=-1) stringPtHard = Form("_PtHard_%d",ptHardBin); if (strcmp(containerSuffix,"")) containerNameSuffix = Form("_%s", containerSuffix); TString myContName(""); if(isMC) myContName = Form("AnalysisR0%2.0f_%s_MC%s%s", jetRadius*100, triggerName.Data(), stringPtHard.Data(), containerNameSuffix.Data()); else myContName = Form("AnalysisR0%2.0f_%s%s%s", jetRadius*100, triggerName.Data(), stringPtHard.Data(), containerNameSuffix.Data()); // #### Add necessary jet finder tasks gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C"); AliEmcalJetTask* jetFinderTask = AddTaskEmcalJet(usedTracks,"",1,jetRadius,1,0.150,0.300); // anti-kt AliEmcalJetTask* jetFinderTaskKT = AddTaskEmcalJet(usedTracks,"",0,jetRadius,1,0.150,0.300); // kt if(jetRadius < 0.1) { jetFinderTask->SetMinJetArea(0.0); jetFinderTaskKT->SetMinJetArea(0.0); jetFinderTask->SetMinJetPt(0.15); jetFinderTaskKT->SetMinJetPt(0.15); jetFinderTask->SetGhostArea(0.001); jetFinderTaskKT->SetGhostArea(0.001); } if(minBackgroundJetPt == -1.0) { if(analyzeDeprecatedBackgrounds) minBackgroundJetPt = 0.0; else minBackgroundJetPt = 0.15; } jetFinderTaskKT->SetMinJetPt(minBackgroundJetPt); // #### Define extern rho task if(calculateExternalRho) { TString myRhoName(""); if(isMC) myRhoName = Form("RhoR0%2.0f_%s_MC%s",jetRadius*100,triggerName.Data(), stringPtHard.Data()); else myRhoName = Form("RhoR0%2.0f_%s%s",jetRadius*100,triggerName.Data(), stringPtHard.Data()); contRhoHistos = manager->CreateContainer(myRhoName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:ChargedJetsPA", AliAnalysisManager::GetCommonFileName())); AliAnalysisTaskRhoSparse *rhotask = new AliAnalysisTaskRhoSparse(myRhoName.Data(), kTRUE); rhotask->SetAnaType(AliAnalysisTaskEmcal::kTPC); rhotask->SetJetsName(jetFinderTaskKT->GetName()); rhotask->SetSigJetsName(jetFinderTask->GetName()); rhotask->SetTracksName(usedTracks); rhotask->SetRhoName(myRhoName.Data()); rhotask->SetJetAreaCut(0); rhotask->SetJetPtCut(0.150); rhotask->SetJetRadius(jetRadius); rhotask->SetRhoCMS(kTRUE); rhotask->SelectCollisionCandidates(trigger); manager->AddTask(rhotask); manager->ConnectInput(rhotask, 0, manager->GetCommonInputContainer()); manager->ConnectOutput(rhotask, 1, contRhoHistos); } // #### Define analysis task AliAnalysisTaskChargedJetsPA *task = NULL; contHistos = manager->CreateContainer(myContName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:ChargedJetsPA", AliAnalysisManager::GetCommonFileName())); task = new AliAnalysisTaskChargedJetsPA(Form("AnalysisPA_%s_%s", jetFinderTask->GetName(), triggerName.Data()), usedTracks, jetFinderTask->GetName(),jetFinderTaskKT->GetName()); // #### Task preferences task->SetAcceptanceWindows(trackEtaWindow, jetRadius, jetRadius); task->SetAnalyzeQA(kTRUE); task->SetAnalyzeBackground(kTRUE); task->SetAnalyzeDeprecatedBackgrounds(analyzeDeprecatedBackgrounds); task->SetUsePileUpCut(usePileUpCut); task->SetUseVertexCut(useVertexCut); task->SetSignalJetMinPt(minJetPt); task->SetSignalJetMinArea(0.6*jetRadius*jetRadius*TMath::Pi()); task->SetDijetLeadingMinPt(dijetLeadingMinPt); task->SetDijetMaxAngleDeviation(dijetMaxAngleDev); task->SetRandConeRadius(randomConeR); task->SetBackgroundJetMinPt(minBackgroundJetPt); task->SetTRBackgroundConeRadius(trackBgrdConeR); task->SelectCollisionCandidates(trigger); task->SetCentralityType(centralityType); task->SetUsePtHardBin(ptHardBin); if(calculateExternalRho) task->SetExternalRhoTaskName(myRhoName.Data()); if(numberOfPtHardBins) task->SetNumberOfPtHardBins(numberOfPtHardBins); // #### Add analysis task manager->AddTask(task); manager->ConnectInput(task, 0, manager->GetCommonInputContainer()); manager->ConnectOutput(task, 1, contHistos); if(isEMCalTrain) RequestMemory(task,200*1024); // #### Do some nasty piggybacking on demand if (externalMacro) gROOT->Macro(externalMacro); return task; }