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)
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
8 //==========================================================================
10 //######## !!! THE SWITCH FOR MC ANALYSIS IS NOT IMPLEMENTED YET!!! ##########à
18 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
20 ::Error("AddTaskCharmFraction", "No analysis manager to connect to.");
24 TString str,containername;
25 if(fileout=="standard"){
26 fileout=AliAnalysisManager::GetCommonFileName();
27 fileout+=":PWG3_D2H_";
29 if(containerprefix!="c")fileout+=containerprefix;
34 str.ReplaceAll(".root","");
38 AliAnalysisTaskSECharmFraction *hfTask;
39 if(!gSystem->AccessPathName(cutfile.Data(),kFileExists)){
40 TFile *f=TFile::Open(cutfile.Data());
41 AliRDHFCutsD0toKpi *cutTight= (AliRDHFCutsD0toKpi*)f->Get("D0toKpiCutsStandard");
43 AliRDHFCutsD0toKpi *cutLoose= (AliRDHFCutsD0toKpi*)f->Get("D0toKpiCutsLoose");
45 hfTask = new AliAnalysisTaskSECharmFraction("AliAnalysisTaskSECharmFraction",cutTight,cutLoose);
48 hfTask = new AliAnalysisTaskSECharmFraction("AliAnalysisTaskSECharmFraction");
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);
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);
70 /* ############### HERE THE POSSIBILITY TO SWITCH ON/OFF THE TLISTS AND MC SELECTION WILL BE SET #########à
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);
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);
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,
100 mgr->ConnectOutput(hfTask,1,coutputNentries);
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,
109 mgr->ConnectOutput(hfTask,2,coutputSignalType);
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,
119 mgr->ConnectOutput(hfTask,3,coutputSignalType_LsCuts);
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,
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,
137 mgr->ConnectOutput(hfTask,5,clistMCprop);
139 // Now container for TLists
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,
148 mgr->ConnectOutput(hfTask,last,clistNCsign);
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,
158 mgr->ConnectOutput(hfTask,last,clistNCback);
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,
167 mgr->ConnectOutput(hfTask,last,clistNCfromB);
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,
177 mgr->ConnectOutput(hfTask,last,clistNCfromDstar);
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,
187 mgr->ConnectOutput(hfTask,last,clistNCother);
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,
198 mgr->ConnectOutput(hfTask,last,clistLSCsign);
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,
208 mgr->ConnectOutput(hfTask,last,clistLSCback);
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,
217 mgr->ConnectOutput(hfTask,last,clistLSCfromB);
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,
227 mgr->ConnectOutput(hfTask,last,clistLSCfromDstar);
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,
237 mgr->ConnectOutput(hfTask,last,clistLSCother);
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,
249 mgr->ConnectOutput(hfTask,last,clistTGHCsign);
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,
259 mgr->ConnectOutput(hfTask,last,clistTGHCback);
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,
268 mgr->ConnectOutput(hfTask,last,clistTGHCfromB);
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,
278 mgr->ConnectOutput(hfTask,last,clistTGHCfromDstar);
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,
288 mgr->ConnectOutput(hfTask,last,clistTGHCother);
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);
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);