]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/macros/AddTaskJetMultiPreparation.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetMultiPreparation.C
CommitLineData
6bda5230
CY
1AliAnalysisTaskSE* AddTaskJetMultiPreparation(
2 const char* dataType = "AOD",
3 const char* periodstr = "LHC13b",
4 TString usedTracks = "PicoTracks",
5 const char* usedMCParticles = "MCParticlesSelected",
6 const char* usedClusters = "CaloClusters",
7 TString outClusName = "CaloClustersCorr",
8 const Double_t hadCorr = 2.0,
9 const Double_t Eexcl = 0.00,
10 const Double_t phiMatch = 0.03,
11 const Double_t etaMatch = 0.015,
12 const Double_t minPtEt = 0.15,
13 const UInt_t pSel = AliVEvent::kAny,
14 const Bool_t trackclus = kTRUE,
15 const Bool_t doHistos = kFALSE,
16 const Bool_t makePicoTracks = kTRUE,
17 const Bool_t makeTrigger = kTRUE,
18 const Bool_t isEmcalTrain = kFALSE,
19 const Double_t trackEff = 1.0,
20 const Bool_t doAODTrackProp = kFALSE
21)
22{
23 // Add task macros for all jet related helper tasks.
24 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
25 if (!mgr)
26 {
27 Error("AddTaskJetPreparation","No analysis manager found.");
28 return 0;
29 }
30
31 // Convert hadCorr & trackEff to TStrings to be used in naming conventions
32 TString sTrackEff = "";
33 TString sHadCorr = "";
34 Int_t tEff = Int_t(trackEff*100);
35 Int_t hC = Int_t(hadCorr*100);
36
37 if (trackEff<0.1)
38 {
39 sTrackEff = Form("00%d",tEff);
40 }
41 else if (trackEff<1.0)
42 {
43 sTrackEff = Form("0%d",tEff);
44 }
45 else
46 {
47 sTrackEff = Form("%d",tEff);
48 }
49
50 if (hadCorr<0.1)
51 {
52 sHadCorr = Form("00%d",hC);
53 }
54 else if (hadCorr<1.0)
55 {
56 sHadCorr = Form("0%d",hC);
57 }
58 else
59 {
60 sHadCorr = Form("%d",hC);
61 }
62
63 // Establish names for output collections and tasks
64 TString sPicoTracks = usedTracks + "_" + sTrackEff;
65 TString sEmcalTracks = "EmcalTracks_" + sTrackEff;
66 TString sEmcalClusters = "EmcalClusters_" + sTrackEff;
67 TString sEmcalTriggers = "EmcalTriggers_" + sTrackEff;
68 TString sCaloClustersCorr = outClusName + "_" + sTrackEff + "_" + sHadCorr;
69
70 TString sESDTrackFilterName = "AliEmcalEsdTrackFilterTask";
71 TString sAODTrackPropagatorName = "AliEmcalTrackPropagatorTaskAOD";
72 TString sEmcalPicoTrackMakerName = "EmcalPicoTrackMaker_" + sTrackEff;
73 TString sEmcalParticleMakerName = "EmcalParticleMaker_" + sTrackEff;
74 TString sEmcalTriggerMakerName = "EmcalTriggerMaker_" + sTrackEff;
75 TString sEmcalTriggerMakerSetupOutName = "EmcalTriggerMakerSetupOut_" + sTrackEff;
76 TString sMCTrackSelectorName = "AliEmcalMCTrackSelector";
77
78 // Set trackcuts according to period. Every period used should be definied here
79 TString period(periodstr);
80 TString clusterColName(usedClusters);
81 TString particleColName(usedMCParticles);
82 TString dType(dataType);
83
84 if ((dType == "AOD") && (clusterColName == "CaloClusters"))
85 {
86 clusterColName = "caloClusters";
87 }
88 if ((dType == "ESD") && (clusterColName == "caloClusters"))
89 {
90 clusterColName = "CaloClusters";
91 }
92
93 if (makePicoTracks && (dType == "ESD" || dType == "AOD") )
94 {
95 TString inputTracks = "tracks";
96 const Double_t edist = 440;
97 if (dType == "ESD")
98 {
99 inputTracks = "HybridTracks";
100 TString trackCuts(Form("Hybrid_%s",period.Data()));
101
102 // Hybrid tracks maker for ESD
103 AliEmcalEsdTrackFilterTask *esdFilter = mgr->GetTask(sESDTrackFilterName.Data());
104 if (!esdFilter)
105 {
106 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalEsdTrackFilter.C");
107 AliEmcalEsdTrackFilterTask *esdFilter = AddTaskEmcalEsdTrackFilter(inputTracks.Data(),trackCuts.Data());
108 esdFilter->SetDoPropagation(kTRUE);
109 esdFilter->SetDist(edist);
110 esdFilter->SelectCollisionCandidates(pSel);
111 }
112 }
113 else if (dType == "AOD")
114 {
115 // Track propagator to extend track to the EMCal surface
116 AliEmcalAodTrackFilterTask *aodFilter = mgr->GetTask(sAODTrackPropagatorName.Data());
117 if (!aodFilter)
118 {
119 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalAodTrackFilter.C");
120 AliEmcalAodTrackFilterTask *aodFilter = AddTaskEmcalAodTrackFilter(inputTracks.Data(),"tracks",period.Data());
121 aodFilter->SetDist(edist);
122 aodFilter->SelectCollisionCandidates(pSel);
123 if (doAODTrackProp == kTRUE)
124 {
125 aodFilter->SetDoPropagation(kTRUE);
126 }
127 }
128 }
129
130 // Produce PicoTracks
131 AliEmcalPicoTrackMaker *pTrackTask = mgr->GetTask(sEmcalPicoTrackMakerName.Data());
132 if (!pTrackTask)
133 {
134 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C");
135 pTrackTask = AddTaskEmcalPicoTrackMaker(sPicoTracks.Data(), inputTracks.Data(),0,1000,-10,10,-10,10,trackEff,sEmcalPicoTrackMakerName.Data());
136 pTrackTask->SelectCollisionCandidates(pSel);
137 }
138 }
139
140 // Produce particles used for hadronic correction, make triggers (if needed), then match!
141 AliEmcalParticleMaker *emcalParts = mgr->GetTask(sEmcalParticleMakerName.Data());
142 if (!emcalParts)
143 {
144 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalParticleMaker.C");
145 emcalParts = AddTaskEmcalParticleMaker(sPicoTracks.Data(),clusterColName.Data(),sEmcalTracks.Data(),sEmcalClusters.Data(),sEmcalParticleMakerName.Data());
146 emcalParts->SelectCollisionCandidates(pSel);
147
148 // Trigger maker
149 if (makeTrigger)
150 {
151 AliEmcalTriggerMaker *emcalTriggers = mgr->GetTask(sEmcalTriggerMakerName.Data());
152 if (!emcalTriggers)
153 {
154 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTriggerMaker.C");
155 emcalTriggers = AddTaskEmcalTriggerMaker(sEmcalTriggers.Data(),sEmcalTriggerMakerSetupOutName.Data(),0,0,sEmcalTriggerMakerName.Data(),0,0,0,0,0,0);
156 emcalTriggers->SelectCollisionCandidates(pSel);
157 }
158 }
159
160 // Relate tracks and clusters
161 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalClusTrackMatcher.C");
162 AliEmcalClusTrackMatcherTask *emcalClus = AddTaskEmcalClusTrackMatcher(sEmcalTracks.Data(),sEmcalClusters.Data(),0.1,doHistos);
163 emcalClus->SelectCollisionCandidates(pSel);
164 if (isEmcalTrain)
165 {
166 RequestMemory(emcalClus,100*1024);
167 }
168 }
169
170 // Make Corrected CaloClusters
171 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskHadCorr.C");
172 AliHadCorrTask *hCorr = AddTaskHadCorr(sEmcalTracks.Data(),sEmcalClusters.Data(),sCaloClustersCorr.Data(),hadCorr,minPtEt,phiMatch,etaMatch,Eexcl,trackclus,doHistos);
173 hCorr->SelectCollisionCandidates(pSel);
174 if (isEmcalTrain)
175 {
176 if (doHistos)
177 {
178 RequestMemory(hCorr,500*1024);
179 }
180 }
181
182 // Produce MC particles
183 if(particleColName != "")
184 {
185 AliEmcalMCTrackSelector *mcPartTask = mgr->GetTask(sMCTrackSelectorName.Data());
186 if (!mcPartTask)
187 {
188 gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMCTrackSelector.C");
189 AliEmcalMCTrackSelector *mcPartTask = AddTaskMCTrackSelector(particleColName.Data(), kFALSE, kFALSE);
190 mcPartTask->SelectCollisionCandidates(pSel);
191 }
192 }
193
194 // Return one task that represents the jet preparation on LEGO trains
195 return emcalParts;
196}