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