#if !defined (__CINT__) || defined (__MAKECINT__)
#include "AliAnalysisManager.h"
#include "AliAnalysisTaskPtEMCalTrigger.h"
#include "AliESDtrackCuts.h"
#include "AliJetContainer.h"
#include <TList.h>
#include <TString.h>
#include <cstring>
#endif
AliAnalysisTask* AddTaskPtEMCalTrigger(
bool isMC,
bool usePythiaHard,
const char *period ="LHC13d",
const char *ntrackContainer = "",
const char *nclusterContainer = "",
const char *njetcontainerData = "",
const char *njetcontainerMC = "",
double jetradius = 0.5
)
{
//AliLog::SetClassDebugLevel("EMCalTriggerPtAnalysis::AliAnalysisTaskPtEMCalTrigger", 2);
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) {
::Error("AddTaskPtEMCalTrigger", "No analysis manager to connect to.");
return NULL;
}
if (!mgr->GetInputEventHandler()) {
::Error("AddTaskPtEMCalTrigger", "This task requires an input event handler");
return NULL;
}
EMCalTriggerPtAnalysis::AliAnalysisTaskPtEMCalTrigger *pttriggertask = new EMCalTriggerPtAnalysis::AliAnalysisTaskPtEMCalTrigger("ptemcaltriggertask");
//pttriggertask->SelectCollisionCandidates(AliVEvent::kINT7 | AliVEvent::kEMC7); // Select both INT7 or EMC7 triggered events
pttriggertask->SelectCollisionCandidates(AliVEvent::kAny);
if(!TString(period).CompareTo("LHC13f")) pttriggertask->SetSwapEta();
mgr->AddTask(pttriggertask);
pttriggertask->SetPtRange(2., 100.);
pttriggertask->SetClusterEnergyRange(2.,100.);
if(usePythiaHard){
pttriggertask->SetIsPythia(kTRUE);
}
// Add containers
Bool_t isAOD = mgr->GetInputEventHandler()->IsA() == AliAODInputHandler::Class();
AliParticleContainer *trackContainer = pttriggertask->AddParticleContainer(ntrackContainer);
//trackContainer->SetClassName("AliVTrack");
AliClusterContainer *clusterContainer = pttriggertask->AddClusterContainer(nclusterContainer);
AliParticleContainer *mcpartcont = isMC ? pttriggertask->AddParticleContainer("MCParticlesSelected") : NULL;
// Create charged hadrons pPb standard track cuts
AliESDtrackCuts *standardTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(true, 1);
standardTrackCuts->SetName("Standard Track cuts");
standardTrackCuts->SetMinNCrossedRowsTPC(120);
standardTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
pttriggertask->AddESDTrackCuts(standardTrackCuts);
// Create hybrid track cuts as used in the jet analysis
AliESDtrackCuts* hybridTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
hybridTrackCuts->SetName("Global Hybrid tracks, loose DCA");
hybridTrackCuts->SetMaxDCAToVertexXY(2.4);
hybridTrackCuts->SetMaxDCAToVertexZ(3.2);
hybridTrackCuts->SetDCAToVertex2D(kTRUE);
hybridTrackCuts->SetMaxChi2TPCConstrainedGlobal(36);
hybridTrackCuts->SetMaxFractionSharedTPCClusters(0.4);
pttriggertask->AddESDTrackCuts(hybridTrackCuts);
// Handle Jet Containers
if(strlen(njetcontainerData)){
AliJetContainer *jetcontainerData = pttriggertask->AddJetContainer(njetcontainerData, "TPC", jetradius);
pttriggertask->AddJetContainerName("PtTriggerTaskJetsData", false);
jetcontainerData->ConnectParticleContainer(trackContainer);
jetcontainerData->SetName("PtTriggerTaskJetsData");
jetcontainerData->SetJetPtCut(20.);
}
if(isMC && strlen(njetcontainerMC)){
AliJetContainer *jetcontainerMC = pttriggertask->AddJetContainer(njetcontainerMC, "TPC", jetradius);
pttriggertask->AddJetContainerName("PtTriggerTaskJetsMC", true);
jetcontainerMC->ConnectParticleContainer(mcpartcont);
jetcontainerMC->SetName("PtTriggerTaskJetsMC");
jetcontainerMC->SetJetPtCut(20.);
}
TString containerName = mgr->GetCommonFileName();
containerName += ":PtEMCalTriggerTask";
printf("container name: %s\n", containerName.Data());
AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
AliAnalysisDataContainer *coutput = mgr->CreateContainer("results", TList::Class(), AliAnalysisManager::kOutputContainer, containerName.Data());
//Connect input/output
mgr->ConnectInput(pttriggertask, 0, cinput);
mgr->ConnectOutput(pttriggertask, 1, coutput);
return pttriggertask;
}
AddTaskPtEMCalTrigger.C:1 AddTaskPtEMCalTrigger.C:2 AddTaskPtEMCalTrigger.C:3 AddTaskPtEMCalTrigger.C:4 AddTaskPtEMCalTrigger.C:5 AddTaskPtEMCalTrigger.C:6 AddTaskPtEMCalTrigger.C:7 AddTaskPtEMCalTrigger.C:8 AddTaskPtEMCalTrigger.C:9 AddTaskPtEMCalTrigger.C:10 AddTaskPtEMCalTrigger.C:11 AddTaskPtEMCalTrigger.C:12 AddTaskPtEMCalTrigger.C:13 AddTaskPtEMCalTrigger.C:14 AddTaskPtEMCalTrigger.C:15 AddTaskPtEMCalTrigger.C:16 AddTaskPtEMCalTrigger.C:17 AddTaskPtEMCalTrigger.C:18 AddTaskPtEMCalTrigger.C:19 AddTaskPtEMCalTrigger.C:20 AddTaskPtEMCalTrigger.C:21 AddTaskPtEMCalTrigger.C:22 AddTaskPtEMCalTrigger.C:23 AddTaskPtEMCalTrigger.C:24 AddTaskPtEMCalTrigger.C:25 AddTaskPtEMCalTrigger.C:26 AddTaskPtEMCalTrigger.C:27 AddTaskPtEMCalTrigger.C:28 AddTaskPtEMCalTrigger.C:29 AddTaskPtEMCalTrigger.C:30 AddTaskPtEMCalTrigger.C:31 AddTaskPtEMCalTrigger.C:32 AddTaskPtEMCalTrigger.C:33 AddTaskPtEMCalTrigger.C:34 AddTaskPtEMCalTrigger.C:35 AddTaskPtEMCalTrigger.C:36 AddTaskPtEMCalTrigger.C:37 AddTaskPtEMCalTrigger.C:38 AddTaskPtEMCalTrigger.C:39 AddTaskPtEMCalTrigger.C:40 AddTaskPtEMCalTrigger.C:41 AddTaskPtEMCalTrigger.C:42 AddTaskPtEMCalTrigger.C:43 AddTaskPtEMCalTrigger.C:44 AddTaskPtEMCalTrigger.C:45 AddTaskPtEMCalTrigger.C:46 AddTaskPtEMCalTrigger.C:47 AddTaskPtEMCalTrigger.C:48 AddTaskPtEMCalTrigger.C:49 AddTaskPtEMCalTrigger.C:50 AddTaskPtEMCalTrigger.C:51 AddTaskPtEMCalTrigger.C:52 AddTaskPtEMCalTrigger.C:53 AddTaskPtEMCalTrigger.C:54 AddTaskPtEMCalTrigger.C:55 AddTaskPtEMCalTrigger.C:56 AddTaskPtEMCalTrigger.C:57 AddTaskPtEMCalTrigger.C:58 AddTaskPtEMCalTrigger.C:59 AddTaskPtEMCalTrigger.C:60 AddTaskPtEMCalTrigger.C:61 AddTaskPtEMCalTrigger.C:62 AddTaskPtEMCalTrigger.C:63 AddTaskPtEMCalTrigger.C:64 AddTaskPtEMCalTrigger.C:65 AddTaskPtEMCalTrigger.C:66 AddTaskPtEMCalTrigger.C:67 AddTaskPtEMCalTrigger.C:68 AddTaskPtEMCalTrigger.C:69 AddTaskPtEMCalTrigger.C:70 AddTaskPtEMCalTrigger.C:71 AddTaskPtEMCalTrigger.C:72 AddTaskPtEMCalTrigger.C:73 AddTaskPtEMCalTrigger.C:74 AddTaskPtEMCalTrigger.C:75 AddTaskPtEMCalTrigger.C:76 AddTaskPtEMCalTrigger.C:77 AddTaskPtEMCalTrigger.C:78 AddTaskPtEMCalTrigger.C:79 AddTaskPtEMCalTrigger.C:80 AddTaskPtEMCalTrigger.C:81 AddTaskPtEMCalTrigger.C:82 AddTaskPtEMCalTrigger.C:83 AddTaskPtEMCalTrigger.C:84 AddTaskPtEMCalTrigger.C:85 AddTaskPtEMCalTrigger.C:86 AddTaskPtEMCalTrigger.C:87 AddTaskPtEMCalTrigger.C:88 AddTaskPtEMCalTrigger.C:89 AddTaskPtEMCalTrigger.C:90 AddTaskPtEMCalTrigger.C:91 AddTaskPtEMCalTrigger.C:92 AddTaskPtEMCalTrigger.C:93 AddTaskPtEMCalTrigger.C:94 AddTaskPtEMCalTrigger.C:95 AddTaskPtEMCalTrigger.C:96 AddTaskPtEMCalTrigger.C:97 AddTaskPtEMCalTrigger.C:98 AddTaskPtEMCalTrigger.C:99 AddTaskPtEMCalTrigger.C:100