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