]>
Commit | Line | Data |
---|---|---|
4d0f6171 | 1 | AliAnalysisTaskSECharmFraction* AddTaskSECharmFraction(TString fileout="d0D0.root",Int_t *switchMC=0x0,Int_t readmc=0,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) |
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 | ||
4d0f6171 | 96 | if(readmc>0)hfTask->SetReadMC(kTRUE); |
97 | if(readmc==2){ | |
98 | hfTask->SetRejecCandidateMCUpgrade(kTRUE); | |
99 | hfTask->SetSkipEventSelection(kTRUE); | |
100 | hfTask->SetMaxZvtxForSkipEventSelection(10.); | |
101 | } | |
102 | ||
8399826a | 103 | hfTask->SetNMaxTrForVtx(2); |
104 | hfTask->SetAnalyzeLikeSign(likesign); | |
105 | hfTask->SetUsePID(usepid); | |
106 | hfTask->SetStandardMassSelection(); | |
f1fddf78 | 107 | hfTask->SetAnalysisLevel(analysLevel); |
8739665f | 108 | |
638880fc | 109 | hfTask->SetCheckBitD0flag(checkBitD0); |
110 | ||
8399826a | 111 | // hfTask->SignalInvMassCut(0.27); |
95e5b6b5 | 112 | |
113 | /* ############### HERE THE POSSIBILITY TO SWITCH ON/OFF THE TLISTS AND MC SELECTION WILL BE SET #########à | |
114 | ||
115 | hfTask->SetUseCuts(setD0usecuts); | |
116 | hfTask->SetCheckMC(setcheckMC); | |
117 | hfTask->SetCheckMC_D0(setcheckMC_D0); | |
118 | hfTask->SetCheckMC_2prongs(setcheckMC_2prongs); | |
119 | hfTask->SetCheckMC_prompt(setcheckMC_prompt); | |
120 | hfTask->SetCheckMC_fromB(setcheckMC_fromB); | |
121 | hfTask->SetCheckMC_fromDstar(setSkipD0star); | |
122 | hfTask->SetStudyPureBackground(setStudyPureBack);*/ | |
123 | // hfTask->SetSideBands(0); | |
124 | // hfTask->SetDebugLevel(2); | |
125 | mgr->AddTask(hfTask); | |
126 | ||
127 | ||
128 | ||
129 | // Create containers for input/output | |
130 | AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer(); | |
131 | //mgr->CreateContainer("cinput",TChain::Class(),AliAnalysisManager::kInputContainer); | |
132 | mgr->ConnectInput(hfTask,0,cinput); | |
133 | ||
134 | ||
135 | //Now container for general properties histograms | |
8399826a | 136 | containername="outputNentries"; |
137 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 138 | containername.Append(str.Data()); |
139 | AliAnalysisDataContainer *coutputNentries = mgr->CreateContainer(containername.Data(),TH1F::Class(), | |
140 | AliAnalysisManager::kOutputContainer, | |
8399826a | 141 | fileout.Data()); |
95e5b6b5 | 142 | |
143 | mgr->ConnectOutput(hfTask,1,coutputNentries); | |
144 | ||
8399826a | 145 | containername="outputSignalType"; |
146 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 147 | containername.Append(str.Data()); |
148 | AliAnalysisDataContainer *coutputSignalType = mgr->CreateContainer(containername.Data(),TH1F::Class(), | |
149 | AliAnalysisManager::kOutputContainer, | |
8399826a | 150 | fileout.Data()); |
95e5b6b5 | 151 | |
152 | mgr->ConnectOutput(hfTask,2,coutputSignalType); | |
153 | ||
154 | ||
8399826a | 155 | containername="outputSignalType_LsCuts"; |
156 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 157 | containername.Append(str.Data()); |
158 | AliAnalysisDataContainer *coutputSignalType_LsCuts = mgr->CreateContainer(containername.Data(),TH1F::Class(), | |
159 | AliAnalysisManager::kOutputContainer, | |
8399826a | 160 | fileout.Data()); |
95e5b6b5 | 161 | |
162 | mgr->ConnectOutput(hfTask,3,coutputSignalType_LsCuts); | |
163 | ||
164 | ||
8399826a | 165 | containername="outputSignalType_TghCuts"; |
166 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 167 | containername.Append(str.Data()); |
168 | AliAnalysisDataContainer *coutputSignalType_TghCuts = mgr->CreateContainer(containername.Data(),TH1F::Class(), | |
169 | AliAnalysisManager::kOutputContainer, | |
8399826a | 170 | fileout.Data()); |
95e5b6b5 | 171 | |
172 | mgr->ConnectOutput(hfTask,4,coutputSignalType_TghCuts); | |
bd0c851a | 173 | |
174 | ||
175 | containername="outputNormalizationCounter"; | |
176 | containername.Prepend(containerprefix.Data()); | |
177 | containername.Append(str.Data()); | |
178 | AliAnalysisDataContainer *coutputNormCounter = mgr ->CreateContainer(containername.Data(), AliNormalizationCounter::Class(), | |
179 | AliAnalysisManager::kOutputContainer, | |
180 | fileout.Data()); | |
181 | mgr->ConnectOutput(hfTask, 5, coutputNormCounter); | |
182 | ||
183 | //Now Container for MC TList | |
8399826a | 184 | containername="listMCproperties"; |
185 | containername.Prepend(containerprefix.Data()); | |
186 | containername.Append(str.Data()); | |
187 | AliAnalysisDataContainer *clistMCprop = mgr->CreateContainer(containername.Data(),TList::Class(), | |
188 | AliAnalysisManager::kOutputContainer, | |
189 | fileout.Data()); | |
bd0c851a | 190 | mgr->ConnectOutput(hfTask,6,clistMCprop); |
8399826a | 191 | |
95e5b6b5 | 192 | // Now container for TLists |
bd0c851a | 193 | last=7; |
95e5b6b5 | 194 | //########## NO CUTS TLISTS CONTAINER ##############à |
8399826a | 195 | containername="listNCsign"; |
196 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 197 | containername.Append(str.Data()); |
198 | AliAnalysisDataContainer *clistNCsign = mgr->CreateContainer(containername.Data(),TList::Class(), | |
199 | AliAnalysisManager::kOutputContainer, | |
8399826a | 200 | fileout.Data()); |
95e5b6b5 | 201 | mgr->ConnectOutput(hfTask,last,clistNCsign); |
202 | last++; | |
203 | ||
204 | ||
8399826a | 205 | containername="listNCback"; |
206 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 207 | containername.Append(str.Data()); |
208 | AliAnalysisDataContainer *clistNCback = mgr->CreateContainer(containername.Data(),TList::Class(), | |
209 | AliAnalysisManager::kOutputContainer, | |
8399826a | 210 | fileout.Data()); |
95e5b6b5 | 211 | mgr->ConnectOutput(hfTask,last,clistNCback); |
212 | last++; | |
213 | ||
8399826a | 214 | containername="listNCfromB"; |
215 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 216 | containername.Append(str.Data()); |
217 | AliAnalysisDataContainer *clistNCfromB = mgr->CreateContainer(containername.Data(),TList::Class(), | |
218 | AliAnalysisManager::kOutputContainer, | |
8399826a | 219 | fileout.Data()); |
95e5b6b5 | 220 | mgr->ConnectOutput(hfTask,last,clistNCfromB); |
221 | last++; | |
222 | ||
223 | ||
8399826a | 224 | containername="listNCfromDstar"; |
225 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 226 | containername.Append(str.Data()); |
227 | AliAnalysisDataContainer *clistNCfromDstar = mgr->CreateContainer(containername.Data(),TList::Class(), | |
228 | AliAnalysisManager::kOutputContainer, | |
8399826a | 229 | fileout.Data()); |
95e5b6b5 | 230 | mgr->ConnectOutput(hfTask,last,clistNCfromDstar); |
231 | last++; | |
232 | ||
233 | ||
8399826a | 234 | containername="listNCother"; |
235 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 236 | containername.Append(str.Data()); |
237 | AliAnalysisDataContainer *clistNCother = mgr->CreateContainer(containername.Data(),TList::Class(), | |
238 | AliAnalysisManager::kOutputContainer, | |
8399826a | 239 | fileout.Data()); |
95e5b6b5 | 240 | mgr->ConnectOutput(hfTask,last,clistNCother); |
241 | last++; | |
242 | ||
243 | ||
244 | //######### LOOSE CUTS TLISTS CONTAINER ############# | |
8399826a | 245 | containername="listLSCsign"; |
246 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 247 | containername.Append(str.Data()); |
248 | AliAnalysisDataContainer *clistLSCsign = mgr->CreateContainer(containername.Data(),TList::Class(), | |
249 | AliAnalysisManager::kOutputContainer, | |
8399826a | 250 | fileout.Data()); |
95e5b6b5 | 251 | mgr->ConnectOutput(hfTask,last,clistLSCsign); |
252 | last++; | |
253 | ||
254 | ||
8399826a | 255 | containername="listLSCback"; |
256 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 257 | containername.Append(str.Data()); |
258 | AliAnalysisDataContainer *clistLSCback = mgr->CreateContainer(containername.Data(),TList::Class(), | |
259 | AliAnalysisManager::kOutputContainer, | |
8399826a | 260 | fileout.Data()); |
95e5b6b5 | 261 | mgr->ConnectOutput(hfTask,last,clistLSCback); |
262 | last++; | |
263 | ||
8399826a | 264 | containername="listLSCfromB"; |
265 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 266 | containername.Append(str.Data()); |
267 | AliAnalysisDataContainer *clistLSCfromB = mgr->CreateContainer(containername.Data(),TList::Class(), | |
268 | AliAnalysisManager::kOutputContainer, | |
8399826a | 269 | fileout.Data()); |
95e5b6b5 | 270 | mgr->ConnectOutput(hfTask,last,clistLSCfromB); |
271 | last++; | |
272 | ||
273 | ||
8399826a | 274 | containername="listLSCfromDstar"; |
275 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 276 | containername.Append(str.Data()); |
277 | AliAnalysisDataContainer *clistLSCfromDstar = mgr->CreateContainer(containername.Data(),TList::Class(), | |
278 | AliAnalysisManager::kOutputContainer, | |
8399826a | 279 | fileout.Data()); |
95e5b6b5 | 280 | mgr->ConnectOutput(hfTask,last,clistLSCfromDstar); |
281 | last++; | |
282 | ||
283 | ||
8399826a | 284 | containername="listLSCother"; |
285 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 286 | containername.Append(str.Data()); |
287 | AliAnalysisDataContainer *clistLSCother = mgr->CreateContainer(containername.Data(),TList::Class(), | |
288 | AliAnalysisManager::kOutputContainer, | |
8399826a | 289 | fileout.Data()); |
95e5b6b5 | 290 | mgr->ConnectOutput(hfTask,last,clistLSCother); |
291 | last++; | |
292 | ||
293 | ||
294 | ||
295 | //######### TIGHT CUTS TLISTS CONTAINER ############# | |
8399826a | 296 | containername="listTGHCsign"; |
297 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 298 | containername.Append(str.Data()); |
299 | AliAnalysisDataContainer *clistTGHCsign = mgr->CreateContainer(containername.Data(),TList::Class(), | |
300 | AliAnalysisManager::kOutputContainer, | |
8399826a | 301 | fileout.Data()); |
95e5b6b5 | 302 | mgr->ConnectOutput(hfTask,last,clistTGHCsign); |
303 | last++; | |
304 | ||
305 | ||
8399826a | 306 | containername="listTGHCback"; |
307 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 308 | containername.Append(str.Data()); |
309 | AliAnalysisDataContainer *clistTGHCback = mgr->CreateContainer(containername.Data(),TList::Class(), | |
310 | AliAnalysisManager::kOutputContainer, | |
8399826a | 311 | fileout.Data()); |
95e5b6b5 | 312 | mgr->ConnectOutput(hfTask,last,clistTGHCback); |
313 | last++; | |
314 | ||
8399826a | 315 | containername="listTGHCfromB"; |
316 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 317 | containername.Append(str.Data()); |
318 | AliAnalysisDataContainer *clistTGHCfromB = mgr->CreateContainer(containername.Data(),TList::Class(), | |
319 | AliAnalysisManager::kOutputContainer, | |
8399826a | 320 | fileout.Data()); |
95e5b6b5 | 321 | mgr->ConnectOutput(hfTask,last,clistTGHCfromB); |
322 | last++; | |
323 | ||
324 | ||
8399826a | 325 | containername="listTGHCfromDstar"; |
326 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 327 | containername.Append(str.Data()); |
328 | AliAnalysisDataContainer *clistTGHCfromDstar = mgr->CreateContainer(containername.Data(),TList::Class(), | |
329 | AliAnalysisManager::kOutputContainer, | |
8399826a | 330 | fileout.Data()); |
95e5b6b5 | 331 | mgr->ConnectOutput(hfTask,last,clistTGHCfromDstar); |
332 | last++; | |
333 | ||
334 | ||
8399826a | 335 | containername="listTGHCother"; |
336 | containername.Prepend(containerprefix.Data()); | |
95e5b6b5 | 337 | containername.Append(str.Data()); |
338 | AliAnalysisDataContainer *clistTGHCother = mgr->CreateContainer(containername.Data(),TList::Class(), | |
339 | AliAnalysisManager::kOutputContainer, | |
8399826a | 340 | fileout.Data()); |
95e5b6b5 | 341 | mgr->ConnectOutput(hfTask,last,clistTGHCother); |
8399826a | 342 | last++; |
95e5b6b5 | 343 | |
8399826a | 344 | // Container for Cuts Objects |
345 | containername="cutsObjectTight"; | |
346 | containername.Prepend(containerprefix.Data()); | |
347 | containername.Append(str.Data()); | |
348 | AliAnalysisDataContainer *cCutsObjectTight = mgr->CreateContainer(containername,AliRDHFCutsD0toKpi::Class(),AliAnalysisManager::kOutputContainer,fileout.Data()); //cuts | |
349 | mgr->ConnectOutput(hfTask,last,cCutsObjectTight); | |
350 | last++; | |
351 | ||
352 | containername="cutsObjectLoose"; | |
353 | containername.Prepend(containerprefix.Data()); | |
354 | containername.Append(str.Data()); | |
355 | AliAnalysisDataContainer *cCutsObjectLoose = mgr->CreateContainer(containername,AliRDHFCutsD0toKpi::Class(),AliAnalysisManager::kOutputContainer,fileout.Data()); //cuts | |
356 | mgr->ConnectOutput(hfTask,last,cCutsObjectLoose); | |
95e5b6b5 | 357 | |
358 | return hfTask; | |
359 | } |