]>
Commit | Line | Data |
---|---|---|
e5532e90 | 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.) |
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 | } |