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