]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/correlationHF/macros/AddTaskDStarCorrelations.C
Changed and of line style
[u/mrichter/AliRoot.git] / PWGHF / correlationHF / macros / AddTaskDStarCorrelations.C
CommitLineData
ba090d39 1 //DEFINITION OF A FEW CONSTANTS\r
2//----------------------------------------------------\r
3\r
4/* $Id$ */\r
5\r
081ace74 6AliAnalysisTaskDStarCorrelations *AddTaskDStarCorrelations(AliAnalysisTaskDStarCorrelations::CollSyst syst, \r
7 Bool_t theMCon, Bool_t mixing, Bool_t UseReco=kTRUE,Bool_t UseHadChannelinMC,Bool_t fullmode = kFALSE,Bool_t UseEffic=kFALSE,Bool_t UseDEffic = kFALSE,\r
8 AliAnalysisTaskDStarCorrelations::DEffVariable var,\r
9 Int_t trackselect =1, Int_t usedispl =0, Int_t nbins, Float_t DStarSigma, Float_t D0Sigma, Float_t D0SBSigmaLow, Float_t D0SBSigmaHigh, Float_t eta,\r
e9b1e63f 10 TString DStarCutsFile, TString TrackCutsFile,\r
ba090d39 11 Int_t tasknumber = 0)\r
12{\r
13\r
081ace74 14 \r
ba090d39 15 \r
16 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
17 if (!mgr) {\r
18 ::Error(" AliAnalysisTaskDStarCorrelations", "No analysis manager to connect to.");\r
19 return NULL;\r
20 } \r
21\r
22 cout << "==========================================================" << endl;\r
23 cout << "Set Inputs : " << endl;\r
24 cout << " " << endl;\r
25 if(syst == AliAnalysisTaskDStarCorrelations::pp) cout << "Running on pp @ 7 TeV" << endl;\r
081ace74 26 if(syst == AliAnalysisTaskDStarCorrelations::pA) cout << "Running on pPb @ 5.02 TeV" << endl;\r
27 if(syst == AliAnalysisTaskDStarCorrelations::AA) cout << "Running on PbPb @ 2.76 TeV" << endl;\r
ba090d39 28 \r
29 if(theMCon) cout << "Analysis on MonteCarlo" << endl;\r
30 else cout << "Analysis on Data" << endl;\r
31 \r
32 if(mixing) cout << "Analysis on Mixed Events" << endl;\r
33 else cout << "Analysis on Single Events" << endl;\r
34 \r
35 if(UseReco) cout << "Using Reconstructed objects" << endl;\r
36 else cout << "Using Pure MC information " << endl;\r
37\r
38 if(fullmode) cout << "Running in full mode" << endl;\r
39 else cout << "Running in fast mode " << endl;\r
40 \r
41 if(UseEffic) cout << "Using single track efficiency map" << endl;\r
42 else cout << "Not Using single track efficiency map " << endl;\r
43 \r
44 if(UseDEffic) cout << "Using Dmeson efficiency map" << endl;\r
45 else cout << "Not Using Dmeson efficiency map " << endl;\r
081ace74 46 \r
47 \r
48 if(var == AliAnalysisTaskDStarCorrelations::kNone) cout << "Applying D Efficiency map vs pT " << endl;\r
49 if(var == AliAnalysisTaskDStarCorrelations::kMult) cout << "Applying D Efficiency map vs pT vs Multiplicity" << endl;\r
50 if(var == AliAnalysisTaskDStarCorrelations::kCentr) cout << "Applying D Efficiency map vs pT vs Centrality" << endl;\r
51 if(var == AliAnalysisTaskDStarCorrelations::kRapidity) cout << "Applying D Efficiency map vs pT vs Rapidity" << endl;\r
52 if(var == AliAnalysisTaskDStarCorrelations::kEta) cout << "Applying D Efficiency map vs pT vs Eta" << endl;\r
ba090d39 53\r
54 if(trackselect == 1) cout << "Correlating with hadrons" << endl;\r
55 if(trackselect == 2) cout << "Correlating with kaons" << endl;\r
56 if(trackselect == 3) cout << "Correlating with kzeros" << endl;\r
57 \r
58 if(usedispl == 0) cout << "Not using displacement cut" << endl;\r
59 if(usedispl == 1) cout << "Using absolute displacement cut" << endl;\r
60 if(usedispl == 2) cout << "Using relative displacement cut" << endl;\r
61 \r
62 \r
63 cout << "Number of bins in deltaphi = " << nbins << endl;\r
64 \r
65 cout << "N of Sigmas in D* selection =" << DStarSigma << endl;\r
66 cout << "N of Sigmas in D0 selection = " << D0Sigma << endl;\r
67 cout << "D0 Sidebands taken from = " << D0SBSigmaLow << " - " << D0SBSigmaHigh << " sigmas " << endl; endl;\r
68 \r
69 \r
70 \r
71 cout << "DStar cut object: " << DStarCutsFile << endl;\r
72 cout << "Tracks cut object: " << TrackCutsFile << endl;\r
e9b1e63f 73 \r
ba090d39 74 \r
75 cout << "==========================================================" << endl;\r
76 //gSystem->Sleep(2000);\r
77 \r
78// TString DCutObjPath = "CutObjects/DStar/";\r
79 \r
80 \r
81// ******************************** OPENING THE D* CUTS ************************************\r
82 cout << "Getting D meson cut object from file \n" << DStarCutsFile.Data() << "\n " << endl;\r
83255e16 83 TFile* filecuts=TFile::Open(DStarCutsFile.Data());\r
ba090d39 84 if(!filecuts->IsOpen()){\r
85 cout<<"DStar cut object file not found: exit"<<endl;\r
86 return;\r
87 }\r
88 \r
89 AliRDHFCutsDStartoKpipi* RDHFDStartoKpipi=new AliRDHFCutsDStartoKpipi();\r
90 RDHFDStartoKpipi = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts");\r
91 RDHFDStartoKpipi->SetName("DStartoKpipiCuts");\r
92 \r
93 // mm let's see if everything is ok\r
94 if(!RDHFDStartoKpipi){\r
95 cout<<"Specific AliRDHFCuts not found"<<endl;\r
96 return;\r
97 }\r
98 \r
99 \r
100 // RDHFDStartoKpipi->SetTriggerClass("");\r
101 // RDHFDStartoKpipi->SetTriggerMask(AliVEvent::kCentral);\r
102 \r
103 \r
104 \r
105// ******************************** OPENING THE ASSOCIATED TRACK CUTS ************************************\r
106 cout << "Getting associated track cut object from file \n" << TrackCutsFile.Data() << "\n " << endl;\r
83255e16 107 TFile* filecuts2=TFile::Open(TrackCutsFile.Data());\r
ba090d39 108 if(!filecuts2->IsOpen()){\r
109 cout<<"Track cut object file not found: exit"<<endl;\r
110 return;\r
111 }\r
112 AliHFAssociatedTrackCuts* corrCuts=new AliHFAssociatedTrackCuts();\r
113 corrCuts = (AliHFAssociatedTrackCuts*)filecuts2->Get("AssociatedCuts");\r
114 corrCuts->SetName("AssociatedCuts");\r
e9b1e63f 115 corrCuts->PrintAll();\r
ba090d39 116 if(!corrCuts){\r
117 cout<<"Specific associated track cuts not found"<<endl;\r
118 return;\r
119 }\r
120 \r
ba090d39 121\r
ba090d39 122// ******************************** SELECTING THE MC PROCESS ************************************\r
123\r
124 TString selectMCproc = "";\r
125 \r
126 Int_t NMCevents = corrCuts->GetNofMCEventType();\r
127 for(Int_t k=0; k<NMCevents; k++){\r
128 Int_t * MCEventType = corrCuts->GetMCEventType();\r
129 selectMCproc += Form("%d",MCEventType[k]);\r
130 }\r
131\r
132 cout << "Select process string = " << selectMCproc << endl;\r
133 \r
134\r
135\r
136// ******************************** CREATING THE TASK ************************************\r
137 \r
138 printf("CREATE TASK \n");\r
139 // create the task\r
140 AliAnalysisTaskDStarCorrelations *task = new AliAnalysisTaskDStarCorrelations("AliAnalysisTaskDStarCorrelations",RDHFDStartoKpipi,corrCuts,syst,fullmode);\r
141 \r
142 // Setters\r
143\r
144 if(!theMCon) {\r
145 printf("Analysis on Data - reconstruction only!");\r
146 UseReco = kTRUE;\r
081ace74 147 printf("Analysis on Data - hadronic channel only!");\r
148 UseHadChannelinMC = kFALSE;\r
ba090d39 149 }\r
ba090d39 150 \r
081ace74 151 \r
152\r
153 \r
ba090d39 154 \r
155 task->SetNofPhiBins(nbins);\r
156 task->SetMonteCarlo(theMCon);\r
157 task->SetUseMixing(mixing);\r
158 task->SetCorrelator(trackselect) ;\r
159 task->SetUseDisplacement(usedispl);\r
160 //task->SetCollSys(syst);\r
161 task->SetLevelOfDebug(2);\r
162 task->SetUseReconstruction(UseReco); // set kTRUE for Using Reconstruction, kFALSe for MC Truth\r
163 task->SetDMesonSigmas(DStarSigma,D0Sigma,D0SBSigmaLow,D0SBSigmaHigh);\r
164 //task->SetDMesonSigmas(sigmas);\r
165 //task->SetDMesonSigmas(sigmas);\r
166 task->SetUseEfficiencyCorrection(UseEffic);\r
167 task->SetUseDmesonEfficiencyCorrection(UseDEffic);\r
081ace74 168 \r
169 task->SetEfficiencyVariable(var);\r
170 task->SetMaxDStarEta(eta);\r
171 task->SetUseHadronicChannelAtKineLevel(UseHadChannelinMC);\r
ba090d39 172 \r
173\r
174 if(trackselect == 1) Info(" AliAnalysisTaskDStarCorrelations","Correlating D* with charged hadrons \n");\r
175 else if(trackselect == 2) Info(" AliAnalysisTaskDStarCorrelations","Correlating D* with charged kaons \n");\r
176 else if(trackselect == 3) Info(" AliAnalysisTaskDStarCorrelations","Correlating D* with reconstructed K0s \n");\r
177 else Fatal(" AliAnalysisTaskDStarCorrelations","Nothing to correlate with!");\r
178 if(mixing) Info (" AliAnalysisTaskDStarCorrelations","Event Mixing Analysis\n");\r
179 if(!mixing) Info (" AliAnalysisTaskDStarCorrelations","Single Event Analysis \n");\r
180\r
181 // Create and connect containers for input/output\r
182 //TString dcavalue = " ";\r
183 if(!theMCon) TString contname = "Data";\r
184 if(theMCon) TString contname = "MonteCarlo";\r
185 TString contname2 = "MC";\r
186 if(trackselect ==1) TString particle = "Hadron";\r
187 if(trackselect ==2) TString particle = "Kaon";\r
188 if(trackselect ==3) TString particle = "KZero";\r
189 \r
190 TString cutname = "cuts" ;\r
191 TString cutname2 = "hadroncuts" ;\r
192 TString outputfile = AliAnalysisManager::GetCommonFileName();\r
193 TString outputfileMC = AliAnalysisManager::GetCommonFileName();\r
194 TString counter = "NormCounter";\r
195 outputfile += ":PWGHF_HFCJ_";\r
196 outputfileMC += ":PWGHF_HFCJ_";\r
197 \r
198 if(!mixing) {\r
199 outputfile += "SE";\r
200 outputfileMC += "SE";\r
201 contname += "SE";\r
202 contname2 += "SE";\r
203 cutname += "SE";\r
204 cutname2 += "SE";\r
205 counter+= "SE";\r
206 }\r
207 if(mixing){\r
208 outputfile += "ME";\r
209 outputfileMC += "ME";\r
210 contname += "ME";\r
211 contname2 += "ME";\r
212 cutname += "ME";\r
213 cutname2 += "ME";\r
214 counter+= "ME";\r
215 }\r
216 \r
217\r
218 \r
219 outputfile += "Dphi_DStar";\r
220 outputfileMC += "Dphi_DStar";\r
221 outputfile += particle;\r
222 outputfileMC += particle;\r
223 cutname += particle;\r
224 cutname2 += particle;\r
225 contname += particle;\r
226 contname2 += particle;\r
227 counter+= particle;\r
228 \r
229 if(UseEffic){\r
230 outputfile += "_EffY_";\r
231 outputfileMC += "_EffY_";\r
232 contname += "_EffY_";\r
233 contname2 += "_EffY_";\r
234 cutname += "_EffY_";\r
235 cutname2 += "_EffY_";\r
236 counter+= "_EffY_";\r
237 }\r
238 \r
239 if(!UseEffic){\r
240 outputfile += "_EffN_";\r
241 outputfileMC += "_EffN_";\r
242 contname += "_EffN_";\r
243 contname2 += "_EffN_";\r
244 cutname += "_EffN_";\r
245 cutname2 += "_EffN_";\r
246 counter+= "_EffN_";\r
247 }\r
248 \r
249 if(UseDEffic){\r
081ace74 250 TString string = "DEffY_";\r
251 \r
252 if(var == AliAnalysisTaskDStarCorrelations::kNone) string += "vsPt_";\r
253 if(var == AliAnalysisTaskDStarCorrelations::kMult) string += "vsPtMult_";\r
254 if(var == AliAnalysisTaskDStarCorrelations::kCentr) string += "vsPCentrt_";\r
255 if(var == AliAnalysisTaskDStarCorrelations::kRapidity) string += "vsPtY_";\r
256 if(var == AliAnalysisTaskDStarCorrelations::kEta) string += "vsPtEta_";\r
257 \r
258 outputfile += string;\r
259 outputfileMC += string;\r
260 contname += string;\r
261 contname2 += string;\r
262 cutname += string;\r
263 cutname2 += string;\r
264 counter+= string;\r
ba090d39 265 }\r
266 \r
267 if(!UseDEffic){\r
268 outputfile += "DEffN_";\r
269 outputfileMC += "DEffN_";\r
270 contname += "DEffN_";\r
271 contname2 += "DEffN_";\r
272 cutname += "DEffN_";\r
273 cutname2 += "DEffN_";\r
274 counter+= "DEffN_";\r
275 }\r
276 \r
277 \r
278 outputfile += Form("%d_bins_",nbins);\r
279 outputfileMC += Form("%d_bins_",nbins);\r
280 cutname += Form("%d_bins_",nbins);\r
281 cutname2 += Form("%d_bins_",nbins);\r
282 contname += Form("%d_bins_",nbins);\r
283 contname2 += Form("%d_bins_",nbins);\r
284 counter+= Form("%d_bins_",nbins);\r
285 \r
286 \r
287 outputfile += Form("task_%d",tasknumber);\r
288 outputfileMC += Form("task_%d",tasknumber);\r
289 cutname += Form("task_%d",tasknumber);\r
290 cutname2 += Form("task_%d",tasknumber);\r
291 contname += Form("task_%d",tasknumber);\r
292 contname2 += Form("task_%d",tasknumber);\r
293 counter+= Form("task_%d",tasknumber);\r
294 \r
295/* outputfile += TrackCutObjNamePrefix;\r
296 outputfileMC += TrackCutObjNamePrefix;\r
297 cutname += TrackCutObjNamePrefix;\r
298 cutname2 += TrackCutObjNamePrefix;\r
299 contname += TrackCutObjNamePrefix;\r
300 contname2 += TrackCutObjNamePrefix;\r
301 counter+= TrackCutObjNamePrefix;\r
302*/ \r
303 outputfile += selectMCproc;\r
304 outputfileMC += selectMCproc;\r
305 cutname += selectMCproc;\r
306 cutname2 += selectMCproc;\r
307 contname += selectMCproc;\r
308 contname2 += selectMCproc;\r
309 counter+= selectMCproc;\r
310 \r
311 TString reco = "";\r
312 \r
313 if(UseReco) reco = "_reco";\r
081ace74 314 if(!UseReco) {\r
315 if(UseHadChannelinMC) reco = "_MCTruthHadChan";\r
316 if(!UseHadChannelinMC) reco = "_MCTruthAllChan";\r
317 }\r
ba090d39 318 outputfile += reco;\r
319 outputfileMC += reco;\r
320 cutname += reco;\r
321 cutname2 += reco;\r
322 contname += reco;\r
323 contname2 += reco;\r
324 counter+= reco;\r
325 \r
326 TString nsigma = Form("_%.0f_%.0f%.0f%.0f_sigmas",DStarSigma,D0Sigma,D0SBSigmaLow,D0SBSigmaHigh);\r
327 \r
328 //cout << "nsigma string = "<< nsigma << endl;\r
329 \r
330 outputfile += nsigma;\r
331 outputfileMC += nsigma;\r
332 cutname += nsigma;\r
333 cutname2 += nsigma;\r
334 contname += nsigma;\r
335 contname2 += nsigma;\r
336 counter+= nsigma;\r
337 \r
338 \r
339 cout << contname << endl;\r
340 cout << contname2 << endl;\r
341 cout << cutname << endl;\r
342 cout << cutname2 << endl;\r
343 cout << counter << endl;\r
344 cout << outputfile << endl;\r
345 //return;\r
346 \r
347 mgr->AddTask(task);\r
348 // ------ input data ------\r
349 AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();\r
350 \r
351 // ----- output data -----\r
352 \r
353 // output TH1I for event counting\r
354 \r
355 //TLists\r
356 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());\r
357 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(contname2, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileMC.Data());\r
358 // Cut Objects\r
359 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(cutname,AliRDHFCutsDStartoKpipi::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data()); //cuts D\r
360 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer(cutname2,AliHFAssociatedTrackCuts::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data()); //cuts tracks\r
361 // Normalization Counter\r
362 AliAnalysisDataContainer *coutput5 = mgr->CreateContainer(counter,AliNormalizationCounter::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data());\r
363 \r
364 \r
365 mgr->ConnectInput(task,0,mgr->GetCommonInputContainer());\r
366 mgr->ConnectOutput(task,1,coutput1);\r
367 mgr->ConnectOutput(task,2,coutput2);\r
368 mgr->ConnectOutput(task,3,coutput3);\r
369 mgr->ConnectOutput(task,4,coutput4);\r
370 mgr->ConnectOutput(task,5,coutput5);\r
371\r
372 return task ;\r
373\r
374}\r
375\r