]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/Correlations/macros/dptdptcorrelations/AddTaskPyPy.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / Correlations / macros / dptdptcorrelations / AddTaskPyPy.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/////////////////////////////////////////////////////////////////////////////////
9AliAnalysisTaskpypy *AddTaskPyPy
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 return 0;
56 }
57 }
58 else if (system==1) // pPb
59 {
60 if (centralityMethod == 7)
61 {
62 minCentrality[0] = 0; maxCentrality[0] = 20.0;
63 minCentrality[1] = 20.; maxCentrality[1] = 40.;
64 minCentrality[2] = 40.; maxCentrality[2] = 60.;
65 minCentrality[3] = 60.; maxCentrality[3] = 80.;
66 }
67 else
68 {
69 return 0;
70 }
71 }
72 else
73 {
74 return 0;
75 }
76 double ptMin = 0.2;
77 double ptMax = 2.0;
78 double dedxMin = 0.0;
79 double dedxMax = 20000.0;
80 int requestedCharge1 = 1; //default
81 int requestedCharge2 = -1; //default
82 // ==============================================================================
83 AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager();
84
85 if (!analysisManager)
86 {
87 ::Error("AddTaskDptDptCorrelations", "No analysis manager to connect to.");
88 return NULL;
89 }
90
91 TString part1Name;
92 TString part2Name;
93 TString eventName;
94 TString prefixName = "Corr_";
95 TString pileupRejecSuffix = "_PileupRejec";
96 TString pairRejecSuffix = "_PairRejec";
97 TString calibSuffix = "_calib";
98 TString singlesOnlySuffix = "_SO";
99 TString suffix;
100
101 TString inputPath = ".";
102 TString outputPath = ".";
103 TString baseName;
104 TString listName;
105 TString taskName;
106 //TString inputHistogramFileName;
107 TString outputHistogramFileName;
108
109 // Create the task and add subtask.
110 // ===========================================================================
111 int iTask = 0; // task counter
112 AliAnalysisDataContainer *taskInputContainer;
113 AliAnalysisDataContainer *taskOutputContainer;
114 AliAnalysisTaskpypy* task;
115
116 for (int iCentrality=0; iCentrality < nCentrality; ++iCentrality)
117 {
118 switch (chargeSet)
119 {
120 case 0: part1Name = "P_"; part2Name = "P_"; requestedCharge1 = 1; requestedCharge2 = 1; sameFilter = 1; break;
121 case 1: part1Name = "P_"; part2Name = "M_"; requestedCharge1 = 1; requestedCharge2 = -1; sameFilter = 0; break;
122 case 2: part1Name = "M_"; part2Name = "P_"; requestedCharge1 = -1; requestedCharge2 = 1; sameFilter = 0; break;
123 case 3: part1Name = "M_"; part2Name = "M_"; requestedCharge1 = -1; requestedCharge2 = -1; sameFilter = 1; break;
124 }
125
126 part1Name += "eta";
127 part1Name += int(1000*eta1Max);
128 part1Name += "_";
129 part1Name += int(1000*ptMin);
130 part1Name += "pt";
131 part1Name += int(1000*ptMax);
132 part1Name += "_";
133 part1Name += int(1000*dcaZMin);
134 part1Name += "DCA";
135 part1Name += int(1000*dcaZMax);
136 part1Name += "_";
137
138 part2Name += "eta";
139 part2Name += int(1000*eta2Max);
140 part2Name += "_";
141 part2Name += int(1000*ptMin);
142 part2Name += "pt";
143 part2Name += int(1000*ptMax);
144 part2Name += "_";
145 part2Name += int(1000*dcaZMin);
146 part2Name += "DCA";
147 part2Name += int(1000*dcaZMax);
148 part2Name += "_";
149 eventName = "";
150 eventName += int(10.*minCentrality[iCentrality] );
151 eventName += "Vo";
152 eventName += int(10.*maxCentrality[iCentrality] );
153 baseName = prefixName;
154 baseName += part1Name;
155 baseName += part2Name;
156 baseName += eventName;
157 listName = baseName;
158 taskName = baseName;
159 outputHistogramFileName = baseName;
160 if (singlesOnly) outputHistogramFileName += singlesOnlySuffix;
161 outputHistogramFileName += ".root";
162 TFile * inputFile = 0;
163 TList * histoList = 0;
164 TH3F * weight_1 = 0;
165 TH3F * weight_2 = 0;
166 if (useWeights)
167 {
168 TGrid::Connect("alien:");
169 inputFile = TFile::Open(inputHistogramFileName,"OLD");
170 if (!inputFile)
171 {
172 //cout << "Requested file:" << inputHistogramFileName << " was not opened. ABORT." << endl;
173 return;
174 }
175 TString nameHistoBase = "correction_";
176 TString nameHisto;
177 nameHistoBase += eventName;
178 if (requestedCharge1 == 1)
179 {
180 nameHisto = nameHistoBase + "_p";
181 //cout << "Input Histogram named: " << nameHisto << endl;
182 weight_1 = (TH3F *) inputFile->Get(nameHisto);
183 }
184 else
185 {
186 nameHisto = nameHistoBase + "_m";
187 //cout << "Input Histogram named: " << nameHisto << endl;
188 weight_1 = (TH3F *) inputFile->Get(nameHisto);
189 }
190 if (!weight_1)
191 {
192 //cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
193 return 0;
194 }
195
196 if (!sameFilter)
197 {
198 weight_2 = 0;
199 if (requestedCharge2 == 1)
200 {
201 nameHisto = nameHistoBase + "_p";
202 //cout << "Input Histogram named: " << nameHisto << endl;
203 weight_2 = (TH3F *) inputFile->Get(nameHisto);
204 }
205 else
206 {
207 nameHisto = nameHistoBase + "_m";
208 //cout << "Input Histogram named: " << nameHisto << endl;
209 weight_2 = (TH3F *) inputFile->Get(nameHisto);
210 }
211 if (!weight_2)
212 {
213 //cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
214 return 0;
215 }
216 }
217 }
218 task = new AliAnalysisTaskpypy(taskName);
219 //configure my task
220 task->SetDebugLevel( debugLevel );
221 task->SetSameFilter( sameFilter );
222 task->SetSinglesOnly( singlesOnly );
223 task->SetUseWeights( useWeights );
224 task->SetRejectPileup( rejectPileup );
225 task->SetRejectPairConversion(rejectPairConversion);
226 task->SetVertexZMin( zMin );
227 task->SetVertexZMax( zMax );
228 task->SetVertexXYMin( -1. );
229 task->SetVertexXYMax( 1. );
230 task->SetCentralityMethod( centralityMethod);
231 task->SetCentrality( minCentrality[iCentrality], maxCentrality[iCentrality]);
232 task->SetPtMin1( ptMin );
233 task->SetPtMax1( ptMax );
234 task->SetEtaMin1( eta1Min );
235 task->SetEtaMax1( eta1Max );
236 task->SetPtMin2( ptMin );
237 task->SetPtMax2( ptMax );
238 task->SetEtaMin2( eta2Min );
239 task->SetEtaMax2( eta2Max );
240 task->SetDcaZMin( dcaZMin );
241 task->SetDcaZMax( dcaZMax );
242 task->SetDcaXYMin( dcaXYMin );
243 task->SetDcaXYMax( dcaXYMax ); //checking by prp
244 task->SetDedxMin( dedxMin );
245 task->SetDedxMax( dedxMax );
246 task->SetNClusterMin( nClusterMin );
247 task->SetTrackFilterBit( trackFilterBit );
248 task->SetRequestedCharge_1( requestedCharge1);
249 task->SetRequestedCharge_2( requestedCharge2);
250 task->SetWeigth_1( weight_1 );
251 task->SetWeigth_2( weight_2 );
252 if(trigger) task->SelectCollisionCandidates(AliVEvent::kINT7);
253 else task->SelectCollisionCandidates(AliVEvent::kMB);
254 cout << "Creating task output container" << endl;
255 taskOutputContainer = analysisManager->CreateContainer(listName,
256 TList::Class(),
257 AliAnalysisManager::kOutputContainer,
258 Form("%s:%s", AliAnalysisManager::GetCommonFileName(),taskname));
259 analysisManager->AddTask(task);
260 analysisManager->ConnectInput( task, 0, analysisManager->GetCommonInputContainer());
261 analysisManager->ConnectOutput(task, 0, taskOutputContainer );
262 iTask++;
263 }
264 return task;
265}