]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskPtEMCalTrigger.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskPtEMCalTrigger.C
1 #if !defined (__CINT__) || defined (__MAKECINT__)
2 #include "AliAnalysisManager.h"
3 #include "AliAnalysisTaskPtEMCalTrigger.h"
4 #include "AliESDtrackCuts.h"
5 #include "AliJetContainer.h"
6 #include <TList.h>
7 #include <TString.h>
8 #include <cstring>
9 #endif
10
11 AliAnalysisTask* AddTaskPtEMCalTrigger(
12     bool isMC,
13     bool usePythiaHard,
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
20 )
21 {
22   //AliLog::SetClassDebugLevel("EMCalTriggerPtAnalysis::AliAnalysisTaskPtEMCalTrigger", 2);
23   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
24
25   if (!mgr) {
26     ::Error("AddTaskPtEMCalTrigger", "No analysis manager to connect to.");
27     return NULL;
28   }
29
30   if (!mgr->GetInputEventHandler()) {
31     ::Error("AddTaskPtEMCalTrigger", "This task requires an input event handler");
32     return NULL;
33   }
34
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.);
42   if(usePythiaHard){
43     pttriggertask->SetIsPythia(kTRUE);
44   }
45
46   // Add containers
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;
52
53
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);
60
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);
70
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.);
78   }
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.);
85   }
86
87   TString containerName = mgr->GetCommonFileName();
88   containerName += ":PtEMCalTriggerTask";
89   printf("container name: %s\n", containerName.Data());
90
91   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
92   AliAnalysisDataContainer *coutput = mgr->CreateContainer("results", TList::Class(),    AliAnalysisManager::kOutputContainer, containerName.Data());
93
94   //Connect input/output
95   mgr->ConnectInput(pttriggertask, 0, cinput);
96   mgr->ConnectOutput(pttriggertask, 1, coutput);
97
98   return pttriggertask;
99 }