]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/Correlations/macros/AddTask3PCorrelations.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / Correlations / macros / AddTask3PCorrelations.C
CommitLineData
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//////////////////////////////////////////////////////////////////////////////
11AliAnalysisTask3PCorrelations * 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}