]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/macros/AddTaskFragmentationFunction.C
removed printout
[u/mrichter/AliRoot.git] / PWGJE / macros / AddTaskFragmentationFunction.C
CommitLineData
1db1733e 1
2/*************************************************************************************************
3*** Add Fragmentation Function Task ***
4**************************************************************************************************
44b235ce 5The fragmentation function task expects an ESD filter and jet finder running before this task.
1db1733e 6Or it runs on delta-AODs filled with filtered tracks and jets before.
7
8** Parameters **
9(char) recJetsBranch: branch in AOD for (reconstructed) jets
10(char) genJetsBranch: branch in AOD for (generated) jets
11(char) jetType: "AOD" jets from recJetsBranch
12 "AODMC" jets from genJetsBranch
13 "KINE" jets from PYCELL
14 +"b" (e.g. "AODb") jets with acceptance cuts
15(char) trackType: "AOD" reconstructed tracks from AOD filled by ESD filter (choose filter mask!)
16 "AODMC" MC tracks from AOD filled by kine filter
17 "KINE" kine particles from MC event
18 +"2" (e.g. "AOD2") charged tracks only
19 +"b" (e.g. "AOD2b") with acceptance cuts
20(UInt_t) filterMask: select filter bit of ESD filter task
21
22***************************************************************************************************/
23
44b235ce 24AliAnalysisTaskFragmentationFunction *AddTaskFragmentationFunction(UInt_t iFlag=1, UInt_t filterMask=32, Int_t eventClass=0){
1db1733e 25
26 AliAnalysisTaskFragmentationFunction *ff=0;
27
c2658535 28 // UA1 Jets
1db1733e 29 // only reconstructed (default)
44b235ce 30 if(iFlag&(1<<0)) ff = AddTaskFragmentationFunction("jetsAOD_UA1", "", "", "", "", filterMask, 0.4,0,1000., eventClass);
ac017ff3 31 // charged MC tracks and jets
44b235ce 32 if(iFlag&(1<<1)) ff = AddTaskFragmentationFunction("jetsAOD_UA1", "", "jetsAODMC2_UA1", "AODMC", "AODMC2", filterMask, 0.4,0,1000., eventClass);
ac017ff3 33 // charged MC tracks and jets with acceptance cuts
44b235ce 34 if(iFlag&(1<<2)) ff = AddTaskFragmentationFunction("jetsAOD_UA1", "", "jetsAODMC2_UA1", "AODMCb", "AODMC2b", filterMask, 0.4,0,1000., eventClass);
1db1733e 35 // kine tracks in acceptance, pythia jets in acceptance
44b235ce 36 if(iFlag&(1<<3)) ff = AddTaskFragmentationFunction("jetsAOD_UA1", "", "", "KINEb", "KINEb", filterMask, 0.4,0,1000., eventClass);
1db1733e 37 // reconstructed charged tracks after cuts, MC jets in acceptance
44b235ce 38 if(iFlag&(1<<4)) ff = AddTaskFragmentationFunction("jetsAOD_UA1", "", "jetsMC2b", "AODMCb", "AOD2b", filterMask, 0.4,0,1000., eventClass);
cfd02305 39 // reconstruction efficiency: pointing with rec jet axis into gen tracks
44b235ce 40 if(iFlag&(1<<5)) ff = AddTaskFragmentationFunction("jetsAOD_UA1", "", "jetsAODMC2_UA1", "AODb", "AODMC2b", filterMask, 0.4,0,1000., eventClass);
c2658535 41
c2658535 42
c2658535 43
a5f1b959 44 // Jet background subtracted
45 // anti-kt, pt cut 1 GeV
46 if(iFlag&(1<<20)) ff = AddTaskFragmentationFunction("clustersAOD_ANTIKT", "", "", "", "", filterMask, 0.4,2,1000.,eventClass, "_Skip00");
47 // anti-kt, pt cut 2 GeV
48 if(iFlag&(1<<21)) ff = AddTaskFragmentationFunction("clustersAOD_ANTIKT", "", "", "", "", filterMask, 0.4,2,2000.,eventClass, "_Skip00");
49 // anti-kt, pt cut 150 MeV
50 if(iFlag&(1<<22)) ff = AddTaskFragmentationFunction("clustersAOD_ANTIKT", "", "", "", "", filterMask, 0.2,2,150.,eventClass, "_Skip00");
51
52
44b235ce 53 // Jet background subtracted
a5f1b959 54 if(iFlag&(1<<23)) ff = AddTaskFragmentationFunction("clustersAOD_ANTIKT", "", "", "", "", filterMask, 0.4,2,150.,eventClass, "_Skip00");
44b235ce 55 // charged MC tracks and jets
a5f1b959 56 if(iFlag&(1<<24)) ff = AddTaskFragmentationFunction("clustersAOD_ANTIKT", "", "jetsAODMC2_FASTJET", "AODMC", "AODMC2", filterMask, 0.4,2,150.,eventClass, "_Skip00");
44b235ce 57 // charged MC tracks and jets with acceptance cuts
a5f1b959 58 if(iFlag&(1<<25)) ff = AddTaskFragmentationFunction("clustersAOD_ANTIKT", "", "jetsAODMC2_FASTJET", "AODMCb", "AODMC2b", filterMask, 0.4,2,150., eventClass, "_Skip00");
c2658535 59
a5f1b959 60 if(iFlag&(1<<26)) ff = AddTaskFragmentationFunction("clustersAOD_ANTIKT", "", "", "", "", filterMask, 0.4,1,150.,eventClass, "_Skip00");
b101fa2e 61
34af6526 62 if(iFlag&(1<<27)) ff = AddTaskFragmentationFunction("clustersAOD_ANTIKT", "", "", "", "", filterMask, 0.4,3,150.,eventClass, "_Skip00");
b101fa2e 63
64 // SISCONE
65 if(iFlag&(1<<28)) ff = AddTaskFragmentationFunction("jetsAOD_SISCONE", "", "", "", "", filterMask, 0.4,1,150.,eventClass);
66 if(iFlag&(1<<29)) ff = AddTaskFragmentationFunction("jetsAOD_SISCONE", "", "", "", "", filterMask, 0.4,2,150.,eventClass);
67 if(iFlag&(1<<30)) ff = AddTaskFragmentationFunction("jetsAOD_SISCONE", "", "", "", "", filterMask, 0.4,3,150.,eventClass);
68
1db1733e 69 return ff;
70}
71
72// _______________________________________________________________________________________
73
1aa4f09f 74AliAnalysisTaskFragmentationFunction *AddTaskFragmentationFunctionAllCent(
75 const char* recJetsBranch,
76 const char* recJetsBackBranch,
77 const char* genJetsBranch,
78 const char* jetType,
79 const char* trackType,
80 UInt_t filterMask,
81 Float_t radius,
82 int kBackgroundMode,
6daac008 83 Int_t PtTrackMin,
1aa4f09f 84 TString BrOpt="",
85 TString BrOpt2="",
6daac008 86 TString BrOpt3="",
87 Float_t radiusBckg=0.4,
88 Int_t FFMaxTrackPt = -1,
89 Float_t FFMinNTracks = 0)
1aa4f09f 90{
91
92 // adds task with given configuration for all centralities
93
94 AliAnalysisTaskFragmentationFunction *ff=0;
95
96 for(Int_t eventClass=1; eventClass<=4; eventClass++){
97
98 ff = AddTaskFragmentationFunction(recJetsBranch,
99 recJetsBackBranch,
100 genJetsBranch,
101 jetType,
102 trackType,
103 filterMask,
104 radius,
105 kBackgroundMode,
106 PtTrackMin,
107 eventClass,
108 BrOpt,
109 BrOpt2,
6daac008 110 BrOpt3,
111 radiusBckg
112 FFMaxTrackPt,
113 FFMinNTracks);
1aa4f09f 114 }
115
116 return ff;
117}
118
119// _______________________________________________________________________________________
120
1db1733e 121AliAnalysisTaskFragmentationFunction *AddTaskFragmentationFunction(
122 const char* recJetsBranch,
44b235ce 123 const char* recJetsBackBranch,
1db1733e 124 const char* genJetsBranch,
125 const char* jetType,
126 const char* trackType,
44b235ce 127 UInt_t filterMask,
128 Float_t radius,
129 int kBackgroundMode,
6daac008 130 Int_t PtTrackMin,
44b235ce 131 Int_t eventClass=0,
132 TString BrOpt="",
133 TString BrOpt2="",
6daac008 134 TString BrOpt3="",
135 Float_t radiusBckg=0.4,
136 Int_t FFMaxTrackPt = -1,
137 Int_t FFMinNTracks = 0)
6bec8236 138{
1db1733e 139 // Creates a fragmentation function task,
140 // configures it and adds it to the analysis manager.
141
142 //******************************************************************************
143 //*** Configuration Parameter **************************************************
144 //******************************************************************************
145
146 // space for configuration parameter: histo bin, cuts, ...
147 // so far only default parameter used
148
149 Int_t debug = -1; // debug level, -1: not set here
6bec8236 150
1db1733e 151 //******************************************************************************
152
153
154
6bec8236 155 // Get the pointer to the existing analysis manager via the static access method.
156 //==============================================================================
157 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
158 if (!mgr) {
1db1733e 159 ::Error("AddTaskFragmentationFunction", "No analysis manager to connect to.");
160 return NULL;
161 }
6bec8236 162
163 // Check the analysis type using the event handlers connected to the analysis manager.
164 //==============================================================================
165 if (!mgr->GetInputEventHandler()) {
1db1733e 166 ::Error("AddTaskFragmentationFunction", "This task requires an input event handler");
167 return NULL;
6bec8236 168 }
169
1db1733e 170 TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
171 Printf("Data Type: %s", type.Data());
172
44b235ce 173 TString branchRecBackJets(recJetsBackBranch);
1db1733e 174 TString branchRecJets(recJetsBranch);
175 TString branchGenJets(genJetsBranch);
176 TString typeJets(jetType);
177 TString typeTracks(trackType);
178
44b235ce 179 if(branchRecBackJets.Length()==0) branchRecBackJets = "noRecBackJets";
1db1733e 180 if(branchRecJets.Length()==0) branchRecJets = "noRecJets";
181 if(branchGenJets.Length()==0) branchGenJets = "noGenJets";
182 if(typeTracks.Length()==0) typeTracks = "trackTypeUndef";
183 if(typeJets.Length()==0) typeJets = "jetTypeUndef";
184
6bec8236 185 // Create the task and configure it.
186 //===========================================================================
1db1733e 187
188 AliAnalysisTaskFragmentationFunction *task = new AliAnalysisTaskFragmentationFunction(
44b235ce 189 Form("Fragmentation Function %s %s %s %s", branchRecJets.Data(), branchGenJets.Data(), typeJets.Data(), typeTracks.Data()));
1db1733e 190
191 if(debug>=0) task->SetDebugLevel(debug);
6bec8236 192
1db1733e 193 Printf("Rec Jets %s", branchRecJets.Data());
44b235ce 194 Printf("Back Rec Jets %s", branchRecBackJets.Data());
1db1733e 195 Printf("Gen Jets %s", branchGenJets.Data());
196 Printf("Jet Type %s", typeJets.Data());
197 Printf("Track Type %s", typeTracks.Data());
6bec8236 198
44b235ce 199 // attach the filter mask and options
200 TString cAdd = "";
201 cAdd += Form("%02d",(int)((radius+0.01)*10.));
202 cAdd += Form("_B%d",(int)((kBackgroundMode)));
203 cAdd += Form("_Filter%05d",filterMask);
6daac008 204 cAdd += Form("_Cut%05d",PtTrackMin);
44b235ce 205 cAdd += Form("%s",BrOpt.Data());
206 cAdd += Form("%s",BrOpt2.Data());
6daac008 207
44b235ce 208 Printf("%s",cAdd.Data());
209
210 TString cAddb = "";
211 cAddb += Form("%02d",(int)((radiusBckg+0.01)*10.));
212 cAddb += Form("_B%d",(int)((kBackgroundMode)));
213 cAddb += Form("_Filter%05d",filterMask);
6daac008 214 cAddb += Form("_Cut%05d",PtTrackMin);
44b235ce 215 cAddb += Form("%s",BrOpt.Data());
216 cAddb += Form("%s",BrOpt2.Data());
6daac008 217
44b235ce 218 Printf("%s",cAddb.Data());
219
220 TString cAddmc = "";
221 cAddmc += Form("%02d",(int)((radius+0.01)*10.));
222 cAddmc += Form("_B%d",(int)((kBackgroundMode)));
223 cAddmc += Form("_Filter%05d",filterMask);
6daac008 224 cAddmc += Form("_Cut%05d",PtTrackMin);
225 cAddmc += Form("%s",BrOpt3.Data());
226
44b235ce 227 Printf("%s",cAddmc.Data());
228
229
230 if(branchRecJets.Contains("AOD")&&branchRecJets.Contains("jets")&&!branchRecJets.Contains("MC"))branchRecJets = branchRecJets + cAdd;
231 if(branchRecJets.Contains("AOD")&&branchRecJets.Contains("cluster")&&!branchRecJets.Contains("MC"))branchRecJets = branchRecJets + cAdd;
232
233 if(branchRecBackJets.Contains("back")&&branchRecBackJets.Contains("cluster")&&!branchRecBackJets.Contains("MC"))branchRecBackJets = branchRecBackJets + cAddb;
234
235 if(branchGenJets.Contains("AOD")&&branchGenJets.Contains("MC"))branchGenJets = branchGenJets + cAddmc;
236
237 Printf("Gen jets branch %s: ", branchGenJets.Data());
238 Printf("Rec jets branch %s: ", branchRecJets.Data());
239 Printf("Jet backg branch %s: ", branchRecBackJets.Data());
f4132e7d 240
1db1733e 241 if(!branchRecJets.Contains("noRecJets")) task->SetBranchRecJets(branchRecJets);
44b235ce 242 if(!branchRecBackJets.Contains("noRecBackJets")) task->SetBranchRecBackJets(branchRecBackJets);
1db1733e 243 if(!branchGenJets.Contains("noGenJets")) task->SetBranchGenJets(branchGenJets);
6bec8236 244
245
1db1733e 246 if(typeTracks.Contains("AODMC2b")) task->SetTrackTypeGen(AliAnalysisTaskFragmentationFunction::kTrackAODMCChargedAcceptance);
247 else if(typeTracks.Contains("AODMC2")) task->SetTrackTypeGen(AliAnalysisTaskFragmentationFunction::kTrackAODMCCharged);
248 else if(typeTracks.Contains("AODMC")) task->SetTrackTypeGen(AliAnalysisTaskFragmentationFunction::kTrackAODMCAll);
249 else if(typeTracks.Contains("KINE2b")) task->SetTrackTypeGen(AliAnalysisTaskFragmentationFunction::kTrackKineChargedAcceptance);
250 else if(typeTracks.Contains("KINE2")) task->SetTrackTypeGen(AliAnalysisTaskFragmentationFunction::kTrackKineCharged);
251 else if(typeTracks.Contains("KINE")) task->SetTrackTypeGen(AliAnalysisTaskFragmentationFunction::kTrackKineAll);
252 else if(typeTracks.Contains("AODb")) task->SetTrackTypeGen(AliAnalysisTaskFragmentationFunction::kTrackAODCuts);
253 else if(typeTracks.Contains("AOD")) task->SetTrackTypeGen(AliAnalysisTaskFragmentationFunction::kTrackAOD);
254 else if(typeTracks.Contains("trackTypeUndef")) task->SetTrackTypeGen(0); // undefined
255 else Printf("trackType %s not found", typeTracks.Data());
256
257 if(typeJets.Contains("AODMCb")) task->SetJetTypeGen(AliAnalysisTaskFragmentationFunction::kJetsGenAcceptance);
258 else if(typeJets.Contains("AODMC")) task->SetJetTypeGen(AliAnalysisTaskFragmentationFunction::kJetsGen);
259 else if(typeJets.Contains("KINEb")) task->SetJetTypeGen(AliAnalysisTaskFragmentationFunction::kJetsKineAcceptance);
260 else if(typeJets.Contains("KINE")) task->SetJetTypeGen(AliAnalysisTaskFragmentationFunction::kJetsKine);
261 else if(typeJets.Contains("AODb")) task->SetJetTypeGen(AliAnalysisTaskFragmentationFunction::kJetsRecAcceptance);
262 else if(typeJets.Contains("AOD")) task->SetJetTypeGen(AliAnalysisTaskFragmentationFunction::kJetsRec);
263 else if(typeJets.Contains("jetTypeUndef")) task->SetJetTypeGen(0); // undefined
264 else Printf("jetType %s not found", typeJets.Data());
265
7d9e8b32 266 if(typeJets.Contains("AODMCb")) task->SetJetTypeRecEff(AliAnalysisTaskFragmentationFunction::kJetsGenAcceptance); // kJetsRecAcceptance
267 else if(typeJets.Contains("AODb")) task->SetJetTypeRecEff(AliAnalysisTaskFragmentationFunction::kJetsRecAcceptance);
268 else task->SetJetTypeRecEff(0);
269
1db1733e 270 task->SetFilterMask(filterMask);
44b235ce 271 task->SetEventClass(eventClass);
1db1733e 272
f3564520 273 // Set default parameters
274 // Cut selection
6daac008 275
276 if(PtTrackMin == 150) task->SetTrackCuts(); // default : pt > 0.150 GeV, |eta|<0.9, full phi acc
277 else if(PtTrackMin == 1000) task->SetTrackCuts(1.0, -0.9, 0.9, 0., 2*TMath::Pi());
278 else if(PtTrackMin == 2000) task->SetTrackCuts(2.0, -0.9, 0.9, 0., 2*TMath::Pi());
279 else task->SetTrackCuts(0.001*PtTrackMin,-0.9, 0.9, 0., 2*TMath::Pi());
a5f1b959 280
281
6daac008 282 task->SetJetCuts(); // default: jet pt > 5 GeV, |eta|<0.5, full phi acc
283 task->SetDiJetCuts(); // default: type of cut = 1 (cut in deltaPhi), deltaPhi = 0., cdf = 0.5, fraction of pt = 0.6
284 task->SetKindSlices(); // default: kindSlice = 1 (inv mass)
633ed180 285 task->SetFFRadius(radius);
6daac008 286 task->SetFFBckgRadius(); // default: R = 0.7
287 task->SetBckgSubMethod(); // default: subMethod = O, 1 = leading jet removed for rho extraction, 2 = 2 leading jets removed
288 task->SetIJMode(0); // default: ijMode = 1
289 task->SetQAMode(); // default: qaMode = 3
290 task->SetFFMode(); // default: ffMode = 1
b101fa2e 291 task->SetDJMode(0); // default: djMode = 1
292 task->SetEffMode(0); // default: effMode = 1
9cefe9be 293 task->SetPhiCorrMode(1); // default: phiCorrMode = 1
a5f1b959 294 task->SetHighPtThreshold(); // default: pt > 5 Gev
cb76764e 295 task->UseRecEffRecJetPtBins(); // efficiency in bins of rec/gen jet pt - default: kTRUE
296
c08c3ad2 297 task->SetBckgMode(1); // default: bgMode = 1
3170a3f8 298 task->SetBckgType();
d5e8640d 299 task->SetBranchRecBackClusters(Form("clustersAOD_KT04_B0_Filter%05d_Cut00150_Skip00",filterMask));
c08c3ad2 300
f3564520 301 // Define histo bins
a5f1b959 302 task->SetFFHistoBins(23, 5, 120, 480, 0., 120.,70, 0., 7.,22, 0., 1.1);
303
1db1733e 304 task->SetQAJetHistoBins();
305 task->SetQATrackHistoBins();
f3564520 306 task->SetIJHistoBins();
307 task->SetDiJetHistoBins();
308 task->SetQADiJetHistoBins();
1db1733e 309
6daac008 310 if(FFMaxTrackPt>0) task->SetFFMaxTrackPt(FFMaxTrackPt);
311 if(FFMinNTracks>0) task->SetFFMinNTracks(FFMinNTracks);
312
1db1733e 313 mgr->AddTask(task);
6bec8236 314
6bec8236 315 // Create ONLY the output containers for the data produced by the task.
316 // Get and connect other common input/output containers via the manager as below
317 //==============================================================================
6bec8236 318
6daac008 319 TString strList(Form("fracfunc_%s_%s_%s_%s_cl%d", branchRecJets.Data(), branchGenJets.Data(), typeTracks.Data(), typeJets.Data(), eventClass));
320
321 TString strDir(Form("%s:PWGJE_FragmentationFunction_%s_%s_%s_%s_cl%d",
322 AliAnalysisManager::GetCommonFileName(), branchRecJets.Data(), branchGenJets. Data(),
323 typeTracks.Data(), typeJets.Data(), eventClass));
324
325
326 if(FFMaxTrackPt>0){
327 strList += Form("_FFMaxPt%d", FFMaxTrackPt);
328 strDir += Form("_FFMaxPt%d", FFMaxTrackPt);
329 }
330 if(FFMinNTracks>0){
331 strList += Form("_minNTr%d",FFMinNTracks);
332 strDir += Form("_minNTr%d",FFMinNTracks);
333 }
334
335 AliAnalysisDataContainer *coutput_FragFunc = mgr->CreateContainer(strList,TList::Class(),
336 AliAnalysisManager::kOutputContainer,
337 strDir);
1db1733e 338
339 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
340 mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
341 mgr->ConnectOutput (task, 1, coutput_FragFunc);
6bec8236 342
1db1733e 343 return task;
6bec8236 344}