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