]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/macros/dptdptcorrelations/AddTaskDptDptCorrelationsforWeight.C
changed the eta range to +-0.9 (Prabhat Ranjan Pujahari <p.pujahari@cern.ch>)
[u/mrichter/AliRoot.git] / PWGCF / Correlations / macros / dptdptcorrelations / AddTaskDptDptCorrelationsforWeight.C
1 //
2 // Macro designed for use with the AliAnalysisTaskDptDptCorrelations task.
3 //
4 // Author: Prabhat Pujahari & Claude Pruneau, Wayne State
5 // 
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 /////////////////////////////////////////////////////////////////////////////////
12 AliAnalysisTaskDptDptCorrelations *AddTaskDptDptCorrelationsforWeight(int    system                 = 0,
13                                                                       int    singlesOnly            = 1,
14                                                                       int    useWeights             = 0,
15                                                                       int    centralityMethod       = 4,
16                                                                       int    chargeSet              = 1)
17
18 {
19   // Set Default Configuration of this analysis
20   // ==========================================
21   int    debugLevel             = 0;
22   int    rejectPileup           = 1;
23   int    rejectPairConversion   = 1;
24   int    sameFilter             = 1;
25
26   
27   int    nCentrality;
28   double minCentrality[10];
29   double maxCentrality[10];
30
31   if (system==0) // PbPb
32     {
33     if (centralityMethod == 4)
34       {
35         /*nCentrality = 6;
36         minCentrality[0] = 0.0; maxCentrality[0] = 5.0;
37         minCentrality[1] = 5.0; maxCentrality[1] = 10.;
38         minCentrality[2] = 30.; maxCentrality[2] = 40.;
39         minCentrality[3] = 40.; maxCentrality[3] = 50.;
40         minCentrality[4] = 70.; maxCentrality[4] = 80.;
41         minCentrality[5] = 80.; maxCentrality[5] = 90.;*/
42
43         //To Get rid of Memory problem
44         nCentrality = 10;
45         minCentrality[0] = 0.0; maxCentrality[0] = 5.0;
46         minCentrality[1] = 5.0; maxCentrality[1] = 10.;
47         minCentrality[2] = 10.; maxCentrality[2] = 20.;
48         minCentrality[3] = 20.; maxCentrality[3] = 30.;
49         minCentrality[4] = 30.; maxCentrality[4] = 40.;
50         minCentrality[5] = 40.; maxCentrality[5] = 50.;
51         minCentrality[6] = 50.; maxCentrality[6] = 60.;
52         minCentrality[7] = 60.; maxCentrality[7] = 70.;
53         minCentrality[8] = 70.; maxCentrality[8] = 80.;
54         minCentrality[9] = 80.; maxCentrality[9] = 90.;
55         
56       }
57     else
58       {
59       cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."
60       return 0;
61       }
62     }
63   else if (system==1) // pp
64     {
65     if (centralityMethod == 3)
66       {
67       nCentrality = 4;
68       minCentrality[0] = 2;   maxCentrality[0] = 100.0;
69       minCentrality[1] = 2;   maxCentrality[1] = 20.;
70       minCentrality[2] = 20.; maxCentrality[2] = 50.;
71       minCentrality[3] = 50.; maxCentrality[3] = 100.;
72       }
73     else
74       {
75         //cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."
76       return 0;
77       }
78     }
79   else
80     {
81       //cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". Option NOT CURRENTLY AVAILABLE. ABORT."
82     return 0;
83     }
84
85   double zMin                   = -10.;
86   double zMax                   =  10.;
87   double ptMin                  =  0.2;
88   double ptMax                  =  2.0;
89   double etaMin                 = -0.9;
90   double etaMax                 =  0.9;
91   double dcaZMin                = -3.0;
92   double dcaZMax                =  3.0;
93   double dcaXYMin               = -2.4;
94   double dcaXYMax               =  2.4;
95   double dedxMin                =  0.0;
96   double dedxMax                =  20000.0;
97   int    nClusterMin            =   80;
98   int    trackFilterBit         =  128;
99   
100   int    requestedCharge1       =  1; //default
101   int    requestedCharge2       = -1; //default
102   
103   
104   // Get the pointer to the existing analysis manager via the static access method.
105   // ==============================================================================
106   AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager();
107   
108   if (!analysisManager) 
109     {
110     ::Error("AddTaskDptDptCorrelations", "No analysis manager to connect to.");
111     return NULL;
112     }  
113   
114   TString part1Name;
115   TString part2Name;
116   TString eventName;
117   TString prefixName        = "Corr_";
118   TString pileupRejecSuffix = "_PileupRejec";
119   TString pairRejecSuffix   = "_PairRejec";
120   TString calibSuffix       = "_calib";
121   TString singlesOnlySuffix = "_SO";
122   TString suffix;
123   
124   TString inputPath         = ".";
125   TString outputPath        = ".";
126   TString baseName;
127   TString listName;
128   TString taskName;
129   TString inputHistogramFileName;
130   TString outputHistogramFileName;
131   
132   // Create the task and add subtask.
133   // ===========================================================================
134   int iTask = 0; // task counter
135   AliAnalysisDataContainer *taskInputContainer;
136   AliAnalysisDataContainer *taskOutputContainer;
137   AliAnalysisTaskDptDptCorrelations* task;
138   
139   for (int iCentrality=0; iCentrality < nCentrality; ++iCentrality)
140     {
141       switch (chargeSet)
142         {
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;
147         }
148       //part1Name += int(1000*etaMin);
149       part1Name += "eta";
150       part1Name += int(1000*etaMax);
151       part1Name += "_";
152       part1Name += int(1000*ptMin);
153       part1Name += "pt";
154       part1Name += int(1000*ptMax);
155       part1Name += "_";
156       //part2Name += int(1000*etaMin);
157       part2Name += "eta";
158       part2Name += int(1000*etaMax);
159       part2Name += "_";
160       part2Name += int(1000*ptMin);
161       part2Name += "pt";
162       part2Name += int(1000*ptMax);
163       part2Name += "_";
164       eventName =  "";
165       eventName += int(10.*minCentrality[iCentrality] );
166       eventName += "Vo";
167       eventName += int(10.*maxCentrality[iCentrality] );
168       //eventName += "_";
169       //eventName += int(10*zMin ); 
170       //eventName += "Z";
171       //eventName += int(10*zMax ); 
172       //if (rejectPileup)         eventName += pileupRejecSuffix;
173       //if (rejectPairConversion) eventName += pairRejecSuffix;
174       baseName     =   prefixName;
175       baseName     +=  part1Name;
176       baseName     +=  part2Name;
177       baseName     +=  eventName;
178       listName     =   baseName;
179       taskName     =   baseName;
180
181       
182       outputHistogramFileName = baseName;
183       if (singlesOnly) outputHistogramFileName += singlesOnlySuffix;
184       outputHistogramFileName += ".root";
185       
186       /* cout << "============================================================" << endl;
187     cout << "                   iTask: " << iTask << endl;
188       cout << "               Task Name: " << taskName << endl;
189       cout << "               List Name: " << listName << endl;
190       cout << "  inputHistogramFileName: " << inputHistogramFileName  << endl;
191       cout << " outputHistogramFileName: " << outputHistogramFileName << endl;
192       cout << "                  system: " << system << endl;
193       cout << "             singlesOnly: " << singlesOnly << endl;
194       cout << "           using weights: " << useWeights << endl;
195       cout << "        centralityMethod: " << centralityMethod << endl;
196       cout << "               chargeSet: " << chargeSet    << endl;
197       cout << "              debugLevel: " << debugLevel   << endl;
198       cout << "            rejectPileup: " << rejectPileup << endl;
199       cout << "    rejectPairConversion: " << rejectPairConversion  << endl;
200       cout << "              sameFilter: " << sameFilter  << endl;
201       cout << "                    zMin: " << zMin        << endl;
202       cout << "                    zMax: " << zMax        << endl;
203       cout << "                   ptMin: " << ptMin       << endl;
204       cout << "                   ptMax: " << ptMax       << endl;
205       cout << "                  etaMin: " << etaMin   << endl;
206       cout << "                  etaMax: " << etaMax   << endl;
207       cout << "                 dcaZMin: " << dcaZMin  << endl;
208       cout << "                 dcaZMax: " << dcaZMax  << endl;
209       cout << "                dcaXYMin: " << dcaXYMin << endl;
210       cout << "                dcaXYMax: " << dcaXYMax << endl;
211       cout << "                 dedxMin: " << dedxMin  << endl;
212       cout << "                 dedxMax: " << dedxMax  << endl;
213       cout << "             nClusterMin: " << nClusterMin      << endl;
214       cout << "          trackFilterBit: " << trackFilterBit   << endl;
215       cout << "        requestedCharge1: " << requestedCharge1 << endl;
216       cout << "        requestedCharge2: " << requestedCharge2 << endl;
217     cout << "============================================================" << endl;
218       */
219     TFile  * inputFile  = 0;
220       TList  * histoList  = 0;
221       TH3F   * weight_1   = 0;
222       TH3F   * weight_2   = 0;
223       if (useWeights)
224         {
225         TGrid::Connect("alien:");
226         inputFile = TFile::Open(inputHistogramFileName,"OLD");
227         if (!inputFile)
228           {
229           cout << "Requested file:" << inputHistogramFileName << " was not opened. ABORT." << endl;
230           return;
231           }
232         TString nameHistoBase = "correction_";
233         TString nameHisto;
234         nameHistoBase += eventName;
235         if (requestedCharge1 == 1)
236           {
237           nameHisto = nameHistoBase + "_p";
238           cout << "Input Histogram named: " << nameHisto << endl;
239           weight_1 = (TH3F *) inputFile->Get(nameHisto);
240           }
241         else
242           {
243           nameHisto = nameHistoBase + "_m";
244           cout << "Input Histogram named: " << nameHisto << endl;
245           weight_1 = (TH3F *) inputFile->Get(nameHisto);
246           }
247         if (!weight_1) 
248           {
249           cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
250           return 0;
251           }
252         
253         if (!sameFilter)
254           {
255           weight_2 = 0;
256           if (requestedCharge2 == 1)
257             {
258             nameHisto = nameHistoBase + "_p";
259             cout << "Input Histogram named: " << nameHisto << endl;
260             weight_2 = (TH3F *) inputFile->Get(nameHisto);
261             }
262           else
263             {
264             nameHisto = nameHistoBase + "_m";
265             cout << "Input Histogram named: " << nameHisto << endl;
266             weight_2 = (TH3F *) inputFile->Get(nameHisto);
267             }
268           if (!weight_2) 
269             {
270             cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
271             return 0;
272             }
273           }  
274         }
275       task = new  AliAnalysisTaskDptDptCorrelations(taskName);
276       //configure my task
277       task->SetDebugLevel(          debugLevel      ); 
278       task->SetSameFilter(          sameFilter      );
279       task->SetSinglesOnly(         singlesOnly     ); 
280       task->SetUseWeights(          useWeights      ); 
281       task->SetRejectPileup(        rejectPileup    ); 
282       task->SetRejectPairConversion(rejectPairConversion); 
283       task->SetVertexZMin(          zMin            ); 
284       task->SetVertexZMax(          zMax            ); 
285       task->SetVertexXYMin(         -1.            ); 
286       task->SetVertexXYMax(          1.            ); 
287       task->SetCentralityMethod(    centralityMethod);
288       task->SetCentrality(          minCentrality[iCentrality], maxCentrality[iCentrality]);
289       task->SetPtMin1(              ptMin           ); 
290       task->SetPtMax1(              ptMax           ); 
291       task->SetEtaMin1(             etaMin          ); 
292       task->SetEtaMax1(             etaMax          ); 
293       task->SetPtMin2(              ptMin           ); 
294       task->SetPtMax2(              ptMax           ); 
295       task->SetEtaMin2(             etaMin          ); 
296       task->SetEtaMax2(             etaMax          ); 
297       //task->SetDcaZMin(             dcaZMin         ); 
298       //task->SetDcaZMax(             dcaZMax         ); 
299       //task->SetDcaXYMin(            dcaXYMin        ); 
300       //task->SetDcaXYMax(            dcaXYMax        ); 
301       task->SetDedxMin(             dedxMin         ); 
302       task->SetDedxMax(             dedxMax         ); 
303       task->SetNClusterMin(         nClusterMin     ); 
304       task->SetTrackFilterBit(      trackFilterBit  );
305       task->SetRequestedCharge_1(   requestedCharge1); 
306       task->SetRequestedCharge_2(   requestedCharge2); 
307       task->SetWeigth_1(            weight_1        );
308       task->SetWeigth_2(            weight_2        );
309       
310       
311       cout << "Creating task output container" << endl;
312       taskOutputContainer = analysisManager->CreateContainer(listName, 
313                                                              TList::Class(),    
314                                                              AliAnalysisManager::kOutputContainer, 
315                                                              Form("%s:Histos", AliAnalysisManager::GetCommonFileName()));
316       cout << "Add task to analysis manager and connect it to input and output containers" << endl;
317       analysisManager->AddTask(task);
318       analysisManager->ConnectInput( task,  0, analysisManager->GetCommonInputContainer());
319       analysisManager->ConnectOutput(task,  0, taskOutputContainer );
320       cout << "Task added ...." << endl;
321       
322       iTask++;
323     
324     }
325   
326   
327   
328   return task;
329 }