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