]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetTagger.C
constituent selector jet finder AddTaskEmcalJetTagger
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskEmcalJetTagger.C
CommitLineData
8612dfc8 1enum AlgoType {kKT, kANTIKT};
2enum JetType {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS};
3
4AliAnalysisTaskEmcalJetTagger* AddTaskEmcalJetTagger(const char * njetsBase,
5 const char * njetsTag,
6 const Double_t R,
7 const char * nrhoBase,
8 const char * nrhoTag,
9 const char * ntracks,
10 const char * nclusters,
11 const char *type,
12 const char *CentEst,
13 Int_t pSel,
14 TString trigClass = "",
15 TString kEmcalTriggers = "");
16
17AliAnalysisTaskEmcalJetTagger* AddTaskEmcalJetTagger(TString kTracksName = "PicoTracks",
18 TString kClusName = "caloClustersCorr",
19 Double_t R = 0.4,
20 Double_t ptminTrack = 0.15,
21 Double_t etminClus = 0.3,
22 Double_t ptminTag = 4.,
23 Int_t rhoType = 1,
24 const char *type = "EMCAL",
25 const char *CentEst = "V0M",
26 Int_t pSel = AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB,
27 TString trigClass = "",
28 TString kEmcalTriggers = "",
396ffc82 29 TString kPeriod = "LHC11h",
13972cbd 30 Int_t recombScheme = 0,
31 TString tag = "Jet"
8612dfc8 32 ) {
33
34 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
35 if (!mgr)
36 {
37 Error("AddTaskEmcalJetTagger","No analysis manager found.");
38 return 0;
39 }
40 Bool_t ismc=kFALSE;
41 ismc = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
42
43 // Check the analysis type using the event handlers connected to the analysis manager.
44 //==============================================================================
45 if (!mgr->GetInputEventHandler())
46 {
47 ::Error("AddTaskEmcalJetTagger", "This task requires an input event handler");
48 return NULL;
49 }
50
51 // #### Add necessary jet finder tasks
52 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
53
54 AliEmcalJetTask* jetFinderTaskBase = 0x0;
55 if (strcmp(type,"TPC")==0)
13972cbd 56 jetFinderTaskBase = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,recombScheme,tag.Data());
8612dfc8 57 else if (strcmp(type,"EMCAL")==0)
13972cbd 58 jetFinderTaskBase = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus,0.005,recombScheme,tag.Data());
8612dfc8 59
13972cbd 60 AliEmcalJetTask* jetFinderTaskTag = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTag, etminClus,0.005,recombScheme,tag.Data());
61
62 if(tag.IsEqual("JetPythia")) {
63 jetFinderTaskBase->SelectConstituents(TObject::kBitMask, 0);
64 jetFinderTaskTag->SelectConstituents(TObject::kBitMask, 0);
65 }
8612dfc8 66
67 TString strJetsBase = jetFinderTaskBase->GetName();
68 TString strJetsTag = jetFinderTaskTag->GetName();
69
70 AliAnalysisTaskRhoBase *rhoTaskBase;
71 AliAnalysisTaskRhoBase *rhoTaskTag;
72 TString rhoNameBase = "";
73 TString rhoNameTag = "";
74 if(rhoType==1) {
396ffc82
MV
75 rhoTaskBase = AttachRhoTaskTagger(kPeriod,kTracksName,kClusName,R,ptminTrack,etminClus,recombScheme);
76 if(rhoTaskBase) {
77 rhoTaskBase->SetCentralityEstimator(CentEst);
78 rhoTaskBase->SelectCollisionCandidates(AliVEvent::kAny);
79 if (strcmp(type,"TPC")==0)
80 rhoNameBase = rhoTaskBase->GetOutRhoName();
81 if (strcmp(type,"EMCAL")==0)
82 rhoNameBase = rhoTaskBase->GetOutRhoScaledName();
83 }
84 if(rhoTaskTag) {
85 rhoTaskTag = AttachRhoTaskTagger(kPeriod,kTracksName,kClusName,R,ptminTag,0.);
86 rhoTaskTag->SetCentralityEstimator(CentEst);
87 rhoTaskTag->SelectCollisionCandidates(AliVEvent::kAny);
88 rhoNameTag = rhoTaskTag->GetOutRhoName();
89 }
8612dfc8 90 }
91
92 //Configure jet tagger task
93 AliAnalysisTaskEmcalJetTagger *task = AddTaskEmcalJetTagger(jetFinderTaskBase->GetName(),
94 jetFinderTaskTag->GetName(),
95 R,
96 rhoNameBase,
97 rhoNameTag,
98 kTracksName.Data(),
99 kClusName.Data(),
100 type,
101 CentEst,
102 pSel,
103 trigClass,
104 kEmcalTriggers
105 );
106
107 return task;
108
109}
110
111AliAnalysisTaskEmcalJetTagger* AddTaskEmcalJetTagger(const char * njetsBase,
112 const char * njetsTag,
113 const Double_t R,
114 const char * nrhoBase,
115 const char * nrhoTag,
116 const char * ntracks,
117 const char * nclusters,
118 const char * type,
119 const char * CentEst,
120 Int_t pSel,
121 TString trigClass,
122 TString kEmcalTriggers
123 ) {
124
125 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
126 if (!mgr)
127 {
128 Error("AddTaskEmcalJetTagger","No analysis manager found.");
129 return 0;
130 }
131 Bool_t ismc=kFALSE;
132 ismc = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
133
134 // Check the analysis type using the event handlers connected to the analysis manager.
135 //==============================================================================
136 if (!mgr->GetInputEventHandler())
137 {
138 ::Error("AddTaskEmcalJetTagger", "This task requires an input event handler");
139 return NULL;
140 }
141
142 TString wagonName = Form("JetTagger_%s_%s_TC%s",njetsBase,njetsTag,trigClass.Data());
143
144 //Configure jet tagger task
145 AliAnalysisTaskEmcalJetTagger *task = new AliAnalysisTaskEmcalJetTagger(wagonName.Data());
146
147 task->SetNCentBins(4);
148 //task->SetVzRange(-10.,10.);
149
150 AliParticleContainer *trackCont = task->AddParticleContainer(ntracks);
151 AliClusterContainer *clusterCont = task->AddClusterContainer(nclusters);
152
153 task->SetJetContainerBase(0);
154 task->SetJetContainerTag(1);
155
156 TString strType(type);
157 AliJetContainer *jetContBase = task->AddJetContainer(njetsBase,strType,R);
158 if(jetContBase) {
159 jetContBase->SetRhoName(nrhoBase);
160 jetContBase->ConnectParticleContainer(trackCont);
161 jetContBase->ConnectClusterContainer(clusterCont);
162 jetContBase->SetZLeadingCut(0.98,0.98);
163 }
164
165 AliJetContainer *jetContTag = task->AddJetContainer(njetsTag,"TPC",R);
166 if(jetContTag) {
167 jetContTag->SetRhoName(nrhoTag);
168 jetContTag->ConnectParticleContainer(trackCont);
169 jetContTag->ConnectClusterContainer(clusterCont);
170 }
171
172 for(Int_t i=0; i<2; i++) {
173 task->SetPercAreaCut(0.6, i);
174 }
175
176 task->SetCaloTriggerPatchInfoName(kEmcalTriggers.Data());
177
178 task->SetCentralityEstimator(CentEst);
179
180 task->SelectCollisionCandidates(pSel);
181
182 task->SetUseAliAnaUtils(kFALSE);
183
184 mgr->AddTask(task);
185
186 //Connnect input
187 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() );
188
189 //Connect output
190 TString contName(wagonName);
191 TString outputfile = Form("%s",AliAnalysisManager::GetCommonFileName());
192 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
193 mgr->ConnectOutput(task,1,coutput1);
194
195 return task;
196
197}
198
199
200AliAnalysisTaskRhoBase *AttachRhoTaskTagger(TString kPeriod = "LHC13b",
201 TString kTracksName = "PicoTracks",
202 TString kClusName = "caloClustersCorr",
203 Double_t R = 0.4,
204 Double_t ptminTrack = 0.15,
396ffc82 205 Double_t etminClus = 0.3,
13972cbd 206 Int_t recombScheme = 0,
207 TString tag = "Jet"
8612dfc8 208 ) {
209
210 AliAnalysisTaskRhoBase *rhoTaskBase;
211
212 kPeriod.ToLower();
213
214 // Add kt jet finder and rho task in case we want background subtraction
215 AliEmcalJetTask *jetFinderKt;
216 AliEmcalJetTask *jetFinderAKt;
13972cbd 217 jetFinderKt = AddTaskEmcalJet(kTracksName, "", kKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,recombScheme,tag.Data());
218 jetFinderAKt = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,recombScheme,tag.Data());
219
220 if(tag.IsEqual("JetPythia")) {
221 jetFinderKt->SelectConstituents(TObject::kBitMask, 0);
222 jetFinderAKt->SelectConstituents(TObject::kBitMask, 0);
223 }
8612dfc8 224
225 if(kPeriod.EqualTo("lhc13b") || kPeriod.EqualTo("lhc13c") || kPeriod.EqualTo("lhc13d") || kPeriod.EqualTo("lhc13e") || kPeriod.EqualTo("lhc13f")) {
226
227
228 jetFinderKt->SetMinJetPt(0.);
229
230 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
231 TF1 *fScale = new TF1("fScale","1.42",0.,100.); //scale factor for pPb
232 AliAnalysisTaskRhoSparse *rhoTaskSparse = AddTaskRhoSparse(
233 jetFinderKt->GetName(),
234 jetFinderAKt->GetName(),
235 kTracksName,
236 kClusName,
237 Form("RhoSparseR%03d",(int)(100*R)),
238 R,
239 "TPC",
240 0.01,
241 0.15,
242 0,
243 fScale,
244 0,
245 kTRUE,
246 Form("RhoSparseR%03d",(int)(100*R)),
247 kTRUE
248 );
249 rhoTaskSparse->SetUseAliAnaUtils(kTRUE);
250
251 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTaskSparse;
252 }
253 else if(kPeriod.EqualTo("lhc10h") || kPeriod.EqualTo("lhc11h") ) {
254
255 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRho.C");
256
257 TF1* sfunc = new TF1("sfunc","[0]*x*x+[1]*x+[2]",-1,100);
258 sfunc->SetParameter(2,1.76458);
259 sfunc->SetParameter(1,-0.0111656);
260 sfunc->SetParameter(0,0.000107296);
396ffc82 261 TString rhoname = Form("RhoR%03dptmin%3.0f%s",(int)(100*R),ptminTrack*1000.0,kTracksName.Data());
8612dfc8 262 AliAnalysisTaskRho *rhoTask = AddTaskRho(
263 jetFinderKt->GetName(),
264 kTracksName,
265 kClusName,
396ffc82 266 rhoname,
8612dfc8 267 R,
268 "TPC",
269 0.01,
270 0,
271 sfunc,
272 2,
273 kTRUE);
274 rhoTask->SetHistoBins(100,0,250);
275
276 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTask;
277
278 }
279
280 return rhoTaskBase;
281
282}