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