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