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)
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!!! ##########
20 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
22 ::Error("AddTaskCharmFraction", "No analysis manager to connect to.");
26 TString str,containername;
27 if(fileout=="standard"){
28 fileout=AliAnalysisManager::GetCommonFileName();
29 fileout+=":PWG3_D2H_";
31 if(containerprefix!="c")fileout+=containerprefix;
34 else if(fileout=="standardUp"){
35 fileout=AliAnalysisManager::GetCommonFileName();
36 fileout+=":PWG3_D2H_Up_";
38 if(containerprefix!="c")fileout+=containerprefix;
43 str.ReplaceAll(".root","");
47 AliAnalysisTaskSECharmFraction *hfTask;
48 if(!gSystem->AccessPathName(cutfile.Data(),kFileExists)){
49 TFile *f=TFile::Open(cutfile.Data());
50 AliRDHFCutsD0toKpi *cutTight= (AliRDHFCutsD0toKpi*)f->Get("D0toKpiCutsStandard");
52 AliRDHFCutsD0toKpi *cutLoose= (AliRDHFCutsD0toKpi*)f->Get("D0toKpiCutsLoose");
54 hfTask = new AliAnalysisTaskSECharmFraction("AliAnalysisTaskSECharmFraction",cutTight,cutLoose);
57 //hfTask = new AliAnalysisTaskSECharmFraction("AliAnalysisTaskSECharmFraction");
58 AliRDHFCutsD0toKpi *cutTight=new AliRDHFCutsD0toKpi("D0toKpiCutsStandard");
59 AliRDHFCutsD0toKpi *cutLoose=new AliRDHFCutsD0toKpi("D0toKpiCutsLoose");
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.);
72 cutTight->SetStandardCutsPP2010();
73 cutLoose->SetStandardCutsPP2010();
75 hfTask = new AliAnalysisTaskSECharmFraction("AliAnalysisTaskSECharmFraction",cutTight,cutLoose);
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);
88 printf("Cannot activate the filling of all the histograms for PbPb analysis \n changing analysis level to 2 \n");
91 // Activate Default PID for proton rejection (TEMPORARY)
92 // cloose->SetUseDefaultPID(kTRUE);
93 // ctight->SetUseDefaultPID(kTRUE);
96 hfTask->SetReadMC(readmc);
97 hfTask->SetNMaxTrForVtx(2);
98 hfTask->SetAnalyzeLikeSign(likesign);
99 hfTask->SetUsePID(usepid);
100 hfTask->SetStandardMassSelection();
101 hfTask->SetAnalysisLevel(analysLevel);
103 hfTask->SetCheckBitD0flag(checkBitD0);
105 // hfTask->SignalInvMassCut(0.27);
107 /* ############### HERE THE POSSIBILITY TO SWITCH ON/OFF THE TLISTS AND MC SELECTION WILL BE SET #########à
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);
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);
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,
137 mgr->ConnectOutput(hfTask,1,coutputNentries);
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,
146 mgr->ConnectOutput(hfTask,2,coutputSignalType);
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,
156 mgr->ConnectOutput(hfTask,3,coutputSignalType_LsCuts);
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,
166 mgr->ConnectOutput(hfTask,4,coutputSignalType_TghCuts);
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,
175 mgr->ConnectOutput(hfTask, 5, coutputNormCounter);
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,
184 mgr->ConnectOutput(hfTask,6,clistMCprop);
186 // Now container for TLists
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,
195 mgr->ConnectOutput(hfTask,last,clistNCsign);
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,
205 mgr->ConnectOutput(hfTask,last,clistNCback);
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,
214 mgr->ConnectOutput(hfTask,last,clistNCfromB);
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,
224 mgr->ConnectOutput(hfTask,last,clistNCfromDstar);
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,
234 mgr->ConnectOutput(hfTask,last,clistNCother);
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,
245 mgr->ConnectOutput(hfTask,last,clistLSCsign);
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,
255 mgr->ConnectOutput(hfTask,last,clistLSCback);
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,
264 mgr->ConnectOutput(hfTask,last,clistLSCfromB);
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,
274 mgr->ConnectOutput(hfTask,last,clistLSCfromDstar);
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,
284 mgr->ConnectOutput(hfTask,last,clistLSCother);
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,
296 mgr->ConnectOutput(hfTask,last,clistTGHCsign);
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,
306 mgr->ConnectOutput(hfTask,last,clistTGHCback);
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,
315 mgr->ConnectOutput(hfTask,last,clistTGHCfromB);
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,
325 mgr->ConnectOutput(hfTask,last,clistTGHCfromDstar);
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,
335 mgr->ConnectOutput(hfTask,last,clistTGHCother);
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);
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);