2 // Macro designed for use with the AliAnalysisTaskDptDptCorrelations task.
4 // Author: Prabhat Pujahari & Claude Pruneau, Wayne State
6 // system: 0: PbPb 1: pPb
7 // singlesOnly: 0: full correlations 1: singles only
8 // useWeights: 0: no 1: yes
9 // centralityMethod: 3: track count 4: V0 centrality 7: V0A centrality for pPb
10 // chargeSet: 0: ++ 1: +- 2: -+ 3: --
11 /////////////////////////////////////////////////////////////////////////////////
12 AliAnalysisTaskDptDptCorrelations *AddTaskDptDptCorr_dca1
16 int centralityMethod = 4,
18 int trackFilterBit = 128,
22 double dcaZMin = -2.0,
24 double dcaXYMin = -2.4,
25 double dcaXYMax = 2.4,
27 Bool_t trigger = kFALSE,
28 const char* taskname = "dcaz2",
29 char *inputHistogramFileName = "alien:///alice/cern.ch/user/p/prabhat/CalibFiles/PbPbCalib_dca1.root")
32 // Set Default Configuration of this analysis
33 // ==========================================
36 int rejectPairConversion = 1;
41 double minCentrality[10];
42 double maxCentrality[10];
44 if (system==0) // PbPb
46 if (centralityMethod == 4)
49 minCentrality[0] = 0.0; maxCentrality[0] = 5.0;
50 minCentrality[1] = 5.0; maxCentrality[1] = 10.;
51 minCentrality[2] = 30.; maxCentrality[2] = 40.;
52 minCentrality[3] = 60.; maxCentrality[3] = 70.;
55 /*minCentrality[0] = 0.0; maxCentrality[0] = 5.0;
56 minCentrality[1] = 5.0; maxCentrality[1] = 10.;
57 minCentrality[2] = 10.; maxCentrality[2] = 20.;
58 minCentrality[3] = 20.; maxCentrality[3] = 30.;
59 minCentrality[4] = 30.; maxCentrality[4] = 40.;
60 minCentrality[5] = 40.; maxCentrality[5] = 50.;
61 minCentrality[6] = 50.; maxCentrality[6] = 60.;
62 minCentrality[7] = 60.; maxCentrality[7] = 70.;
63 minCentrality[8] = 70.; maxCentrality[8] = 80.;
64 minCentrality[9] = 80.; maxCentrality[9] = 90.;
69 //cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."
73 else if (system==1) // pPb
75 if (centralityMethod == 7)
77 minCentrality[0] = 0; maxCentrality[0] = 20.0;
78 minCentrality[1] = 20.; maxCentrality[1] = 40.;
79 minCentrality[2] = 40.; maxCentrality[2] = 60.;
80 minCentrality[3] = 60.; maxCentrality[3] = 80.;
84 //cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."
90 //cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". Option NOT CURRENTLY AVAILABLE. ABORT."
99 double dedxMax = 20000.0;
100 int requestedCharge1 = 1; //default
101 int requestedCharge2 = -1; //default
104 // Get the pointer to the existing analysis manager via the static access method.
105 // ==============================================================================
106 AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager();
108 if (!analysisManager)
110 ::Error("AddTaskDptDptCorrelations", "No analysis manager to connect to.");
117 TString prefixName = "Corr_";
118 TString pileupRejecSuffix = "_PileupRejec";
119 TString pairRejecSuffix = "_PairRejec";
120 TString calibSuffix = "_calib";
121 TString singlesOnlySuffix = "_SO";
124 TString inputPath = ".";
125 TString outputPath = ".";
129 //TString inputHistogramFileName;
130 TString outputHistogramFileName;
132 // Create the task and add subtask.
133 // ===========================================================================
134 int iTask = 0; // task counter
135 AliAnalysisDataContainer *taskInputContainer;
136 AliAnalysisDataContainer *taskOutputContainer;
137 AliAnalysisTaskDptDptCorrelations* task;
139 for (int iCentrality=0; iCentrality < nCentrality; ++iCentrality)
143 case 0: part1Name = "P_"; part2Name = "P_"; requestedCharge1 = 1; requestedCharge2 = 1; sameFilter = 1; break;
144 case 1: part1Name = "P_"; part2Name = "M_"; requestedCharge1 = 1; requestedCharge2 = -1; sameFilter = 0; break;
145 case 2: part1Name = "M_"; part2Name = "P_"; requestedCharge1 = -1; requestedCharge2 = 1; sameFilter = 0; break;
146 case 3: part1Name = "M_"; part2Name = "M_"; requestedCharge1 = -1; requestedCharge2 = -1; sameFilter = 1; break;
150 part1Name += int(1000*etaMax);
152 part1Name += int(1000*ptMin);
154 part1Name += int(1000*ptMax);
156 part1Name += int(1000*dcaZMin);
158 part1Name += int(1000*dcaZMax);
162 part2Name += int(1000*etaMax);
164 part2Name += int(1000*ptMin);
166 part2Name += int(1000*ptMax);
168 part2Name += int(1000*dcaZMin);
170 part2Name += int(1000*dcaZMax);
174 eventName += int(10.*minCentrality[iCentrality] );
176 eventName += int(10.*maxCentrality[iCentrality] );
178 baseName = prefixName;
179 baseName += part1Name;
180 baseName += part2Name;
181 baseName += eventName;
186 outputHistogramFileName = baseName;
187 if (singlesOnly) outputHistogramFileName += singlesOnlySuffix;
188 outputHistogramFileName += ".root";
191 TFile * inputFile = 0;
192 TList * histoList = 0;
197 TGrid::Connect("alien:");
198 inputFile = TFile::Open(inputHistogramFileName,"OLD");
201 //cout << "Requested file:" << inputHistogramFileName << " was not opened. ABORT." << endl;
204 TString nameHistoBase = "correction_";
206 nameHistoBase += eventName;
207 if (requestedCharge1 == 1)
209 nameHisto = nameHistoBase + "_p";
210 //cout << "Input Histogram named: " << nameHisto << endl;
211 weight_1 = (TH3F *) inputFile->Get(nameHisto);
215 nameHisto = nameHistoBase + "_m";
216 //cout << "Input Histogram named: " << nameHisto << endl;
217 weight_1 = (TH3F *) inputFile->Get(nameHisto);
221 //cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
228 if (requestedCharge2 == 1)
230 nameHisto = nameHistoBase + "_p";
231 //cout << "Input Histogram named: " << nameHisto << endl;
232 weight_2 = (TH3F *) inputFile->Get(nameHisto);
236 nameHisto = nameHistoBase + "_m";
237 //cout << "Input Histogram named: " << nameHisto << endl;
238 weight_2 = (TH3F *) inputFile->Get(nameHisto);
242 //cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
247 task = new AliAnalysisTaskDptDptCorrelations(taskName);
249 task->SetDebugLevel( debugLevel );
250 task->SetSameFilter( sameFilter );
251 task->SetSinglesOnly( singlesOnly );
252 task->SetUseWeights( useWeights );
253 task->SetRejectPileup( rejectPileup );
254 task->SetRejectPairConversion(rejectPairConversion);
255 task->SetVertexZMin( zMin );
256 task->SetVertexZMax( zMax );
257 task->SetVertexXYMin( -1. );
258 task->SetVertexXYMax( 1. );
259 task->SetCentralityMethod( centralityMethod);
260 task->SetCentrality( minCentrality[iCentrality], maxCentrality[iCentrality]);
261 task->SetPtMin1( ptMin );
262 task->SetPtMax1( ptMax );
263 task->SetEtaMin1( etaMin );
264 task->SetEtaMax1( etaMax );
265 task->SetPtMin2( ptMin );
266 task->SetPtMax2( ptMax );
267 task->SetEtaMin2( etaMin );
268 task->SetEtaMax2( etaMax );
269 task->SetDcaZMin( dcaZMin );
270 task->SetDcaZMax( dcaZMax );
271 task->SetDcaXYMin( dcaXYMin );
272 task->SetDcaXYMax( dcaXYMax ); //checking by prp
273 task->SetDedxMin( dedxMin );
274 task->SetDedxMax( dedxMax );
275 task->SetNClusterMin( nClusterMin );
276 task->SetTrackFilterBit( trackFilterBit );
277 task->SetRequestedCharge_1( requestedCharge1);
278 task->SetRequestedCharge_2( requestedCharge2);
279 task->SetWeigth_1( weight_1 );
280 task->SetWeigth_2( weight_2 );
283 if(trigger) task->SelectCollisionCandidates(AliVEvent::kINT7);
284 else task->SelectCollisionCandidates(AliVEvent::kMB);
286 cout << "Creating task output container" << endl;
288 taskOutputContainer = analysisManager->CreateContainer(listName,
290 AliAnalysisManager::kOutputContainer,
291 Form("%s:%s", AliAnalysisManager::GetCommonFileName(),taskname));
292 cout << "Add task to analysis manager and connect it to input and output containers" << endl;
294 analysisManager->AddTask(task);
295 analysisManager->ConnectInput( task, 0, analysisManager->GetCommonInputContainer());
296 analysisManager->ConnectOutput(task, 0, taskOutputContainer );
297 //cout << "Task added ...." << endl;