2 // Macro designed for use with the AliAnalysisTaskDptDptCorrelations task.
4 // Author: Prabhat Pujahari & Claude Pruneau, Wayne State
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: --
11 /////////////////////////////////////////////////////////////////////////////////
13 AliAnalysisTaskDptDptCorrelations *AddTaskDptDptCorrelationsforWeight(int system = 0,
16 int centralityMethod = 4,
18 int trackFilterBit = 128,
25 // Set Default Configuration of this analysis
26 // ==========================================
29 int rejectPairConversion = 1;
34 double minCentrality[10];
35 double maxCentrality[10];
37 if (system==0) // PbPb
39 if (centralityMethod == 4)
42 //To Get rid of Memory problem
44 minCentrality[0] = 0.0; maxCentrality[0] = 5.0;
45 minCentrality[1] = 5.0; maxCentrality[1] = 10.;
46 minCentrality[2] = 10.; maxCentrality[2] = 20.;
47 minCentrality[3] = 20.; maxCentrality[3] = 30.;
48 minCentrality[4] = 30.; maxCentrality[4] = 40.;
49 minCentrality[5] = 40.; maxCentrality[5] = 50.;
50 minCentrality[6] = 50.; maxCentrality[6] = 60.;
51 minCentrality[7] = 60.; maxCentrality[7] = 70.;
52 minCentrality[8] = 70.; maxCentrality[8] = 80.;
53 minCentrality[9] = 80.; maxCentrality[9] = 90.;
58 cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."
62 else if (system==1) // pp
64 if (centralityMethod == 3)
67 minCentrality[0] = 2; maxCentrality[0] = 100.0;
68 minCentrality[1] = 2; maxCentrality[1] = 20.;
69 minCentrality[2] = 20.; maxCentrality[2] = 50.;
70 minCentrality[3] = 50.; maxCentrality[3] = 100.;
74 //cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."
80 //cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". Option NOT CURRENTLY AVAILABLE. ABORT."
88 //double etaMin = -0.9;
89 //double etaMax = 0.9;
90 double dcaZMin = -3.0;
92 double dcaXYMin = -2.4;
93 double dcaXYMax = 2.4;
95 double dedxMax = 20000.0;
96 //int nClusterMin = 80;
97 //int trackFilterBit = 128;
99 int requestedCharge1 = 1; //default
100 int requestedCharge2 = -1; //default
103 // Get the pointer to the existing analysis manager via the static access method.
104 // ==============================================================================
105 AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager();
107 if (!analysisManager)
109 ::Error("AddTaskDptDptCorrelations", "No analysis manager to connect to.");
116 TString prefixName = "Corr_";
117 TString pileupRejecSuffix = "_PileupRejec";
118 TString pairRejecSuffix = "_PairRejec";
119 TString calibSuffix = "_calib";
120 TString singlesOnlySuffix = "_SO";
123 TString inputPath = ".";
124 TString outputPath = ".";
128 TString inputHistogramFileName;
129 TString outputHistogramFileName;
131 // Create the task and add subtask.
132 // ===========================================================================
133 int iTask = 0; // task counter
134 AliAnalysisDataContainer *taskInputContainer;
135 AliAnalysisDataContainer *taskOutputContainer;
136 AliAnalysisTaskDptDptCorrelations* task;
138 for (int iCentrality=0; iCentrality < nCentrality; ++iCentrality)
142 case 0: part1Name = "P_"; part2Name = "P_"; requestedCharge1 = 1; requestedCharge2 = 1; sameFilter = 1; break;
143 case 1: part1Name = "P_"; part2Name = "M_"; requestedCharge1 = 1; requestedCharge2 = -1; sameFilter = 0; break;
144 case 2: part1Name = "M_"; part2Name = "P_"; requestedCharge1 = -1; requestedCharge2 = 1; sameFilter = 0; break;
145 case 3: part1Name = "M_"; part2Name = "M_"; requestedCharge1 = -1; requestedCharge2 = -1; sameFilter = 1; break;
147 //part1Name += int(1000*etaMin);
149 part1Name += int(1000*etaMax);
151 part1Name += int(1000*ptMin);
153 part1Name += int(1000*ptMax);
155 //part2Name += int(1000*etaMin);
157 part2Name += int(1000*etaMax);
159 part2Name += int(1000*ptMin);
161 part2Name += int(1000*ptMax);
164 eventName += int(10.*minCentrality[iCentrality] );
166 eventName += int(10.*maxCentrality[iCentrality] );
168 //eventName += int(10*zMin );
170 //eventName += int(10*zMax );
171 //if (rejectPileup) eventName += pileupRejecSuffix;
172 //if (rejectPairConversion) eventName += pairRejecSuffix;
173 baseName = prefixName;
174 baseName += part1Name;
175 baseName += part2Name;
176 baseName += eventName;
181 outputHistogramFileName = baseName;
182 if (singlesOnly) outputHistogramFileName += singlesOnlySuffix;
183 outputHistogramFileName += ".root";
186 TFile * inputFile = 0;
187 TList * histoList = 0;
192 TGrid::Connect("alien:");
193 inputFile = TFile::Open(inputHistogramFileName,"OLD");
196 cout << "Requested file:" << inputHistogramFileName << " was not opened. ABORT." << endl;
199 TString nameHistoBase = "correction_";
201 nameHistoBase += eventName;
202 if (requestedCharge1 == 1)
204 nameHisto = nameHistoBase + "_p";
205 cout << "Input Histogram named: " << nameHisto << endl;
206 weight_1 = (TH3F *) inputFile->Get(nameHisto);
210 nameHisto = nameHistoBase + "_m";
211 cout << "Input Histogram named: " << nameHisto << endl;
212 weight_1 = (TH3F *) inputFile->Get(nameHisto);
216 cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
223 if (requestedCharge2 == 1)
225 nameHisto = nameHistoBase + "_p";
226 cout << "Input Histogram named: " << nameHisto << endl;
227 weight_2 = (TH3F *) inputFile->Get(nameHisto);
231 nameHisto = nameHistoBase + "_m";
232 cout << "Input Histogram named: " << nameHisto << endl;
233 weight_2 = (TH3F *) inputFile->Get(nameHisto);
237 cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
242 task = new AliAnalysisTaskDptDptCorrelations(taskName);
244 task->SetDebugLevel( debugLevel );
245 task->SetSameFilter( sameFilter );
246 task->SetSinglesOnly( singlesOnly );
247 task->SetUseWeights( useWeights );
248 task->SetRejectPileup( rejectPileup );
249 task->SetRejectPairConversion(rejectPairConversion);
250 task->SetVertexZMin( zMin );
251 task->SetVertexZMax( zMax );
252 task->SetVertexXYMin( -1. );
253 task->SetVertexXYMax( 1. );
254 task->SetCentralityMethod( centralityMethod);
255 task->SetCentrality( minCentrality[iCentrality], maxCentrality[iCentrality]);
256 task->SetPtMin1( ptMin );
257 task->SetPtMax1( ptMax );
258 task->SetEtaMin1( etaMin );
259 task->SetEtaMax1( etaMax );
260 task->SetPtMin2( ptMin );
261 task->SetPtMax2( ptMax );
262 task->SetEtaMin2( etaMin );
263 task->SetEtaMax2( etaMax );
264 //task->SetDcaZMin( dcaZMin );
265 //task->SetDcaZMax( dcaZMax );
266 //task->SetDcaXYMin( dcaXYMin );
267 //task->SetDcaXYMax( dcaXYMax );
268 task->SetDedxMin( dedxMin );
269 task->SetDedxMax( dedxMax );
270 task->SetNClusterMin( nClusterMin );
271 task->SetTrackFilterBit( trackFilterBit );
272 task->SetRequestedCharge_1( requestedCharge1);
273 task->SetRequestedCharge_2( requestedCharge2);
274 task->SetWeigth_1( weight_1 );
275 task->SetWeigth_2( weight_2 );
278 cout << "Creating task output container" << endl;
279 taskOutputContainer = analysisManager->CreateContainer(listName,
281 AliAnalysisManager::kOutputContainer,
282 Form("%s:Histos", AliAnalysisManager::GetCommonFileName()));
283 cout << "Add task to analysis manager and connect it to input and output containers" << endl;
284 analysisManager->AddTask(task);
285 analysisManager->ConnectInput( task, 0, analysisManager->GetCommonInputContainer());
286 analysisManager->ConnectOutput(task, 0, taskOutputContainer );
287 cout << "Task added ...." << endl;