]>
Commit | Line | Data |
---|---|---|
b38b4941 | 1 | // |
2 | // Macro designed for use with the AliAnalysisTaskDptDptCorrelations task. | |
3 | // | |
4 | // Author: Claude Pruneau, Wayne State | |
5 | // | |
6 | // system: 0: PbPb 1: pp | |
7 | // singlesOnly: 0: full correlations 1: singles only | |
8 | // useWeights: 0: no 1: yes | |
9 | // centralityMethod: 3: track count 4: V0 centrality | |
10 | ////////////////////////////////////////////////////////////////////////////// | |
11 | AliAnalysisTask3PCorrelations * AddTask3PCorrelations(int etaOption = 0, | |
12 | int system = 0, | |
13 | int singlesOnly = 0, | |
14 | int useWeights = 0, | |
15 | int centralityMethod = 4) | |
16 | ||
17 | { | |
18 | // Set Default Configuration of this analysis | |
19 | // ========================================== | |
20 | int debugLevel = 0; | |
21 | int rejectPileup = 1; | |
22 | int rejectPairConversion = 1; | |
23 | int nCentrality; | |
24 | double minCentrality[10]; | |
25 | double maxCentrality[10]; | |
26 | ||
27 | if (system==0) // PbPb | |
28 | { | |
29 | if (centralityMethod == 4) | |
30 | { | |
31 | nCentrality = 10; | |
32 | minCentrality[0] = 0.5; maxCentrality[0] = 5.0; | |
33 | minCentrality[1] = 5.0; maxCentrality[1] = 10.; | |
34 | minCentrality[2] = 10.; maxCentrality[2] = 20.; | |
35 | minCentrality[3] = 20.; maxCentrality[3] = 30.; | |
36 | minCentrality[4] = 30.; maxCentrality[4] = 40.; | |
37 | minCentrality[5] = 40.; maxCentrality[5] = 50.; | |
38 | minCentrality[6] = 50.; maxCentrality[6] = 60.; | |
39 | minCentrality[7] = 60.; maxCentrality[7] = 70.; | |
40 | minCentrality[8] = 70.; maxCentrality[8] = 80.; | |
41 | minCentrality[9] = 80.; maxCentrality[9] = 90.; | |
42 | ||
43 | } | |
44 | else | |
45 | { | |
46 | cout << "-F- AddTask3PCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT." | |
47 | return 0; | |
48 | } | |
49 | } | |
50 | else if (system==1) // pp | |
51 | { | |
52 | if (centralityMethod == 3) | |
53 | { | |
54 | nCentrality = 4; | |
55 | minCentrality[0] = 2; maxCentrality[0] = 100.0; | |
56 | minCentrality[1] = 2; maxCentrality[1] = 20.; | |
57 | minCentrality[2] = 20.; maxCentrality[2] = 50.; | |
58 | minCentrality[3] = 50.; maxCentrality[3] = 100.; | |
59 | } | |
60 | else | |
61 | { | |
62 | cout << "-F- AddTask3PCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT." | |
63 | return 0; | |
64 | } | |
65 | } | |
66 | else | |
67 | { | |
68 | cout << "-F- AddTask3PCorrelations() system:" << system << ". Option NOT CURRENTLY AVAILABLE. ABORT." | |
69 | return 0; | |
70 | } | |
71 | ||
72 | double zMin = -10.; | |
73 | double zMax = 10.; | |
74 | double dcaZMin = -3.0; | |
75 | double dcaZMax = 3.0; | |
76 | double dcaXYMin = -3.0; | |
77 | double dcaXYMax = 3.0; | |
78 | double dedxMin = 0.0; | |
79 | double dedxMax = 20000.0; | |
80 | int nClusterMin = 70; | |
81 | int trackFilterBit = 128; | |
82 | double ptMin1 = 2.0; | |
83 | double ptMax1 = 10.0; | |
84 | double etaMin1 = -0.25; | |
85 | double etaMax1 = 0.25; | |
86 | double ptMin2 = 1.0; | |
87 | double ptMax2 = 2.0; | |
88 | double etaMin2 = -1.0; | |
89 | double etaMax2 = -0.7; | |
90 | double ptMin3 = 1.0; | |
91 | double ptMax3 = 2.0; | |
92 | double etaMin3 = 0.7; | |
93 | double etaMax3 = 1.0; | |
94 | ||
95 | if (etaOption == 0) | |
96 | { | |
97 | etaMin2 = -1.0; | |
98 | etaMax2 = -0.7; | |
99 | etaMin3 = 0.7; | |
100 | etaMax3 = 1.0; | |
101 | } | |
102 | else | |
103 | { | |
104 | etaMin2 = etaMin1; | |
105 | etaMax2 = etaMax1; | |
106 | etaMin3 = etaMin1; | |
107 | etaMax3 = etaMax1; | |
108 | ||
109 | } | |
110 | ||
111 | // Get the pointer to the existing analysis manager via the static access method. | |
112 | // ============================================================================== | |
113 | AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager(); | |
114 | ||
115 | if (!analysisManager) | |
116 | { | |
117 | ::Error("AddTask3PCorrelations", "No analysis manager to connect to."); | |
118 | return NULL; | |
119 | } | |
120 | ||
121 | TString part1Name; | |
122 | TString part2Name; | |
123 | TString part3Name; | |
124 | TString eventName; | |
125 | TString prefixName = "Corr_"; | |
126 | TString pileupRejecSuffix = "_PileupRejec"; | |
127 | TString pairRejecSuffix = "_PairRejec"; | |
128 | TString calibSuffix = "_calib"; | |
129 | TString singlesOnlySuffix = "_SO"; | |
130 | TString suffix; | |
131 | ||
132 | TString inputPath = "."; | |
133 | TString outputPath = "."; | |
134 | TString baseName; | |
135 | TString listName; | |
136 | TString taskName; | |
137 | TString inputHistogramFileName; | |
138 | TString outputHistogramFileName; | |
139 | ||
140 | // Create the task and add subtask. | |
141 | // =========================================================================== | |
142 | int iTask = 0; // task counter | |
143 | AliAnalysisDataContainer *taskInputContainer; | |
144 | AliAnalysisDataContainer *taskOutputContainer; | |
145 | AliAnalysisTask3PCorrelations * task; | |
146 | ||
147 | for (int iCentrality=0; iCentrality < nCentrality; ++iCentrality) | |
148 | { | |
149 | part1Name = ""; | |
150 | part1Name += int(1000*ptMin1); | |
151 | part1Name += "pt"; | |
152 | part1Name += int(1000*ptMax1); | |
153 | part1Name += "_"; | |
154 | ||
155 | part2Name = ""; | |
156 | part2Name += int(1000*ptMin2); | |
157 | part2Name += "pt"; | |
158 | part2Name += int(1000*ptMax2); | |
159 | part2Name += "_"; | |
160 | ||
161 | part3Name = ""; | |
162 | part3Name += int(1000*ptMin3); | |
163 | part3Name += "pt"; | |
164 | part3Name += int(1000*ptMax3); | |
165 | part3Name += "_"; | |
166 | ||
167 | eventName = ""; | |
168 | eventName += int(10.*minCentrality[iCentrality] ); | |
169 | eventName += "Vo"; | |
170 | eventName += int(10.*maxCentrality[iCentrality] ); | |
171 | //if (rejectPileup) eventName += pileupRejecSuffix; | |
172 | //if (rejectPairConversion) eventName += pairRejecSuffix; | |
173 | baseName = prefixName; | |
174 | baseName += part1Name; | |
175 | baseName += part2Name; | |
176 | baseName += part3Name; | |
177 | baseName += eventName; | |
178 | listName = baseName; | |
179 | taskName = baseName; | |
180 | inputHistogramFileName = "alien:///alice/cern.ch/user/c/cpruneau/PbPb273Calibration.root"; //TFile::Open(); | |
181 | outputHistogramFileName = baseName; | |
182 | if (singlesOnly) outputHistogramFileName += singlesOnlySuffix; | |
183 | outputHistogramFileName += ".root"; | |
184 | ||
185 | cout << "============================================================" << endl; | |
186 | cout << " iTask: " << iTask << endl; | |
187 | cout << " Task Name: " << taskName << endl; | |
188 | cout << " List Name: " << listName << endl; | |
189 | cout << " inputHistogramFileName: " << inputHistogramFileName << endl; | |
190 | cout << " outputHistogramFileName: " << outputHistogramFileName << endl; | |
191 | cout << " system: " << system << endl; | |
192 | cout << " singlesOnly: " << singlesOnly << endl; | |
193 | cout << " using weights: " << useWeights << endl; | |
194 | cout << " centralityMethod: " << centralityMethod << endl; | |
195 | cout << " debugLevel: " << debugLevel << endl; | |
196 | cout << " rejectPileup: " << rejectPileup << endl; | |
197 | cout << " rejectPairConversion: " << rejectPairConversion << endl; | |
198 | cout << " zMin: " << zMin << endl; | |
199 | cout << " zMax: " << zMax << endl; | |
200 | ||
201 | cout << " ptMin1: " << ptMin1 << endl; | |
202 | cout << " ptMax1: " << ptMax1 << endl; | |
203 | cout << " etaMin1: " << etaMin1 << endl; | |
204 | cout << " etaMax1: " << etaMax1 << endl; | |
205 | ||
206 | cout << " ptMin2: " << ptMin2 << endl; | |
207 | cout << " ptMax2: " << ptMax2 << endl; | |
208 | cout << " etaMin2: " << etaMin2 << endl; | |
209 | cout << " etaMax2: " << etaMax2 << endl; | |
210 | ||
211 | cout << " ptMin3: " << ptMin3 << endl; | |
212 | cout << " ptMax3: " << ptMax3 << endl; | |
213 | cout << " etaMin3: " << etaMin3 << endl; | |
214 | cout << " etaMax3: " << etaMax3 << endl; | |
215 | ||
216 | ||
217 | cout << " dcaZMin: " << dcaZMin << endl; | |
218 | cout << " dcaZMax: " << dcaZMax << endl; | |
219 | cout << " dcaXYMin: " << dcaXYMin << endl; | |
220 | cout << " dcaXYMax: " << dcaXYMax << endl; | |
221 | cout << " dedxMin: " << dedxMin << endl; | |
222 | cout << " dedxMax: " << dedxMax << endl; | |
223 | cout << " nClusterMin: " << nClusterMin << endl; | |
224 | cout << " trackFilterBit: " << trackFilterBit << endl; | |
225 | cout << "============================================================" << endl; | |
226 | ||
227 | TFile * inputFile = 0; | |
228 | TList * histoList = 0; | |
229 | TH3F * weight_1P = 0; | |
230 | TH3F * weight_1M = 0; | |
231 | TH3F * weight_2P = 0; | |
232 | TH3F * weight_2M = 0; | |
233 | TH3F * weight_3P = 0; | |
234 | TH3F * weight_3M = 0; | |
235 | TString nameHistoBase = "correction_"; | |
236 | TString nameHisto; | |
237 | if (useWeights) | |
238 | { | |
239 | TGrid::Connect("alien:"); | |
240 | inputFile = TFile::Open(inputHistogramFileName,"OLD"); | |
241 | if (!inputFile) | |
242 | { | |
243 | cout << "Requested file:" << inputHistogramFileName << " was not opened. ABORT." << endl; | |
244 | return; | |
245 | } | |
246 | nameHistoBase += eventName; | |
247 | nameHisto = nameHistoBase + "_1p"; cout << "Input Histogram named: " << nameHisto << endl; | |
248 | weight_1P = (TH3F *) inputFile->Get(nameHisto); | |
249 | nameHisto = nameHistoBase + "_1m"; cout << "Input Histogram named: " << nameHisto << endl; | |
250 | weight_1M = (TH3F *) inputFile->Get(nameHisto); | |
251 | nameHisto = nameHistoBase + "_2p"; cout << "Input Histogram named: " << nameHisto << endl; | |
252 | weight_2P = (TH3F *) inputFile->Get(nameHisto); | |
253 | nameHisto = nameHistoBase + "_2m"; cout << "Input Histogram named: " << nameHisto << endl; | |
254 | weight_2M = (TH3F *) inputFile->Get(nameHisto); | |
255 | nameHisto = nameHistoBase + "_3p"; cout << "Input Histogram named: " << nameHisto << endl; | |
256 | weight_3P = (TH3F *) inputFile->Get(nameHisto); | |
257 | nameHisto = nameHistoBase + "_3m"; cout << "Input Histogram named: " << nameHisto << endl; | |
258 | weight_3M = (TH3F *) inputFile->Get(nameHisto); | |
259 | ||
260 | } | |
261 | task = new AliAnalysisTask3PCorrelations(taskName); | |
262 | //configure my task | |
263 | task->SetDebugLevel( debugLevel ); | |
264 | task->SetSinglesOnly( singlesOnly ); | |
265 | task->SetUseWeights( useWeights ); | |
266 | task->SetRejectPileup( rejectPileup ); | |
267 | task->SetRejectPairConversion(rejectPairConversion); | |
268 | task->SetVertexZMin( zMin ); | |
269 | task->SetVertexZMax( zMax ); | |
270 | task->SetVertexXYMin( -1. ); | |
271 | task->SetVertexXYMax( 1. ); | |
272 | task->SetCentralityMethod( centralityMethod); | |
273 | task->SetCentrality( minCentrality[iCentrality], maxCentrality[iCentrality]); | |
274 | task->SetPtMin1( ptMin1 ); | |
275 | task->SetPtMax1( ptMax1 ); | |
276 | task->SetEtaMin1( etaMin1 ); | |
277 | task->SetEtaMax1( etaMax1 ); | |
278 | task->SetPtMin2( ptMin2 ); | |
279 | task->SetPtMax2( ptMax2 ); | |
280 | task->SetEtaMin2( etaMin2 ); | |
281 | task->SetEtaMax2( etaMax2 ); | |
282 | task->SetPtMin3( ptMin3 ); | |
283 | task->SetPtMax3( ptMax3 ); | |
284 | task->SetEtaMin3( etaMin3 ); | |
285 | task->SetEtaMax3( etaMax3 ); | |
286 | task->SetDcaZMin( dcaZMin ); | |
287 | task->SetDcaZMax( dcaZMax ); | |
288 | task->SetDcaXYMin( dcaXYMin ); | |
289 | task->SetDcaXYMax( dcaXYMax ); | |
290 | task->SetDedxMin( dedxMin ); | |
291 | task->SetDedxMax( dedxMax ); | |
292 | task->SetNClusterMin( nClusterMin ); | |
293 | task->SetTrackFilterBit( trackFilterBit ); | |
294 | task->SetWeigth_1P( weight_1P ); | |
295 | task->SetWeigth_1M( weight_1M ); | |
296 | task->SetWeigth_2P( weight_2P ); | |
297 | task->SetWeigth_2M( weight_2M ); | |
298 | task->SetWeigth_3P( weight_3P ); | |
299 | task->SetWeigth_3M( weight_3M ); | |
300 | ||
301 | ||
302 | ||
303 | cout << "Creating task output container" << endl; | |
304 | taskOutputContainer = analysisManager->CreateContainer(listName, | |
305 | TList::Class(), | |
306 | AliAnalysisManager::kOutputContainer, | |
307 | Form("%s:Histos", AliAnalysisManager::GetCommonFileName())); | |
308 | cout << "Add task to analysis manager and connect it to input and output containers" << endl; | |
309 | analysisManager->AddTask(task); | |
310 | analysisManager->ConnectInput( task, 0, analysisManager->GetCommonInputContainer()); | |
311 | analysisManager->ConnectOutput(task, 0, taskOutputContainer ); | |
312 | cout << "Task added ...." << endl; | |
313 | ||
314 | iTask++; | |
315 | ||
316 | } | |
317 | ||
318 | ||
319 | ||
320 | return task; | |
321 | } |