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