]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/macros/AddTaskSECharmFraction.C
Updates in plottinmg macro (ChiaraB)
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / macros / AddTaskSECharmFraction.C
1 AliAnalysisTaskSECharmFraction* AddTaskSECharmFraction(TString fileout="d0D0.root",Int_t *switchMC=0x0,Bool_t readmc=kFALSE,Bool_t usepid=kTRUE,Bool_t likesign=kFALSE,TString cutfile="D0toKpiCharmFractCuts.root",TString containerprefix="c",Int_t ppPbPb=0,Int_t analysLevel=2, Float_t minC=0., Float_t maxC=7.5,Float_t minCloose=20., Float_t maxCloose=50.,Bool_t checkBitD0=kTRUE)
2 {  
3   //
4   // Configuration macro for the task to analyze the fraction of prompt charm
5   // using the D0 impact parameter
6   // andrea.rossi@ts.infn.it
7   //
8   //==========================================================================
9
10   //######## !!! THE SWITCH FOR MC ANALYSIS IS NOT IMPLEMENTED YET!!! ##########
11   if(switchMC!=0x0){
12     switchMC[0]=1;
13     switchMC[1]=1;
14     switchMC[2]=1;
15     switchMC[3]=1;
16     switchMC[4]=1;
17   }
18   Int_t last=0;
19
20   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
21   if (!mgr) {
22     ::Error("AddTaskCharmFraction", "No analysis manager to connect to.");
23     return NULL;
24   }   
25   
26   TString str,containername;
27   if(fileout=="standard"){
28     fileout=AliAnalysisManager::GetCommonFileName();
29     fileout+=":PWG3_D2H_";
30     fileout+="d0D0";
31     if(containerprefix!="c")fileout+=containerprefix;
32     str="d0D0";
33   }
34   else if(fileout=="standardUp"){
35     fileout=AliAnalysisManager::GetCommonFileName();
36     fileout+=":PWG3_D2H_Up_";
37     fileout+="d0D0";
38     if(containerprefix!="c")fileout+=containerprefix;
39     str="d0D0";    
40   }
41   else {
42     str=fileout;
43     str.ReplaceAll(".root","");
44   }
45   str.Prepend("_");
46
47   AliAnalysisTaskSECharmFraction *hfTask;
48   if(!gSystem->AccessPathName(cutfile.Data(),kFileExists)){
49     TFile *f=TFile::Open(cutfile.Data());
50     AliRDHFCutsD0toKpi *cutTight= (AliRDHFCutsD0toKpi*)f->Get("D0toKpiCutsStandard");
51     cutTight->PrintAll();
52     AliRDHFCutsD0toKpi *cutLoose= (AliRDHFCutsD0toKpi*)f->Get("D0toKpiCutsLoose");
53     cutLoose->PrintAll();
54     hfTask = new AliAnalysisTaskSECharmFraction("AliAnalysisTaskSECharmFraction",cutTight,cutLoose);
55   }
56   else {
57     //hfTask = new AliAnalysisTaskSECharmFraction("AliAnalysisTaskSECharmFraction");
58     AliRDHFCutsD0toKpi *cutTight=new AliRDHFCutsD0toKpi("D0toKpiCutsStandard");
59     AliRDHFCutsD0toKpi *cutLoose=new AliRDHFCutsD0toKpi("D0toKpiCutsLoose");
60     if(ppPbPb==1){
61       printf("USING STANDARD CUTS 2011 \n");
62       cutTight->SetStandardCutsPbPb2011();
63       cutTight->SetMinCentrality(minC);
64       cutTight->SetMaxCentrality(maxC);
65       cutTight->SetMinPtCandidate(0.);
66       cutLoose->SetStandardCutsPbPb2011();
67       cutLoose->SetMinCentrality(minCloose);
68       cutLoose->SetMaxCentrality(maxCloose);
69       cutLoose->SetMinPtCandidate(0.);
70     }
71     else {
72       cutTight->SetStandardCutsPP2010();
73       cutLoose->SetStandardCutsPP2010();
74     }
75     hfTask = new AliAnalysisTaskSECharmFraction("AliAnalysisTaskSECharmFraction",cutTight,cutLoose);  
76     cutLoose->PrintAll();
77   }
78   
79   if(ppPbPb==1){// Switch Off recalctulation of primary vertex w/o candidate's daughters
80     // a protection that must be kept here to be sure 
81     //that this is done also if the cut objects are provided by outside 
82     Printf("AddTaskSECharmFraction: Switch Off recalculation of primary vertex w/o candidate's daughters (PbPb analysis) \n");
83     AliRDHFCutsD0toKpi *cloose=hfTask->GetLooseCut();
84     AliRDHFCutsD0toKpi *ctight=hfTask->GetTightCut();
85     cloose->SetRemoveDaughtersFromPrim(kFALSE);
86     ctight->SetRemoveDaughtersFromPrim(kFALSE);
87     if(analysLevel<2){
88       printf("Cannot activate the filling of all the histograms for PbPb analysis \n changing analysis level to 2 \n");
89       analysLevel=2;
90     }
91     // Activate Default PID for proton rejection (TEMPORARY)
92     // cloose->SetUseDefaultPID(kTRUE);
93     // ctight->SetUseDefaultPID(kTRUE);
94   }
95
96   hfTask->SetReadMC(readmc);
97   hfTask->SetNMaxTrForVtx(2);
98   hfTask->SetAnalyzeLikeSign(likesign);
99   hfTask->SetUsePID(usepid);
100   hfTask->SetStandardMassSelection();
101   hfTask->SetAnalysisLevel(analysLevel);
102
103   hfTask->SetCheckBitD0flag(checkBitD0);
104
105   // hfTask->SignalInvMassCut(0.27);
106
107   /*  ############### HERE THE POSSIBILITY TO SWITCH ON/OFF THE TLISTS AND MC SELECTION WILL BE SET #########à
108
109   hfTask->SetUseCuts(setD0usecuts);
110   hfTask->SetCheckMC(setcheckMC);
111   hfTask->SetCheckMC_D0(setcheckMC_D0);
112   hfTask->SetCheckMC_2prongs(setcheckMC_2prongs);
113   hfTask->SetCheckMC_prompt(setcheckMC_prompt);
114   hfTask->SetCheckMC_fromB(setcheckMC_fromB);
115   hfTask->SetCheckMC_fromDstar(setSkipD0star);
116   hfTask->SetStudyPureBackground(setStudyPureBack);*/
117   //  hfTask->SetSideBands(0);
118   //  hfTask->SetDebugLevel(2);
119   mgr->AddTask(hfTask);
120  
121  
122   
123   // Create containers for input/output
124   AliAnalysisDataContainer *cinput =   mgr->GetCommonInputContainer();
125   //mgr->CreateContainer("cinput",TChain::Class(),AliAnalysisManager::kInputContainer);
126   mgr->ConnectInput(hfTask,0,cinput);
127   
128
129   //Now container for general properties histograms
130   containername="outputNentries";
131   containername.Prepend(containerprefix.Data());
132   containername.Append(str.Data());
133   AliAnalysisDataContainer *coutputNentries = mgr->CreateContainer(containername.Data(),TH1F::Class(),
134                                                            AliAnalysisManager::kOutputContainer, 
135                                                            fileout.Data());
136   
137   mgr->ConnectOutput(hfTask,1,coutputNentries);
138
139   containername="outputSignalType";
140   containername.Prepend(containerprefix.Data());
141   containername.Append(str.Data());
142   AliAnalysisDataContainer *coutputSignalType = mgr->CreateContainer(containername.Data(),TH1F::Class(),
143                                                            AliAnalysisManager::kOutputContainer, 
144                                                            fileout.Data());
145   
146   mgr->ConnectOutput(hfTask,2,coutputSignalType);
147
148
149   containername="outputSignalType_LsCuts";
150   containername.Prepend(containerprefix.Data());
151   containername.Append(str.Data());
152   AliAnalysisDataContainer *coutputSignalType_LsCuts = mgr->CreateContainer(containername.Data(),TH1F::Class(),
153                                                            AliAnalysisManager::kOutputContainer, 
154                                                            fileout.Data());
155   
156   mgr->ConnectOutput(hfTask,3,coutputSignalType_LsCuts);
157
158
159   containername="outputSignalType_TghCuts";
160   containername.Prepend(containerprefix.Data());
161   containername.Append(str.Data());
162   AliAnalysisDataContainer *coutputSignalType_TghCuts = mgr->CreateContainer(containername.Data(),TH1F::Class(),
163                                                            AliAnalysisManager::kOutputContainer, 
164                                                            fileout.Data());
165   
166   mgr->ConnectOutput(hfTask,4,coutputSignalType_TghCuts);
167
168
169   containername="outputNormalizationCounter";
170   containername.Prepend(containerprefix.Data());
171   containername.Append(str.Data());
172   AliAnalysisDataContainer *coutputNormCounter = mgr ->CreateContainer(containername.Data(), AliNormalizationCounter::Class(), 
173                                                                        AliAnalysisManager::kOutputContainer, 
174                                                                        fileout.Data());
175   mgr->ConnectOutput(hfTask, 5, coutputNormCounter);
176   
177   //Now Container for MC TList
178   containername="listMCproperties";
179   containername.Prepend(containerprefix.Data());
180   containername.Append(str.Data());
181   AliAnalysisDataContainer *clistMCprop = mgr->CreateContainer(containername.Data(),TList::Class(),
182                                                                AliAnalysisManager::kOutputContainer, 
183                                                                fileout.Data());
184   mgr->ConnectOutput(hfTask,6,clistMCprop);
185   
186   // Now container for TLists 
187   last=7;
188   //##########  NO CUTS TLISTS CONTAINER ##############à
189   containername="listNCsign";
190   containername.Prepend(containerprefix.Data());
191   containername.Append(str.Data());
192   AliAnalysisDataContainer *clistNCsign = mgr->CreateContainer(containername.Data(),TList::Class(),
193                                                            AliAnalysisManager::kOutputContainer, 
194                                                            fileout.Data());
195   mgr->ConnectOutput(hfTask,last,clistNCsign);
196   last++;
197
198
199   containername="listNCback";  
200   containername.Prepend(containerprefix.Data());
201   containername.Append(str.Data());
202   AliAnalysisDataContainer *clistNCback = mgr->CreateContainer(containername.Data(),TList::Class(),
203                                                            AliAnalysisManager::kOutputContainer, 
204                                                            fileout.Data());
205   mgr->ConnectOutput(hfTask,last,clistNCback);
206   last++;
207
208   containername="listNCfromB";
209   containername.Prepend(containerprefix.Data());
210   containername.Append(str.Data());
211   AliAnalysisDataContainer *clistNCfromB = mgr->CreateContainer(containername.Data(),TList::Class(),
212                                                            AliAnalysisManager::kOutputContainer, 
213                                                            fileout.Data());
214   mgr->ConnectOutput(hfTask,last,clistNCfromB);
215   last++;
216
217
218   containername="listNCfromDstar";
219   containername.Prepend(containerprefix.Data());
220   containername.Append(str.Data());
221   AliAnalysisDataContainer *clistNCfromDstar = mgr->CreateContainer(containername.Data(),TList::Class(),
222                                                            AliAnalysisManager::kOutputContainer, 
223                                                            fileout.Data());
224   mgr->ConnectOutput(hfTask,last,clistNCfromDstar);
225   last++;
226
227
228   containername="listNCother";
229   containername.Prepend(containerprefix.Data());
230   containername.Append(str.Data());
231   AliAnalysisDataContainer *clistNCother = mgr->CreateContainer(containername.Data(),TList::Class(),
232                                                            AliAnalysisManager::kOutputContainer, 
233                                                            fileout.Data());
234   mgr->ConnectOutput(hfTask,last,clistNCother);
235   last++;
236
237
238   //######### LOOSE CUTS TLISTS CONTAINER #############
239   containername="listLSCsign";
240   containername.Prepend(containerprefix.Data());
241   containername.Append(str.Data());
242   AliAnalysisDataContainer *clistLSCsign = mgr->CreateContainer(containername.Data(),TList::Class(),
243                                                            AliAnalysisManager::kOutputContainer, 
244                                                            fileout.Data());
245   mgr->ConnectOutput(hfTask,last,clistLSCsign);
246   last++;
247
248
249   containername="listLSCback";
250   containername.Prepend(containerprefix.Data());
251   containername.Append(str.Data());
252   AliAnalysisDataContainer *clistLSCback = mgr->CreateContainer(containername.Data(),TList::Class(),
253                                                            AliAnalysisManager::kOutputContainer, 
254                                                            fileout.Data());
255   mgr->ConnectOutput(hfTask,last,clistLSCback);
256   last++;
257
258   containername="listLSCfromB";
259   containername.Prepend(containerprefix.Data());
260   containername.Append(str.Data());
261   AliAnalysisDataContainer *clistLSCfromB = mgr->CreateContainer(containername.Data(),TList::Class(),
262                                                            AliAnalysisManager::kOutputContainer, 
263                                                            fileout.Data());
264   mgr->ConnectOutput(hfTask,last,clistLSCfromB);
265   last++;
266
267
268   containername="listLSCfromDstar";
269   containername.Prepend(containerprefix.Data());
270   containername.Append(str.Data());
271   AliAnalysisDataContainer *clistLSCfromDstar = mgr->CreateContainer(containername.Data(),TList::Class(),
272                                                            AliAnalysisManager::kOutputContainer, 
273                                                            fileout.Data());
274   mgr->ConnectOutput(hfTask,last,clistLSCfromDstar);
275   last++;
276
277
278   containername="listLSCother";
279   containername.Prepend(containerprefix.Data());
280   containername.Append(str.Data());
281   AliAnalysisDataContainer *clistLSCother = mgr->CreateContainer(containername.Data(),TList::Class(),
282                                                            AliAnalysisManager::kOutputContainer, 
283                                                            fileout.Data());
284   mgr->ConnectOutput(hfTask,last,clistLSCother);
285   last++;
286
287
288
289   //######### TIGHT CUTS TLISTS CONTAINER #############
290     containername="listTGHCsign";
291   containername.Prepend(containerprefix.Data());
292   containername.Append(str.Data());
293   AliAnalysisDataContainer *clistTGHCsign = mgr->CreateContainer(containername.Data(),TList::Class(),
294                                                            AliAnalysisManager::kOutputContainer, 
295                                                            fileout.Data());
296   mgr->ConnectOutput(hfTask,last,clistTGHCsign);
297   last++;
298
299
300   containername="listTGHCback";
301   containername.Prepend(containerprefix.Data());
302   containername.Append(str.Data());
303   AliAnalysisDataContainer *clistTGHCback = mgr->CreateContainer(containername.Data(),TList::Class(),
304                                                            AliAnalysisManager::kOutputContainer, 
305                                                            fileout.Data());
306   mgr->ConnectOutput(hfTask,last,clistTGHCback);
307   last++;
308
309   containername="listTGHCfromB";
310   containername.Prepend(containerprefix.Data());
311   containername.Append(str.Data());
312   AliAnalysisDataContainer *clistTGHCfromB = mgr->CreateContainer(containername.Data(),TList::Class(),
313                                                            AliAnalysisManager::kOutputContainer, 
314                                                            fileout.Data());
315   mgr->ConnectOutput(hfTask,last,clistTGHCfromB);
316   last++;
317
318
319   containername="listTGHCfromDstar";
320   containername.Prepend(containerprefix.Data());
321   containername.Append(str.Data());
322   AliAnalysisDataContainer *clistTGHCfromDstar = mgr->CreateContainer(containername.Data(),TList::Class(),
323                                                            AliAnalysisManager::kOutputContainer, 
324                                                            fileout.Data());
325   mgr->ConnectOutput(hfTask,last,clistTGHCfromDstar);
326   last++;
327
328
329   containername="listTGHCother";
330   containername.Prepend(containerprefix.Data());
331   containername.Append(str.Data());
332   AliAnalysisDataContainer *clistTGHCother = mgr->CreateContainer(containername.Data(),TList::Class(),
333                                                            AliAnalysisManager::kOutputContainer, 
334                                                            fileout.Data());
335   mgr->ConnectOutput(hfTask,last,clistTGHCother);
336   last++;
337   
338   // Container for Cuts Objects
339   containername="cutsObjectTight";
340   containername.Prepend(containerprefix.Data());
341   containername.Append(str.Data());
342   AliAnalysisDataContainer *cCutsObjectTight = mgr->CreateContainer(containername,AliRDHFCutsD0toKpi::Class(),AliAnalysisManager::kOutputContainer,fileout.Data()); //cuts
343   mgr->ConnectOutput(hfTask,last,cCutsObjectTight);
344   last++;
345   
346   containername="cutsObjectLoose";
347   containername.Prepend(containerprefix.Data());
348   containername.Append(str.Data());
349   AliAnalysisDataContainer *cCutsObjectLoose = mgr->CreateContainer(containername,AliRDHFCutsD0toKpi::Class(),AliAnalysisManager::kOutputContainer,fileout.Data()); //cuts
350   mgr->ConnectOutput(hfTask,last,cCutsObjectLoose);
351
352   return hfTask;
353 }