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