2 // Macro designed for use with the AliDptDptInMC 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 /////////////////////////////////////////////////////////////////////////////////
13 AliDptDptInMC *AddTaskCorrMC
16 int centralityMethod = 4,
18 int trackFilterBit = 128,
21 double dcaZMin = -3.0,
23 double dcaXYMin = -2.4,
24 double dcaXYMax = 2.4,
26 TString anadata = "MCAOD",
27 Bool_t NoResonances = kTRUE,
28 Bool_t NoElectron = kTRUE,
29 const char* taskname = "NoWeakDecay",
30 char *inputHistogramFileName = "alien:///alice/cern.ch/user/p/prabhat/MCCalib/MCTruthCaalib.root")
34 // Set Default Configuration of this analysis
35 // ==========================================
38 int rejectPairConversion = 1;
43 double minCentrality[10];
44 double maxCentrality[10];
47 if (centralityMethod == 4)
50 minCentrality[0] = 10.0; maxCentrality[0] = 20.0;
51 minCentrality[1] = 30.0; maxCentrality[1] = 40.0;
52 minCentrality[2] = 60.0; maxCentrality[2] = 70.0;
57 cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."
67 double dedxMax = 20000.0;
68 int requestedCharge1 = 1; //default
69 int requestedCharge2 = -1; //default
72 // Get the pointer to the existing analysis manager via the static access method.
73 // ==============================================================================
74 AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager();
78 ::Error("AddTaskDptDptCorrelations", "No analysis manager to connect to.");
85 TString prefixName = "Corr_";
86 TString pileupRejecSuffix = "_PileupRejec";
87 TString pairRejecSuffix = "_PairRejec";
88 TString calibSuffix = "_calib";
89 TString singlesOnlySuffix = "_SO";
92 TString inputPath = ".";
93 TString outputPath = ".";
97 //TString inputHistogramFileName;
98 TString outputHistogramFileName;
100 // Create the task and add subtask.
101 // ===========================================================================
102 int iTask = 0; // task counter
103 AliAnalysisDataContainer *taskInputContainer;
104 AliAnalysisDataContainer *taskOutputContainer;
107 for (int iCentrality=0; iCentrality < nCentrality; ++iCentrality)
111 case 0: part1Name = "P_"; part2Name = "P_"; requestedCharge1 = 1; requestedCharge2 = 1; sameFilter = 1; break;
112 case 1: part1Name = "P_"; part2Name = "M_"; requestedCharge1 = 1; requestedCharge2 = -1; sameFilter = 0; break;
113 case 2: part1Name = "M_"; part2Name = "P_"; requestedCharge1 = -1; requestedCharge2 = 1; sameFilter = 0; break;
114 case 3: part1Name = "M_"; part2Name = "M_"; requestedCharge1 = -1; requestedCharge2 = -1; sameFilter = 1; break;
116 //part1Name += int(1000*etaMin);
118 part1Name += int(1000*etaMax);
120 part1Name += int(1000*ptMin);
122 part1Name += int(1000*ptMax);
124 part1Name += int(1000*dcaZMin);
126 part1Name += int(1000*dcaZMax);
130 //part2Name += int(1000*etaMin);
132 part2Name += int(1000*etaMax);
134 part2Name += int(1000*ptMin);
136 part2Name += int(1000*ptMax);
138 part2Name += int(1000*dcaZMin);
140 part2Name += int(1000*dcaZMax);
144 eventName += int(10.*minCentrality[iCentrality] );
146 eventName += int(10.*maxCentrality[iCentrality] );
149 baseName = prefixName;
150 baseName += part1Name;
151 baseName += part2Name;
152 baseName += eventName;
157 outputHistogramFileName = baseName;
158 if (singlesOnly) outputHistogramFileName += singlesOnlySuffix;
159 outputHistogramFileName += ".root";
162 TFile * inputFile = 0;
163 TList * histoList = 0;
168 TGrid::Connect("alien:");
169 inputFile = TFile::Open(inputHistogramFileName,"OLD");
172 cout << "Requested file:" << inputHistogramFileName << " was not opened. ABORT." << endl;
175 TString nameHistoBase = "correction_";
177 nameHistoBase += eventName;
178 if (requestedCharge1 == 1)
180 nameHisto = nameHistoBase + "_p";
181 cout << "Input Histogram named: " << nameHisto << endl;
182 weight_1 = (TH3F *) inputFile->Get(nameHisto);
186 nameHisto = nameHistoBase + "_m";
187 cout << "Input Histogram named: " << nameHisto << endl;
188 weight_1 = (TH3F *) inputFile->Get(nameHisto);
192 cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
199 if (requestedCharge2 == 1)
201 nameHisto = nameHistoBase + "_p";
202 cout << "Input Histogram named: " << nameHisto << endl;
203 weight_2 = (TH3F *) inputFile->Get(nameHisto);
207 nameHisto = nameHistoBase + "_m";
208 cout << "Input Histogram named: " << nameHisto << endl;
209 weight_2 = (TH3F *) inputFile->Get(nameHisto);
213 cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
219 task = new AliDptDptInMC(taskName);
221 task->SetDebugLevel( debugLevel );
222 task->SetSameFilter( sameFilter );
223 task->SetSinglesOnly( singlesOnly );
224 task->SetUseWeights( useWeights );
225 task->SetRejectPileup( rejectPileup );
226 task->SetRejectPairConversion(rejectPairConversion);
227 task->SetVertexZMin( zMin );
228 task->SetVertexZMax( zMax );
229 task->SetVertexXYMin( -1. );
230 task->SetVertexXYMax( 1. );
231 task->SetCentralityMethod( centralityMethod);
232 task->SetCentrality( minCentrality[iCentrality], maxCentrality[iCentrality]);
233 task->SetPtMin1( ptMin );
234 task->SetPtMax1( ptMax );
235 task->SetEtaMin1( etaMin );
236 task->SetEtaMax1( etaMax );
237 task->SetPtMin2( ptMin );
238 task->SetPtMax2( ptMax );
239 task->SetEtaMin2( etaMin );
240 task->SetEtaMax2( etaMax );
241 task->SetDcaZMin( dcaZMin );
242 task->SetDcaZMax( dcaZMax );
243 task->SetDcaXYMin( dcaXYMin );
244 task->SetDcaXYMax( dcaXYMax );
245 task->SetDedxMin( dedxMin );
246 task->SetDedxMax( dedxMax );
247 //task->SetNClusterMin( nClusterMin );
248 task->SetTrackFilterBit( trackFilterBit );
249 task->SetRequestedCharge_1( requestedCharge1);
250 task->SetRequestedCharge_2( requestedCharge2);
251 task->SetWeigth_1( weight_1 );
252 task->SetWeigth_2( weight_2 );
253 task->SetAnalysisType(anadata);
255 task->SelectCollisionCandidates(AliVEvent::kMB);
257 task->SetResonancesCut(NoResonances);
258 task->SetElectronCut(NoElectron);
260 cout << "Creating task output container" << endl;
262 taskOutputContainer = analysisManager->CreateContainer(listName,
264 AliAnalysisManager::kOutputContainer,
265 Form("%s:%s", AliAnalysisManager::GetCommonFileName(),taskname));
266 cout << "Add task to analysis manager and connect it to input and output containers" << endl;
269 analysisManager->AddTask(task);
270 analysisManager->ConnectInput( task, 0, analysisManager->GetCommonInputContainer());
271 analysisManager->ConnectOutput(task, 0, taskOutputContainer );
272 cout << "Task added ...." << endl;