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