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