]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/Correlations/macros/AddTaskDptDptCorrelations.C
Updated documentation
[u/mrichter/AliRoot.git] / PWGCF / Correlations / macros / AddTaskDptDptCorrelations.C
CommitLineData
53842b0b 1//
2// Macro designed for use with the AliAnalysisTaskDptDptCorrelations task.
3//
4// Author: Claude Pruneau, Wayne State
5/////////////////////////////////////////////////////////////////////////////////
6AliAnalysisTaskDptDptCorrelations *AddTaskDptDptCorrelations(int singlesOnly = 1,
7 int useWeights = 0,
8 int centralityMethod = 4)
9
10{
11 // Set Default Configuration of this analysis
12 // ==========================================
13 int debugLevel = 0;
14 int singlesOnly = 1;
15 int useWeights = 0;
16 int rejectPileup = 1;
17 int rejectPairConversion = 1;
18 int sameFilter = 1;
19
20 int centralityMethod = 4;
21 int nCentrality = 10;
22 double minCentrality[] = { 0.5, 5., 10., 20., 30., 40., 50., 60., 70., 80. };
23 double maxCentrality[] = { 5.0, 10., 20., 30., 40., 50., 60., 70., 80., 90. };
24
25 int nChargeSets = 1;
26 int chargeSets[] = { 1, 0, 3 };
27
28 double zMin = -10.;
29 double zMax = 10.;
30 double ptMin = 0.2;
31 double ptMax = 2.0;
32 double etaMin = -1.0;
33 double etaMax = 1.0;
34 double dcaZMin = -3.0;
35 double dcaZMax = 3.0;
36 double dcaXYMin = -3.0;
37 double dcaXYMax = 3.0;
38 double dedxMin = 0.0;
39 double dedxMax = 20000.0;
40 int nClusterMin = 70;
41 int trackFilterBit = 128;
42
43 int requestedCharge1 = 1; //default
44 int requestedCharge2 = -1; //default
45
46
47 // Get the pointer to the existing analysis manager via the static access method.
48 // ==============================================================================
49 AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager();
50
51 if (!analysisManager)
52 {
53 ::Error("AddTaskDptDptCorrelations", "No analysis manager to connect to.");
54 return NULL;
55 }
56
57 TString part1Name;
58 TString part2Name;
59 TString eventName;
60 TString prefixName = "Corr_";
61 TString pileupRejecSuffix = "_PileupRejec";
62 TString pairRejecSuffix = "_PairRejec";
63 TString calibSuffix = "_calib";
64 TString singlesOnlySuffix = "_SO";
65 TString suffix;
66
67 TString inputPath = ".";
68 TString outputPath = ".";
69 TString baseName;
70 TString listName;
71 TString taskName;
72 TString inputHistogramFileName;
73 TString outputHistogramFileName;
74
75 // Create the task and add subtask.
76 // ===========================================================================
77 int iTask = 0; // task counter
78 AliAnalysisDataContainer *taskInputContainer;
79 AliAnalysisDataContainer *taskOutputContainer;
80
81 for (int iCentrality=0; iCentrality < nCentrality; ++iCentrality)
82 {
83 for (int iChargeSet=0; iChargeSet < nChargeSets; iChargeSet++)
84 {
85 switch (chargeSets[iChargeSet])
86 {
87 case 0: part1Name = "P_"; part2Name = "P_"; requestedCharge1 = 1; requestedCharge2 = 1; sameFilter = 1; break;
88 case 1: part1Name = "P_"; part2Name = "M_"; requestedCharge1 = 1; requestedCharge2 = -1; sameFilter = 0; break;
89 case 2: part1Name = "M_"; part2Name = "P_"; requestedCharge1 = -1; requestedCharge2 = 1; sameFilter = 0; break;
90 case 3: part1Name = "M_"; part2Name = "M_"; requestedCharge1 = -1; requestedCharge2 = -1; sameFilter = 1; break;
91 }
92 //part1Name += int(1000*etaMin);
93 part1Name += "eta";
94 part1Name += int(1000*etaMax);
95 part1Name += "_";
96 part1Name += int(1000*ptMin);
97 part1Name += "pt";
98 part1Name += int(1000*ptMax);
99 part1Name += "_";
100 //part2Name += int(1000*etaMin);
101 part2Name += "eta";
102 part2Name += int(1000*etaMax);
103 part2Name += "_";
104 part2Name += int(1000*ptMin);
105 part2Name += "pt";
106 part2Name += int(1000*ptMax);
107 part2Name += "_";
108 eventName = "";
109 eventName += int(10.*minCentrality[iCentrality] );
110 eventName += "Vo";
111 eventName += int(10.*maxCentrality[iCentrality] );
112 //eventName += "_";
113 //eventName += int(10*zMin );
114 //eventName += "Z";
115 //eventName += int(10*zMax );
116 if (rejectPileup) eventName += pileupRejecSuffix;
117 if (rejectPairConversion) eventName += pairRejecSuffix;
118 baseName = prefixName;
119 baseName += part1Name;
120 baseName += part2Name;
121 baseName += eventName;
122 listName = baseName;
123 taskName = baseName;
124 //inputHistogramFileName = inputPath;
125 //inputHistogramFileName += "/";
126 inputHistogramFileName = baseName;
127 inputHistogramFileName += calibSuffix;
128 inputHistogramFileName += ".root";
129 //outputHistogramFileName = outputPath;
130 //outputHistogramFileName += "/";
131 outputHistogramFileName = baseName;
132 if (singlesOnly) outputHistogramFileName += singlesOnlySuffix;
133 outputHistogramFileName += ".root";
134
135 cout << " iTask: " << iTask << endl;
136 cout << " Task Name: " << taskName << endl;
137 cout << " List Name: " << listName << endl;
138 cout << " inputHistogramFileName: " << inputHistogramFileName << endl;
139 cout << " outputHistogramFileName: " << outputHistogramFileName << endl;
140 cout << " using weights: " << useWeights << endl;
141 TFile * inputFile = 0;
142 TList * histoList = 0;
143 TH3F * weight_1 = 0;
144 TH3F * weight_2 = 0;
145 if (useWeights)
146 {
147 inputFile = new TFile(inputHistogramFileName);
148 if (!inputFile)
149 {
150 cout << "Requested file:" << inputHistogramFileName << " was not opened. ABORT." << endl;
151 return;
152 }
153 histoList = (TList *) inputFile->Get(listName);
154 if (!histoList)
155 {
156 cout << "Requested list:" << listName << " was not found. ABORT." << endl;
157 return;
158 }
159 if (requestedCharge1 == 1)
160 weight_1 = (TH3 *) histoList->FindObject("correction_p");
161 else
162 weight_1 = (TH3 *) histoList->FindObject("correction_m");
163 if (!weight_1)
164 {
165 cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
166 return;
167 }
168 if (!sameFilter)
169 {
170 weight_2 = 0;
171 if (requestedCharge2 == 1)
172 weight_2 = (TH3 *) histoList->FindObject("correction_p");
173 else
174 weight_2 = (TH3 *) histoList->FindObject("correction_m");
175 if (!weight_2)
176 {
177 cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
178 return;
179 }
180 }
181 }
182 AliAnalysisTaskDptDptCorrelations* task = new AliAnalysisTaskDptDptCorrelations(taskName);
183 //configure my task
184 task->SetDebugLevel( debugLevel );
185 task->SetSameFilter( sameFilter );
186 task->SetSinglesOnly( singlesOnly );
187 task->SetUseWeights( useWeights );
188 task->SetRejectPileup( rejectPileup );
189 task->SetRejectPairConversion(rejectPairConversion);
190 task->SetVertexZMin( zMin );
191 task->SetVertexZMax( zMax );
192 task->SetVertexXYMin( -1. );
193 task->SetVertexXYMax( 1. );
194 task->SetCentralityMethod( centralityMethod);
195 task->SetCentrality( minCentrality[iCentrality], maxCentrality[iCentrality]);
196 task->SetPtMin1( ptMin );
197 task->SetPtMax1( ptMax );
198 task->SetEtaMin1( etaMin );
199 task->SetEtaMax1( etaMax );
200 task->SetPtMin2( ptMin );
201 task->SetPtMax2( ptMax );
202 task->SetEtaMin2( etaMin );
203 task->SetEtaMax2( etaMax );
204 task->SetDcaZMin( dcaZMin );
205 task->SetDcaZMax( dcaZMax );
206 task->SetDcaXYMin( dcaXYMin );
207 task->SetDcaXYMax( dcaXYMax );
208 task->SetDedxMin( dedxMin );
209 task->SetDedxMax( dedxMax );
210 task->SetNClusterMin( nClusterMin );
211 task->SetTrackFilterBit( trackFilterBit );
212 task->SetRequestedCharge_1( requestedCharge1);
213 task->SetRequestedCharge_2( requestedCharge2);
214 task->SetWeigth_1( weight_1 );
215 task->SetWeigth_2( weight_2 );
216
217
218 cout << "Creating task output container" << endl;
219 taskOutputContainer = analysisManager->CreateContainer(listName,
220 TList::Class(),
221 AliAnalysisManager::kOutputContainer,
ad4d9b74 222 Form("%s:%s", AliAnalysisManager::GetCommonFileName(), listName)); //outputHistogramFileName);
53842b0b 223 cout << "Add task to analysis manager and connect it to input and output containers" << endl;
224 analysisManager->AddTask(task);
225 analysisManager->ConnectInput( task, 0, analysisManager->GetCommonInputContainer());
226 analysisManager->ConnectOutput(task, 0, taskOutputContainer );
227 cout << "Task added ...." << endl;
228
229 iTask++;
230 }
231 }
232
233
234
235 return task;
236}