]>
Commit | Line | Data |
---|---|---|
c5704d5c | 1 | // system: 0: PbPb 1: pp |
143d78d1 | 2 | // singlesOnly: 0: full correlations 1: singles only |
3 | // useWeights: 0: no 1: yes | |
c5704d5c | 4 | // centralityMethod: 3: track count 4: V0 centrality |
143d78d1 | 5 | ///////////////////////////////////////////////////////////////////////////////// |
2542e3ae | 6 | AliAnalysisTaskDptDptQA *AddTaskDptQA |
7 | (int system = 0, | |
8 | int singlesOnly = 0, | |
9 | int useWeights = 0, | |
10 | int centralityMethod = 4, | |
c5704d5c | 11 | int centralitySelected = 4, |
2542e3ae | 12 | double etaMin = -0.8, |
c5704d5c | 13 | double etaMax = 0.8, |
14 | int trackFilterBit = 128, | |
15 | char *inputHistogramFileName = "alien:///alice/cern.ch/user/p/prabhat/CalibFiles/PbPbCalib_dca1.root" | |
2542e3ae | 16 | ) |
17 | ||
18 | { | |
19 | // Set Default Configuration of this analysis | |
20 | // ========================================== | |
21 | int debugLevel = 0; | |
22 | int rejectPileup = 1; | |
23 | int rejectPairConversion = 1; | |
24 | int sameFilter = 1; | |
2542e3ae | 25 | |
c5704d5c | 26 | int nCentrality; |
2542e3ae | 27 | double minCentrality[10]; |
28 | double maxCentrality[10]; | |
29 | ||
30 | if (system==0) // PbPb | |
31 | { | |
c5704d5c | 32 | if (centralityMethod == 4) |
33 | { | |
34 | nCentrality = 10; | |
35 | minCentrality[0] = 0.0; maxCentrality[0] = 5.0; | |
36 | minCentrality[1] = 5.0; maxCentrality[1] = 10.; | |
37 | minCentrality[2] = 10.; maxCentrality[2] = 20.; | |
38 | minCentrality[3] = 20.; maxCentrality[3] = 30.; | |
39 | minCentrality[4] = 30.; maxCentrality[4] = 40.; | |
40 | minCentrality[5] = 40.; maxCentrality[5] = 50.; | |
41 | minCentrality[6] = 50.; maxCentrality[6] = 60.; | |
42 | minCentrality[7] = 60.; maxCentrality[7] = 70.; | |
43 | minCentrality[8] = 70.; maxCentrality[8] = 80.; | |
44 | minCentrality[9] = 80.; maxCentrality[9] = 90.; | |
45 | ||
46 | } | |
47 | else | |
48 | { | |
49 | ||
50 | return 0; | |
51 | } | |
2542e3ae | 52 | } |
c5704d5c | 53 | |
2542e3ae | 54 | double zMin = -10.; |
55 | double zMax = 10.; | |
56 | double ptMin = 0.2; | |
57 | double ptMax = 2.0; | |
c5704d5c | 58 | |
59 | double dcaZMin = -3.0; | |
60 | double dcaZMax = 3.0; | |
61 | double dcaXYMin = -3.0; | |
62 | double dcaXYMax = 3.0; | |
2542e3ae | 63 | double dedxMin = 0.0; |
64 | double dedxMax = 20000.0; | |
c5704d5c | 65 | int nClusterMin = 70; |
2542e3ae | 66 | int requestedCharge1 = 1; //default |
67 | int requestedCharge2 = -1; //default | |
68 | ||
69 | ||
70 | // Get the pointer to the existing analysis manager via the static access method. | |
71 | // ============================================================================== | |
72 | AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager(); | |
73 | ||
74 | if (!analysisManager) | |
75 | { | |
76 | ::Error("AddTaskDptDptCorrelations", "No analysis manager to connect to."); | |
77 | return NULL; | |
78 | } | |
79 | ||
80 | TString part1Name; | |
81 | TString part2Name; | |
82 | TString eventName; | |
83 | TString prefixName = "Corr_"; | |
84 | TString pileupRejecSuffix = "_PileupRejec"; | |
85 | TString pairRejecSuffix = "_PairRejec"; | |
86 | TString calibSuffix = "_calib"; | |
87 | TString singlesOnlySuffix = "_SO"; | |
88 | TString suffix; | |
89 | ||
90 | TString inputPath = "."; | |
91 | TString outputPath = "."; | |
92 | TString baseName; | |
93 | TString listName; | |
94 | TString taskName; | |
2542e3ae | 95 | TString outputHistogramFileName; |
96 | ||
97 | // Create the task and add subtask. | |
98 | // =========================================================================== | |
99 | int iTask = 0; // task counter | |
100 | AliAnalysisDataContainer *taskInputContainer; | |
101 | AliAnalysisDataContainer *taskOutputContainer; | |
102 | AliAnalysisTaskDptDptQA* task; | |
143d78d1 | 103 | |
c5704d5c | 104 | TFile * inputFile = 0; |
105 | TList * histoList = 0; | |
106 | TH3F * weight_1 = 0; | |
107 | TH3F * weight_2 = 0; | |
108 | ||
109 | int iCentrality = centralitySelected; | |
110 | outputHistogramFileName = baseName; | |
111 | if (singlesOnly) outputHistogramFileName += singlesOnlySuffix; | |
112 | outputHistogramFileName += ".root"; | |
143d78d1 | 113 | |
c5704d5c | 114 | if (useWeights) |
115 | { | |
116 | TGrid::Connect("alien:"); | |
117 | inputFile = TFile::Open(inputHistogramFileName,"OLD"); | |
118 | if (!inputFile) | |
119 | { | |
120 | cout << "Requested file:" << inputHistogramFileName << " was not opened. ABORT." << endl; | |
121 | return; | |
122 | } | |
123 | } | |
124 | ||
125 | //============================ | |
126 | // (+,+) | |
127 | //============================ | |
128 | requestedCharge1 = 1; | |
129 | requestedCharge2 = 1; | |
130 | sameFilter = 1; | |
131 | part1Name = "P_"; | |
132 | part1Name += trackFilterBit; | |
133 | part1Name += "_"; | |
134 | part1Name += int(1000*etaMax); | |
135 | part1Name += "_"; | |
136 | part1Name += int(1000*ptMin); | |
137 | part1Name += "pt"; | |
138 | part1Name += int(1000*ptMax); | |
139 | part1Name += "_"; | |
140 | part2Name = "P_"; | |
141 | part2Name += int(1000*etaMax); | |
142 | part2Name += "_"; | |
143 | part2Name += int(1000*ptMin); | |
144 | part2Name += "pt"; | |
145 | part2Name += int(1000*ptMax); | |
146 | part2Name += "_"; | |
147 | eventName = ""; | |
148 | eventName += int(10.*minCentrality[iCentrality] ); | |
149 | eventName += "Vo"; | |
150 | eventName += int(10.*maxCentrality[iCentrality] ); | |
151 | baseName = prefixName; | |
152 | baseName += part1Name; | |
153 | baseName += part2Name; | |
154 | baseName += eventName; | |
155 | listName = baseName; | |
156 | taskName = baseName; | |
157 | if (useWeights) | |
158 | { | |
159 | TString nameHistoBase = "correction_"; | |
160 | TString nameHisto; | |
161 | nameHistoBase += eventName; | |
162 | nameHisto = nameHistoBase + "_p"; | |
163 | cout << "Input Histogram named: " << nameHisto << endl; | |
164 | weight_1 = (TH3F *) inputFile->Get(nameHisto); | |
165 | weight_2 = weight_1; | |
166 | } | |
167 | else | |
168 | { | |
169 | weight_1 = 0; | |
170 | weight_2 = 0; | |
171 | } | |
172 | task = new AliAnalysisTaskDptDptQA(taskName); | |
173 | //configure my task | |
174 | task->SetDebugLevel( debugLevel ); | |
175 | task->SetSameFilter( sameFilter ); | |
176 | task->SetSinglesOnly( singlesOnly ); | |
177 | task->SetUseWeights( useWeights ); | |
178 | task->SetRejectPileup( rejectPileup ); | |
179 | task->SetRejectPairConversion(rejectPairConversion); | |
180 | task->SetVertexZMin( zMin ); | |
181 | task->SetVertexZMax( zMax ); | |
182 | task->SetVertexXYMin( -1. ); | |
183 | task->SetVertexXYMax( 1. ); | |
184 | task->SetCentralityMethod( centralityMethod); | |
185 | task->SetCentrality( minCentrality[iCentrality], maxCentrality[iCentrality]); | |
186 | task->SetPtMin1( ptMin ); | |
187 | task->SetPtMax1( ptMax ); | |
188 | task->SetEtaMin1( etaMin ); | |
189 | task->SetEtaMax1( etaMax ); | |
190 | task->SetPtMin2( ptMin ); | |
191 | task->SetPtMax2( ptMax ); | |
192 | task->SetEtaMin2( etaMin ); | |
193 | task->SetEtaMax2( etaMax ); | |
194 | task->SetDcaZMin( dcaZMin ); | |
195 | task->SetDcaZMax( dcaZMax ); | |
196 | task->SetDcaXYMin( dcaXYMin ); | |
197 | task->SetDcaXYMax( dcaXYMax ); | |
198 | task->SetDedxMin( dedxMin ); | |
199 | task->SetDedxMax( dedxMax ); | |
200 | task->SetNClusterMin( nClusterMin ); | |
201 | task->SetTrackFilterBit( trackFilterBit ); | |
202 | task->SetRequestedCharge_1( requestedCharge1); | |
203 | task->SetRequestedCharge_2( requestedCharge2); | |
204 | task->SetWeigth_1( weight_1 ); | |
205 | task->SetWeigth_2( weight_2 ); | |
206 | ||
207 | ||
208 | cout << "Creating task output container" << endl; | |
209 | taskOutputContainer = analysisManager->CreateContainer(listName, | |
210 | TList::Class(), | |
211 | AliAnalysisManager::kOutputContainer, | |
212 | Form("%s:Histos", AliAnalysisManager::GetCommonFileName())); | |
213 | cout << "Add task to analysis manager and connect it to input and output containers" << endl; | |
214 | analysisManager->AddTask(task); | |
215 | analysisManager->ConnectInput( task, 0, analysisManager->GetCommonInputContainer()); | |
216 | analysisManager->ConnectOutput(task, 0, taskOutputContainer ); | |
217 | cout << "(+,+) Task added ...." << endl; | |
218 | ||
219 | //============================ | |
220 | // (+,-) | |
221 | //============================ | |
222 | requestedCharge1 = 1; | |
223 | requestedCharge2 = -1; | |
224 | sameFilter = 0; | |
225 | part1Name = "P_"; | |
226 | part1Name += trackFilterBit; | |
227 | part1Name += "_"; | |
228 | part1Name += int(1000*etaMax); | |
229 | part1Name += "_"; | |
230 | part1Name += int(1000*ptMin); | |
231 | part1Name += "pt"; | |
232 | part1Name += int(1000*ptMax); | |
233 | part1Name += "_"; | |
234 | part2Name = "M_"; | |
235 | part2Name += trackFilterBit; | |
236 | part2Name += int(1000*etaMax); | |
237 | part2Name += "_"; | |
238 | part2Name += int(1000*ptMin); | |
239 | part2Name += "pt"; | |
240 | part2Name += int(1000*ptMax); | |
241 | part2Name += "_"; | |
242 | eventName = ""; | |
243 | eventName += int(10.*minCentrality[iCentrality] ); | |
244 | eventName += "Vo"; | |
245 | eventName += int(10.*maxCentrality[iCentrality] ); | |
246 | baseName = prefixName; | |
247 | baseName += part1Name; | |
248 | baseName += part2Name; | |
249 | baseName += eventName; | |
250 | listName = baseName; | |
251 | taskName = baseName; | |
252 | if (useWeights) | |
253 | { | |
254 | TString nameHistoBase = "correction_"; | |
255 | TString nameHisto; | |
256 | nameHistoBase += eventName; | |
257 | nameHisto = nameHistoBase + "_p"; | |
258 | cout << "Input Histogram named: " << nameHisto << endl; | |
259 | weight_1 = (TH3F *) inputFile->Get(nameHisto); | |
260 | nameHisto = nameHistoBase + "_m"; | |
261 | cout << "Input Histogram named: " << nameHisto << endl; | |
262 | weight_2 = (TH3F *) inputFile->Get(nameHisto); | |
263 | } | |
264 | else | |
265 | { | |
266 | weight_1 = 0; | |
267 | weight_2 = 0; | |
268 | } | |
269 | task = new AliAnalysisTaskDptDptQA(taskName); | |
270 | //configure my task | |
271 | task->SetDebugLevel( debugLevel ); | |
272 | task->SetSameFilter( sameFilter ); | |
273 | task->SetSinglesOnly( singlesOnly ); | |
274 | task->SetUseWeights( useWeights ); | |
275 | task->SetRejectPileup( rejectPileup ); | |
276 | task->SetRejectPairConversion(rejectPairConversion); | |
277 | task->SetVertexZMin( zMin ); | |
278 | task->SetVertexZMax( zMax ); | |
279 | task->SetVertexXYMin( -1. ); | |
280 | task->SetVertexXYMax( 1. ); | |
281 | task->SetCentralityMethod( centralityMethod); | |
282 | task->SetCentrality( minCentrality[iCentrality], maxCentrality[iCentrality]); | |
283 | task->SetPtMin1( ptMin ); | |
284 | task->SetPtMax1( ptMax ); | |
285 | task->SetEtaMin1( etaMin ); | |
286 | task->SetEtaMax1( etaMax ); | |
287 | task->SetPtMin2( ptMin ); | |
288 | task->SetPtMax2( ptMax ); | |
289 | task->SetEtaMin2( etaMin ); | |
290 | task->SetEtaMax2( etaMax ); | |
291 | task->SetDcaZMin( dcaZMin ); | |
292 | task->SetDcaZMax( dcaZMax ); | |
293 | task->SetDcaXYMin( dcaXYMin ); | |
294 | task->SetDcaXYMax( dcaXYMax ); | |
295 | task->SetDedxMin( dedxMin ); | |
296 | task->SetDedxMax( dedxMax ); | |
297 | task->SetNClusterMin( nClusterMin ); | |
298 | task->SetTrackFilterBit( trackFilterBit ); | |
299 | task->SetRequestedCharge_1( requestedCharge1); | |
300 | task->SetRequestedCharge_2( requestedCharge2); | |
301 | task->SetWeigth_1( weight_1 ); | |
302 | task->SetWeigth_2( weight_2 ); | |
303 | ||
304 | ||
305 | cout << "Creating task output container" << endl; | |
306 | taskOutputContainer = analysisManager->CreateContainer(listName, | |
307 | TList::Class(), | |
308 | AliAnalysisManager::kOutputContainer, | |
309 | Form("%s:Histos", AliAnalysisManager::GetCommonFileName())); | |
310 | cout << "Add task to analysis manager and connect it to input and output containers" << endl; | |
311 | analysisManager->AddTask(task); | |
312 | analysisManager->ConnectInput( task, 0, analysisManager->GetCommonInputContainer()); | |
313 | analysisManager->ConnectOutput(task, 0, taskOutputContainer ); | |
314 | cout << "Task added ...." << endl; | |
143d78d1 | 315 | |
c5704d5c | 316 | //============================ |
317 | // (-,-) | |
318 | //============================ | |
319 | requestedCharge1 = -1; | |
320 | requestedCharge2 = -1; | |
321 | sameFilter = 1; | |
322 | part1Name = "M_"; | |
323 | part1Name += trackFilterBit; | |
324 | part1Name += "_"; | |
325 | part1Name += int(1000*etaMax); | |
326 | part1Name += "_"; | |
327 | part1Name += int(1000*ptMin); | |
328 | part1Name += "pt"; | |
329 | part1Name += int(1000*ptMax); | |
330 | part1Name += "_"; | |
331 | part2Name = "M_"; | |
332 | part2Name += trackFilterBit; | |
333 | part2Name += int(1000*etaMax); | |
334 | part2Name += "_"; | |
335 | part2Name += int(1000*ptMin); | |
336 | part2Name += "pt"; | |
337 | part2Name += int(1000*ptMax); | |
338 | part2Name += "_"; | |
339 | eventName = ""; | |
340 | eventName += int(10.*minCentrality[iCentrality] ); | |
341 | eventName += "Vo"; | |
342 | eventName += int(10.*maxCentrality[iCentrality] ); | |
343 | baseName = prefixName; | |
344 | baseName += part1Name; | |
345 | baseName += part2Name; | |
346 | baseName += eventName; | |
347 | listName = baseName; | |
348 | taskName = baseName; | |
349 | if (useWeights) | |
350 | { | |
351 | TString nameHistoBase = "correction_"; | |
352 | TString nameHisto; | |
353 | nameHistoBase += eventName; | |
354 | nameHisto = nameHistoBase + "_m"; | |
355 | cout << "Input Histogram named: " << nameHisto << endl; | |
356 | weight_1 = (TH3F *) inputFile->Get(nameHisto); | |
357 | weight_2 = weight_1; | |
358 | } | |
359 | else | |
360 | { | |
361 | weight_1 = 0; | |
362 | weight_2 = 0; | |
2542e3ae | 363 | } |
c5704d5c | 364 | task = new AliAnalysisTaskDptDptQA(taskName); |
365 | //configure my task | |
366 | task->SetDebugLevel( debugLevel ); | |
367 | task->SetSameFilter( sameFilter ); | |
368 | task->SetSinglesOnly( singlesOnly ); | |
369 | task->SetUseWeights( useWeights ); | |
370 | task->SetRejectPileup( rejectPileup ); | |
371 | task->SetRejectPairConversion(rejectPairConversion); | |
372 | task->SetVertexZMin( zMin ); | |
373 | task->SetVertexZMax( zMax ); | |
374 | task->SetVertexXYMin( -1. ); | |
375 | task->SetVertexXYMax( 1. ); | |
376 | task->SetCentralityMethod( centralityMethod); | |
377 | task->SetCentrality( minCentrality[iCentrality], maxCentrality[iCentrality]); | |
378 | task->SetPtMin1( ptMin ); | |
379 | task->SetPtMax1( ptMax ); | |
380 | task->SetEtaMin1( etaMin ); | |
381 | task->SetEtaMax1( etaMax ); | |
382 | task->SetPtMin2( ptMin ); | |
383 | task->SetPtMax2( ptMax ); | |
384 | task->SetEtaMin2( etaMin ); | |
385 | task->SetEtaMax2( etaMax ); | |
386 | task->SetDcaZMin( dcaZMin ); | |
387 | task->SetDcaZMax( dcaZMax ); | |
388 | task->SetDcaXYMin( dcaXYMin ); | |
389 | task->SetDcaXYMax( dcaXYMax ); | |
390 | task->SetDedxMin( dedxMin ); | |
391 | task->SetDedxMax( dedxMax ); | |
392 | task->SetNClusterMin( nClusterMin ); | |
393 | task->SetTrackFilterBit( trackFilterBit ); | |
394 | task->SetRequestedCharge_1( requestedCharge1); | |
395 | task->SetRequestedCharge_2( requestedCharge2); | |
396 | task->SetWeigth_1( weight_1 ); | |
397 | task->SetWeigth_2( weight_2 ); | |
398 | ||
2542e3ae | 399 | |
c5704d5c | 400 | cout << "Creating task output container" << endl; |
401 | taskOutputContainer = analysisManager->CreateContainer(listName, | |
402 | TList::Class(), | |
403 | AliAnalysisManager::kOutputContainer, | |
404 | Form("%s:Histos", AliAnalysisManager::GetCommonFileName())); | |
405 | analysisManager->AddTask(task); | |
406 | analysisManager->ConnectInput( task, 0, analysisManager->GetCommonInputContainer()); | |
407 | analysisManager->ConnectOutput(task, 0, taskOutputContainer ); | |
2542e3ae | 408 | return task; |
409 | } |