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