]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/vertexingHF/AliAnalysisTaskSESelectHF4Prong.cxx
Analysis code for D0->4prong (Fabio)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliAnalysisTaskSESelectHF4Prong.cxx
CommitLineData
601736df 1/**************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/////////////////////////////////////////////////////////////
17//
18// AliAnalysisTaskSE for the selection of heavy flavor
19// decay candidates and creation a stand-alone AOD for
20// 4prong D0 decay.
21//
22// Author: A.Dainese, andrea.dainese@lnl.infn.it
23// F.Colamaria, fabio.colamaria@ba.infn.it
24/////////////////////////////////////////////////////////////
25
26
27#include "Riostream.h"
28#include "TFile.h"
29#include "TList.h"
30#include "TH1F.h"
31#include "TH2F.h"
32#include "TClonesArray.h"
33#include "TDatabasePDG.h"
34#include "TROOT.h"
35#include "TCanvas.h"
36#include "TBits.h"
37#include "TNtuple.h"
38
39#include "AliAnalysisDataSlot.h"
40#include "AliAnalysisDataContainer.h"
41#include "AliAnalysisManager.h"
42#include "AliAODHandler.h"
43#include "AliAODEvent.h"
44#include "AliAODVertex.h"
45#include "AliAODTrack.h"
46#include "AliAODRecoDecayHF4Prong.h"
47#include "AliAnalysisVertexingHF.h"
48#include "AliAnalysisTaskSE.h"
49#include "AliAnalysisTaskSESelectHF4Prong.h"
50#include "AliAODPidHF.h"
51#include "AliRDHFCuts.h"
52
53ClassImp(AliAnalysisTaskSESelectHF4Prong)
54
55
56//________________________________________________________________________
57AliAnalysisTaskSESelectHF4Prong::AliAnalysisTaskSESelectHF4Prong():
58AliAnalysisTaskSE(),
59fVerticesHFTClArr(0),
60fCharm4ProngTClArr(0),
61fOutput(0),
62fOutput2(0),
63fOutput3(0),
64fOutput4(0),
65fOutput5(0),
66fOutputC(0),
67fhInvMassD0Sum_10Mev_Bin1(0),
68fhInvMassD0barSum_10Mev_Bin1(0),
69fhInvMassSumAll_10Mev_Bin1(0),
70fhInvMassD0Sum_5Mev_Bin1(0),
71fhInvMassD0barSum_5Mev_Bin1(0),
72fhInvMassSumAll_5Mev_Bin1(0),
73fhInvMassD0Sum_10Mev_Bin2(0),
74fhInvMassD0barSum_10Mev_Bin2(0),
75fhInvMassSumAll_10Mev_Bin2(0),
76fhInvMassD0Sum_5Mev_Bin2(0),
77fhInvMassD0barSum_5Mev_Bin2(0),
78fhInvMassSumAll_5Mev_Bin2(0),
79fhInvMassD0Sum_10Mev_Bin3(0),
80fhInvMassD0barSum_10Mev_Bin3(0),
81fhInvMassSumAll_10Mev_Bin3(0),
82fhInvMassD0Sum_5Mev_Bin3(0),
83fhInvMassD0barSum_5Mev_Bin3(0),
84fhInvMassSumAll_5Mev_Bin3(0),
85fhInvMassD0Sum_10Mev_Bin4(0),
86fhInvMassD0barSum_10Mev_Bin4(0),
87fhInvMassSumAll_10Mev_Bin4(0),
88fhInvMassD0Sum_5Mev_Bin4(0),
89fhInvMassD0barSum_5Mev_Bin4(0),
90fhInvMassSumAll_5Mev_Bin4(0),
91fhInvMassD0Sum_10Mev_Bin5(0),
92fhInvMassD0barSum_10Mev_Bin5(0),
93fhInvMassSumAll_10Mev_Bin5(0),
94fhInvMassD0Sum_5Mev_Bin5(0),
95fhInvMassD0barSum_5Mev_Bin5(0),
96fhInvMassSumAll_5Mev_Bin5(0),
97fhInvMassMultipleOnly_Bin1(0),
98fhInvMassMultipleOnly_Bin2(0),
99fhInvMassMultipleOnly_Bin3(0),
100fhInvMassMultipleOnly_Bin4(0),
101fhInvMassMultipleOnly_Bin5(0),
102fScatterP4PID(0),
103fPtVsY(0),
104fPtVsYAll(0),
105fEventCounter(0),
106fCutDCA(0),
107fCutDCA3(0),
108fCutDCA2(0),
109fCutDCA5(0),
110fCutVertexDist2(0),
111fCutVertexDist3(0),
112fCutVertexDist4(0),
113fCutCosinePoint(0),
114fCutPt(0),
115fCutY(0),
116fPIDSel(0),
117fPIDSel_Bin1(0),
118fPIDSel_Bin2(0),
119fPIDSel_Bin3(0),
120fPIDSel_Bin4(0),
121fPIDSel_Bin5(0),
122fMultipleHyps(0),
123fMultipleHypsType(0),
124fPtSel(0),
125fCuts(0),
126fVHF(0)
127{
128 // Default constructor
129}
130
131//________________________________________________________________________
132AliAnalysisTaskSESelectHF4Prong::AliAnalysisTaskSESelectHF4Prong(const char *name,AliRDHFCutsD0toKpipipi* cuts):
133AliAnalysisTaskSE(name),
134fVerticesHFTClArr(0),
135fCharm4ProngTClArr(0),
136fOutput(0),
137fOutput2(0),
138fOutput3(0),
139fOutput4(0),
140fOutput5(0),
141fOutputC(0),
142fhInvMassD0Sum_10Mev_Bin1(0),
143fhInvMassD0barSum_10Mev_Bin1(0),
144fhInvMassSumAll_10Mev_Bin1(0),
145fhInvMassD0Sum_5Mev_Bin1(0),
146fhInvMassD0barSum_5Mev_Bin1(0),
147fhInvMassSumAll_5Mev_Bin1(0),
148fhInvMassD0Sum_10Mev_Bin2(0),
149fhInvMassD0barSum_10Mev_Bin2(0),
150fhInvMassSumAll_10Mev_Bin2(0),
151fhInvMassD0Sum_5Mev_Bin2(0),
152fhInvMassD0barSum_5Mev_Bin2(0),
153fhInvMassSumAll_5Mev_Bin2(0),
154fhInvMassD0Sum_10Mev_Bin3(0),
155fhInvMassD0barSum_10Mev_Bin3(0),
156fhInvMassSumAll_10Mev_Bin3(0),
157fhInvMassD0Sum_5Mev_Bin3(0),
158fhInvMassD0barSum_5Mev_Bin3(0),
159fhInvMassSumAll_5Mev_Bin3(0),
160fhInvMassD0Sum_10Mev_Bin4(0),
161fhInvMassD0barSum_10Mev_Bin4(0),
162fhInvMassSumAll_10Mev_Bin4(0),
163fhInvMassD0Sum_5Mev_Bin4(0),
164fhInvMassD0barSum_5Mev_Bin4(0),
165fhInvMassSumAll_5Mev_Bin4(0),
166fhInvMassD0Sum_10Mev_Bin5(0),
167fhInvMassD0barSum_10Mev_Bin5(0),
168fhInvMassSumAll_10Mev_Bin5(0),
169fhInvMassD0Sum_5Mev_Bin5(0),
170fhInvMassD0barSum_5Mev_Bin5(0),
171fhInvMassSumAll_5Mev_Bin5(0),
172fhInvMassMultipleOnly_Bin1(0),
173fhInvMassMultipleOnly_Bin2(0),
174fhInvMassMultipleOnly_Bin3(0),
175fhInvMassMultipleOnly_Bin4(0),
176fhInvMassMultipleOnly_Bin5(0),
177fScatterP4PID(0),
178fPtVsY(0),
179fPtVsYAll(0),
180fEventCounter(0),
181fCutDCA(0),
182fCutDCA3(0),
183fCutDCA2(0),
184fCutDCA5(0),
185fCutVertexDist2(0),
186fCutVertexDist3(0),
187fCutVertexDist4(0),
188fCutCosinePoint(0),
189fCutPt(0),
190fCutY(0),
191fPIDSel(0),
192fPIDSel_Bin1(0),
193fPIDSel_Bin2(0),
194fPIDSel_Bin3(0),
195fPIDSel_Bin4(0),
196fPIDSel_Bin5(0),
197fMultipleHyps(0),
198fMultipleHypsType(0),
199fPtSel(0),
200fCuts(0),
201fVHF(0)
202{
203 // Standard constructor
204
205 fCuts=cuts;
206
207 // Input slot #0 works with an Ntuple
208// DefineInput(0, TTree::Class());
209
210 // Output slot #0 writes into a TTree container
211 // Output slots #1-6 writes into a TList container
212 DefineOutput(0, TTree::Class()); //default
213 DefineOutput(1, TList::Class()); //histos inv. mass bin1
214 DefineOutput(2, TList::Class()); //histos inv. mass bin2
215 DefineOutput(3, TList::Class()); //histos inv. mass bin3
216 DefineOutput(4, TList::Class()); //histos inv. mass bin4
217 DefineOutput(5, TList::Class()); //histos inv. mass bin5
218 DefineOutput(6, TList::Class()); //histos of cuts
219 DefineOutput(7, AliRDHFCutsD0toKpipipi::Class()); //cuts
220}
221
222//________________________________________________________________________
223AliAnalysisTaskSESelectHF4Prong::~AliAnalysisTaskSESelectHF4Prong()
224{
225 // Destructor
226
227 if (fOutput) {
228 delete fOutput;
229 fOutput = 0;
230 }
231 if (fOutput2) {
232 delete fOutput2;
233 fOutput2 = 0;
234 }
235 if (fOutput3) {
236 delete fOutput3;
237 fOutput3 = 0;
238 }
239 if (fOutput4) {
240 delete fOutput4;
241 fOutput4 = 0;
242 }
243 if (fOutput5) {
244 delete fOutput5;
245 fOutput5 = 0;
246 }
247 if (fOutputC) {
248 delete fOutputC;
249 fOutputC = 0;
250 }
251 if (fCuts) {
252 delete fCuts;
253 fCuts = 0;
254 }
255 if (fVHF) {
256 delete fVHF;
257 fVHF = 0;
258 }
259
260}
261
262//________________________________________________________________________
263void AliAnalysisTaskSESelectHF4Prong::Init()
264{
265 // Initialization
266
267 if(fDebug > 1) printf("AnalysisTaskSESelectHF4Prong::Init() \n");
268
269 return;
270}
271
272//________________________________________________________________________
273void AliAnalysisTaskSESelectHF4Prong::UserCreateOutputObjects()
274{
275 // Create the output container
276 //
277 if(fDebug > 1) printf("AnalysisTaskSESelectHF4Prong::UserCreateOutputObjects() \n");
278
279 fVerticesHFTClArr = new TClonesArray("AliAODVertex", 0);
280 fVerticesHFTClArr->SetName("VerticesHF");
281 AddAODBranch("TClonesArray", &fVerticesHFTClArr);
282
283 fCharm4ProngTClArr = new TClonesArray("AliAODRecoDecayHF4Prong", 0);
284 fCharm4ProngTClArr->SetName("Charm4Prong");
285 AddAODBranch("TClonesArray", &fCharm4ProngTClArr);
286
287 fOutput = new TList();
288 fOutput->SetOwner();
289
290 fOutput2 = new TList();
291 fOutput2->SetOwner();
292
293 fOutput3 = new TList();
294 fOutput3->SetOwner();
295
296 fOutput4 = new TList();
297 fOutput4->SetOwner();
298
299 fOutput5 = new TList();
300 fOutput5->SetOwner();
301
302 fOutputC = new TList();
303 fOutputC->SetOwner();
304
305 fhInvMassD0Sum_10Mev_Bin1 = new TH1F("fhInvMassD0Sum_10Mev_Bin1", "D0 invariant mass Bin1 (good hyp); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
306 fhInvMassD0Sum_10Mev_Bin1->Sumw2(); //Create structure to store sum of squares of weights
307 fhInvMassD0Sum_10Mev_Bin1->SetMinimum(0);
308 fOutput->Add(fhInvMassD0Sum_10Mev_Bin1);
309
310 fhInvMassD0barSum_10Mev_Bin1 = new TH1F("fhInvMassD0barSum_10Mev_Bin1", "D0bar invariant mass Bin1 (good hyp); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
311 fhInvMassD0barSum_10Mev_Bin1->Sumw2(); //Create structure to store sum of squares of weights
312 fhInvMassD0barSum_10Mev_Bin1->SetMinimum(0);
313 fOutput->Add(fhInvMassD0barSum_10Mev_Bin1);
314
315 fhInvMassSumAll_10Mev_Bin1 = new TH1F("fhInvMassSumAll_10Mev_Bin1", "D0/D0bar invariant mass Bin1 (good hyps); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
316 fhInvMassSumAll_10Mev_Bin1->Sumw2(); //Create structure to store sum of squares of weights
317 fhInvMassSumAll_10Mev_Bin1->SetMinimum(0);
318 fOutput->Add(fhInvMassSumAll_10Mev_Bin1);
319
320 fhInvMassD0Sum_5Mev_Bin1 = new TH1F("fhInvMassD0Sum_5Mev_Bin1", "D0 invariant mass Bin1 (good hyp); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
321 fhInvMassD0Sum_5Mev_Bin1->Sumw2(); //Create structure to store sum of squares of weights
322 fhInvMassD0Sum_5Mev_Bin1->SetMinimum(0);
323 fOutput->Add(fhInvMassD0Sum_5Mev_Bin1);
324
325 fhInvMassD0barSum_5Mev_Bin1 = new TH1F("fhInvMassD0barSum_5Mev_Bin1", "D0bar invariant mass Bin1 (good hyp); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
326 fhInvMassD0barSum_5Mev_Bin1->Sumw2(); //Create structure to store sum of squares of weights
327 fhInvMassD0barSum_5Mev_Bin1->SetMinimum(0);
328 fOutput->Add(fhInvMassD0barSum_5Mev_Bin1);
329
330 fhInvMassSumAll_5Mev_Bin1 = new TH1F("fhInvMassSumAll_5Mev_Bin1", "D0/D0bar invariant mass Bin1 (good hyps); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
331 fhInvMassSumAll_5Mev_Bin1->Sumw2(); //Create structure to store sum of squares of weights
332 fhInvMassSumAll_5Mev_Bin1->SetMinimum(0);
333 fOutput->Add(fhInvMassSumAll_5Mev_Bin1);
334
335 fhInvMassD0Sum_10Mev_Bin2 = new TH1F("fhInvMassD0Sum_10Mev_Bin2", "D0 invariant mass Bin2 (good hyp); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
336 fhInvMassD0Sum_10Mev_Bin2->Sumw2(); //Create structure to store sum of squares of weights
337 fhInvMassD0Sum_10Mev_Bin2->SetMinimum(0);
338 fOutput2->Add(fhInvMassD0Sum_10Mev_Bin2);
339
340 fhInvMassD0barSum_10Mev_Bin2 = new TH1F("fhInvMassD0barSum_10Mev_Bin2", "D0bar invariant mass Bin2 (good hyp); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
341 fhInvMassD0barSum_10Mev_Bin2->Sumw2(); //Create structure to store sum of squares of weights
342 fhInvMassD0barSum_10Mev_Bin2->SetMinimum(0);
343 fOutput2->Add(fhInvMassD0barSum_10Mev_Bin2);
344
345 fhInvMassSumAll_10Mev_Bin2 = new TH1F("fhInvMassSumAll_10Mev_Bin2", "D0/D0bar invariant mass Bin2 (good hyps); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
346 fhInvMassSumAll_10Mev_Bin2->Sumw2(); //Create structure to store sum of squares of weights
347 fhInvMassSumAll_10Mev_Bin2->SetMinimum(0);
348 fOutput2->Add(fhInvMassSumAll_10Mev_Bin2);
349
350 fhInvMassD0Sum_5Mev_Bin2 = new TH1F("fhInvMassD0Sum_5Mev_Bin2", "D0 invariant mass Bin2 (good hyp); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
351 fhInvMassD0Sum_5Mev_Bin2->Sumw2(); //Create structure to store sum of squares of weights
352 fhInvMassD0Sum_5Mev_Bin2->SetMinimum(0);
353 fOutput2->Add(fhInvMassD0Sum_5Mev_Bin2);
354
355 fhInvMassD0barSum_5Mev_Bin2 = new TH1F("fhInvMassD0barSum_5Mev_Bin2", "D0bar invariant mass Bin2 (good hyp); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
356 fhInvMassD0barSum_5Mev_Bin2->Sumw2(); //Create structure to store sum of squares of weights
357 fhInvMassD0barSum_5Mev_Bin2->SetMinimum(0);
358 fOutput2->Add(fhInvMassD0barSum_5Mev_Bin2);
359
360 fhInvMassSumAll_5Mev_Bin2 = new TH1F("fhInvMassSumAll_5Mev_Bin2", "D0/D0bar invariant mass Bin2 (good hyps); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
361 fhInvMassSumAll_5Mev_Bin2->Sumw2(); //Create structure to store sum of squares of weights
362 fhInvMassSumAll_5Mev_Bin2->SetMinimum(0);
363 fOutput2->Add(fhInvMassSumAll_5Mev_Bin2);
364
365 fhInvMassD0Sum_10Mev_Bin3 = new TH1F("fhInvMassD0Sum_10Mev_Bin3", "D0 invariant mass Bin3 (good hyp); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
366 fhInvMassD0Sum_10Mev_Bin3->Sumw2(); //Create structure to store sum of squares of weights
367 fhInvMassD0Sum_10Mev_Bin3->SetMinimum(0);
368 fOutput3->Add(fhInvMassD0Sum_10Mev_Bin3);
369
370 fhInvMassD0barSum_10Mev_Bin3 = new TH1F("fhInvMassD0barSum_10Mev_Bin3", "D0bar invariant mass Bin3 (good hyp); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
371 fhInvMassD0barSum_10Mev_Bin3->Sumw2(); //Create structure to store sum of squares of weights
372 fhInvMassD0barSum_10Mev_Bin3->SetMinimum(0);
373 fOutput3->Add(fhInvMassD0barSum_10Mev_Bin3);
374
375 fhInvMassSumAll_10Mev_Bin3 = new TH1F("fhInvMassSumAll_10Mev_Bin3", "D0/D0bar invariant mass Bin3 (good hyps); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
376 fhInvMassSumAll_10Mev_Bin3->Sumw2(); //Create structure to store sum of squares of weights
377 fhInvMassSumAll_10Mev_Bin3->SetMinimum(0);
378 fOutput3->Add(fhInvMassSumAll_10Mev_Bin3);
379
380 fhInvMassD0Sum_5Mev_Bin3 = new TH1F("fhInvMassD0Sum_5Mev_Bin3", "D0 invariant mass Bin3 (good hyp); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
381 fhInvMassD0Sum_5Mev_Bin3->Sumw2(); //Create structure to store sum of squares of weights
382 fhInvMassD0Sum_5Mev_Bin3->SetMinimum(0);
383 fOutput3->Add(fhInvMassD0Sum_5Mev_Bin3);
384
385 fhInvMassD0barSum_5Mev_Bin3 = new TH1F("fhInvMassD0barSum_5Mev_Bin3", "D0bar invariant mass Bin3 (good hyp); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
386 fhInvMassD0barSum_5Mev_Bin3->Sumw2(); //Create structure to store sum of squares of weights
387 fhInvMassD0barSum_5Mev_Bin3->SetMinimum(0);
388 fOutput3->Add(fhInvMassD0barSum_5Mev_Bin3);
389
390 fhInvMassSumAll_5Mev_Bin3 = new TH1F("fhInvMassSumAll_5Mev_Bin3", "D0/D0bar invariant mass Bin3 (good hyps); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
391 fhInvMassSumAll_5Mev_Bin3->Sumw2(); //Create structure to store sum of squares of weights
392 fhInvMassSumAll_5Mev_Bin3->SetMinimum(0);
393 fOutput3->Add(fhInvMassSumAll_5Mev_Bin3);
394
395 fhInvMassD0Sum_10Mev_Bin4 = new TH1F("fhInvMassD0Sum_10Mev_Bin4", "D0 invariant mass Bin4 (good hyp); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
396 fhInvMassD0Sum_10Mev_Bin4->Sumw2(); //Create structure to store sum of squares of weights
397 fhInvMassD0Sum_10Mev_Bin4->SetMinimum(0);
398 fOutput4->Add(fhInvMassD0Sum_10Mev_Bin4);
399
400 fhInvMassD0barSum_10Mev_Bin4 = new TH1F("fhInvMassD0barSum_10Mev_Bin4", "D0bar invariant mass Bin4 (good hyp); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
401 fhInvMassD0barSum_10Mev_Bin4->Sumw2(); //Create structure to store sum of squares of weights
402 fhInvMassD0barSum_10Mev_Bin4->SetMinimum(0);
403 fOutput4->Add(fhInvMassD0barSum_10Mev_Bin4);
404
405 fhInvMassSumAll_10Mev_Bin4 = new TH1F("fhInvMassSumAll_10Mev_Bin4", "D0/D0bar invariant mass Bin4 (good hyps); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
406 fhInvMassSumAll_10Mev_Bin4->Sumw2(); //Create structure to store sum of squares of weights
407 fhInvMassSumAll_10Mev_Bin4->SetMinimum(0);
408 fOutput4->Add(fhInvMassSumAll_10Mev_Bin4);
409
410 fhInvMassD0Sum_5Mev_Bin4 = new TH1F("fhInvMassD0Sum_5Mev_Bin4", "D0 invariant mass Bin4 (good hyp); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
411 fhInvMassD0Sum_5Mev_Bin4->Sumw2(); //Create structure to store sum of squares of weights
412 fhInvMassD0Sum_5Mev_Bin4->SetMinimum(0);
413 fOutput4->Add(fhInvMassD0Sum_5Mev_Bin4);
414
415 fhInvMassD0barSum_5Mev_Bin4 = new TH1F("fhInvMassD0barSum_5Mev_Bin4", "D0bar invariant mass Bin4 (good hyp); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
416 fhInvMassD0barSum_5Mev_Bin4->Sumw2(); //Create structure to store sum of squares of weights
417 fhInvMassD0barSum_5Mev_Bin4->SetMinimum(0);
418 fOutput4->Add(fhInvMassD0barSum_5Mev_Bin4);
419
420 fhInvMassSumAll_5Mev_Bin4 = new TH1F("fhInvMassSumAll_5Mev_Bin4", "D0/D0bar invariant mass Bin4 (good hyps); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
421 fhInvMassSumAll_5Mev_Bin4->Sumw2(); //Create structure to store sum of squares of weights
422 fhInvMassSumAll_5Mev_Bin4->SetMinimum(0);
423 fOutput4->Add(fhInvMassSumAll_5Mev_Bin4);
424
425 fhInvMassD0Sum_10Mev_Bin5 = new TH1F("fhInvMassD0Sum_10Mev_Bin5", "D0 invariant mass Bin5 (good hyp); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
426 fhInvMassD0Sum_10Mev_Bin5->Sumw2(); //Create structure to store sum of squares of weights
427 fhInvMassD0Sum_10Mev_Bin5->SetMinimum(0);
428 fOutput5->Add(fhInvMassD0Sum_10Mev_Bin5);
429
430 fhInvMassD0barSum_10Mev_Bin5 = new TH1F("fhInvMassD0barSum_10Mev_Bin5", "D0bar invariant mass Bin5 (good hyp); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
431 fhInvMassD0barSum_10Mev_Bin5->Sumw2(); //Create structure to store sum of squares of weights
432 fhInvMassD0barSum_10Mev_Bin5->SetMinimum(0);
433 fOutput5->Add(fhInvMassD0barSum_10Mev_Bin5);
434
435 fhInvMassSumAll_10Mev_Bin5 = new TH1F("fhInvMassSumAll_10Mev_Bin5", "D0/D0bar invariant mass Bin5 (good hyps); Inv. mass [GeV]; Entries/10 MeV",60,1.6,2.2);
436 fhInvMassSumAll_10Mev_Bin5->Sumw2(); //Create structure to store sum of squares of weights
437 fhInvMassSumAll_10Mev_Bin5->SetMinimum(0);
438 fOutput5->Add(fhInvMassSumAll_10Mev_Bin5);
439
440 fhInvMassD0Sum_5Mev_Bin5 = new TH1F("fhInvMassD0Sum_5Mev_Bin5", "D0 invariant mass Bin5 (good hyp); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
441 fhInvMassD0Sum_5Mev_Bin5->Sumw2(); //Create structure to store sum of squares of weights
442 fhInvMassD0Sum_5Mev_Bin5->SetMinimum(0);
443 fOutput5->Add(fhInvMassD0Sum_5Mev_Bin5);
444
445 fhInvMassD0barSum_5Mev_Bin5 = new TH1F("fhInvMassD0barSum_5Mev_Bin5", "D0bar invariant mass Bin5 (good hyp); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
446 fhInvMassD0barSum_5Mev_Bin5->Sumw2(); //Create structure to store sum of squares of weights
447 fhInvMassD0barSum_5Mev_Bin5->SetMinimum(0);
448 fOutput5->Add(fhInvMassD0barSum_5Mev_Bin5);
449
450 fhInvMassSumAll_5Mev_Bin5 = new TH1F("fhInvMassSumAll_5Mev_Bin5", "D0/D0bar invariant mass Bin5 (good hyps); Inv. mass [GeV]; Entries/5 MeV",120,1.6,2.2);
451 fhInvMassSumAll_5Mev_Bin5->Sumw2(); //Create structure to store sum of squares of weights
452 fhInvMassSumAll_5Mev_Bin5->SetMinimum(0);
453 fOutput5->Add(fhInvMassSumAll_5Mev_Bin5);
454
455 fhInvMassMultipleOnly_Bin1 = new TH1F("fhInvMassMultipleOnly_Bin1", "D0/D0bar invariant mass Bin1 (good hyps) - Multple hyps accepted only; Inv. mass [GeV]; Entries/10 MeV",120,1.6,2.2);
456 fhInvMassMultipleOnly_Bin1->Sumw2(); //Create structure to store sum of squares of weights
457 fhInvMassMultipleOnly_Bin1->SetMinimum(0);
458 fOutput->Add(fhInvMassMultipleOnly_Bin1);
459
460 fhInvMassMultipleOnly_Bin2 = new TH1F("fhInvMassMultipleOnly_Bin2", "D0/D0bar invariant mass Bin2 (good hyps) - Multple hyps accepted only; Inv. mass [GeV]; Entries/10 MeV",120,1.6,2.2);
461 fhInvMassMultipleOnly_Bin2->Sumw2(); //Create structure to store sum of squares of weights
462 fhInvMassMultipleOnly_Bin2->SetMinimum(0);
463 fOutput2->Add(fhInvMassMultipleOnly_Bin2);
464
465 fhInvMassMultipleOnly_Bin3 = new TH1F("fhInvMassMultipleOnly_Bin3", "D0/D0bar invariant mass Bin3 (good hyps) - Multple hyps accepted only; Inv. mass [GeV]; Entries/10 MeV",120,1.6,2.2);
466 fhInvMassMultipleOnly_Bin3->Sumw2(); //Create structure to store sum of squares of weights
467 fhInvMassMultipleOnly_Bin3->SetMinimum(0);
468 fOutput3->Add(fhInvMassMultipleOnly_Bin3);
469
470 fhInvMassMultipleOnly_Bin4 = new TH1F("fhInvMassMultipleOnly_Bin4", "D0/D0bar invariant mass Bin4 (good hyps) - Multple hyps accepted only; Inv. mass [GeV]; Entries/10 MeV",120,1.6,2.2);
471 fhInvMassMultipleOnly_Bin4->Sumw2(); //Create structure to store sum of squares of weights
472 fhInvMassMultipleOnly_Bin4->SetMinimum(0);
473 fOutput4->Add(fhInvMassMultipleOnly_Bin4);
474
475 fhInvMassMultipleOnly_Bin5 = new TH1F("fhInvMassMultipleOnly_Bin5", "D0/D0bar invariant mass Bin5 (good hyps) - Multple hyps accepted only; Inv. mass [GeV]; Entries/10 MeV",120,1.6,2.2);
476 fhInvMassMultipleOnly_Bin5->Sumw2(); //Create structure to store sum of squares of weights
477 fhInvMassMultipleOnly_Bin5->SetMinimum(0);
478 fOutput5->Add(fhInvMassMultipleOnly_Bin5);
479
480 fScatterP4PID = new TH2F("fScatterP4PID", "Transverse momentum of K vs l-s Pi (D0 + D0bar); Pt of K [GeV/c]; Pt of Pi [GeV/c]",500,0.,5.,500,0.,5.);
481 fScatterP4PID->SetMinimum(0);
482 fOutput->Add(fScatterP4PID);
483
484 fPtVsY = new TH2F("fPtVsY", "Pt vs Y PPR Sel. Candidates; Pt [GeV/c]; Y",250,0.,25.,300,-3.,3.);
485 fPtVsY->SetMinimum(0);
486 fOutputC->Add(fPtVsY);
487
488 fPtVsYAll = new TH2F("fPtVsYAll", "Pt vs Y All Candidates; Pt [GeV/c]; Y",250,0.,25.,300,-3.,3.);
489 fPtVsYAll->SetMinimum(0);
490 fOutputC->Add(fPtVsYAll);
491
492 fEventCounter = new TH1F("fEventCounter", "N° of total events; NA; Events",1,0.,1.);
493 fEventCounter->SetMinimum(0);
494 fOutputC->Add(fEventCounter);
495
496 fCutDCA = new TH1F("fCutDCA", "DCA of candidate (couple); DCA [cm]; Entries/micron",500,0.,0.05);
497 fCutDCA->SetMinimum(0);
498 fOutputC->Add(fCutDCA);
499
500 fCutDCA3 = new TH1F("fCutDCA3", "DCA of candidate (trips); DCA [cm]; Entries/micron",500,0.,0.05);
501 fCutDCA3->SetMinimum(0);
502 fOutputC->Add(fCutDCA3);
503
504 fCutDCA2 = new TH1F("fCutDCA2", "DCA of candidate (quads1); DCA [cm]; Entries/micron",500,0.,0.05);
505 fCutDCA2->SetMinimum(0);
506 fOutputC->Add(fCutDCA2);
507
508 fCutDCA5 = new TH1F("fCutDCA5", "DCA of candidate (quads2); DCA [cm]; Entries/micron",500,0.,0.05);
509 fCutDCA5->SetMinimum(0);
510 fOutputC->Add(fCutDCA5);
511
512 fCutVertexDist2 = new TH1F("fCutVertexDist2", "Distance Vtx doubl.-Primary Vtx; Distance [cm]; Entries/15 micron",500,0.,0.75);
513 fCutVertexDist2->SetMinimum(0);
514 fOutputC->Add(fCutVertexDist2);
515
516 fCutVertexDist3 = new TH1F("fCutVertexDist3", "Distance Vtx trips-Primary Vtx; Distance [cm]; Entries/10 micron",500,0.,0.5);
517 fCutVertexDist3->SetMinimum(0);
518 fOutputC->Add(fCutVertexDist3);
519
520 fCutVertexDist4 = new TH1F("fCutVertexDist4", "Distance Vtx quads-Primary Vtx; Distance [cm]; Entries/5 micron",500,0.,0.25);
521 fCutVertexDist4->SetMinimum(0);
522 fOutputC->Add(fCutVertexDist4);
523
524 fCutCosinePoint = new TH1F("fCutCosinePoint", "Cosine of angle of pointing; Cos(Thetapt.); Entries/10^(-3)",250,0.75,1.);
525 fCutCosinePoint->SetMinimum(0);
526 fOutputC->Add(fCutCosinePoint);
527
528 fCutPt = new TH1F("fCutPt", "Pt of candidate D0; Pt [GeV/c]; Entries/5 MeV",3000,0.,15.);
529 fCutPt->SetMinimum(0);
530 fOutputC->Add(fCutPt);
531
532 fCutY = new TH1F("fCutY", "Y of candidate D0; Pt [GeV/c]; Entries/5 MeV",900,-9.,9.);
533 fCutY->SetMinimum(0);
534 fOutputC->Add(fCutY);
535
536 fPIDSel = new TH1F("fPIDSel", "Ratio of D0 selected by PID for Correction",3,0.,3.);
537 fPIDSel->SetMinimum(0);
538 fPIDSel->GetXaxis()->SetBinLabel(1,"D0allhyp All");
539 fPIDSel->GetXaxis()->SetBinLabel(2,"D0allhyp PID");
540 fPIDSel->GetXaxis()->SetBinLabel(3,"D0allhyp PID (hypok)");
541
542 fPIDSel_Bin1 = new TH1F("fPIDSel_Bin1", "Ratio of D0 selected by PID for Correction",3,0.,3.);
543 fPIDSel_Bin1->SetMinimum(0);
544 fPIDSel_Bin1->GetXaxis()->SetBinLabel(1,"D0allhyp All");
545 fPIDSel_Bin1->GetXaxis()->SetBinLabel(2,"D0allhyp PID");
546 fPIDSel_Bin1->GetXaxis()->SetBinLabel(3,"D0allhyp PID (hypok)");
547
548 fPIDSel_Bin2 = new TH1F("fPIDSel_Bin1", "Ratio of D0 selected by PID for Correction",3,0.,3.);
549 fPIDSel_Bin2->SetMinimum(0);
550 fPIDSel_Bin2->GetXaxis()->SetBinLabel(1,"D0allhyp All");
551 fPIDSel_Bin2->GetXaxis()->SetBinLabel(2,"D0allhyp PID");
552 fPIDSel_Bin2->GetXaxis()->SetBinLabel(3,"D0allhyp PID (hypok)");
553
554 fPIDSel_Bin3 = new TH1F("fPIDSel_Bin1", "Ratio of D0 selected by PID for Correction",3,0.,3.);
555 fPIDSel_Bin3->SetMinimum(0);
556 fPIDSel_Bin3->GetXaxis()->SetBinLabel(1,"D0allhyp All");
557 fPIDSel_Bin3->GetXaxis()->SetBinLabel(2,"D0allhyp PID");
558 fPIDSel_Bin3->GetXaxis()->SetBinLabel(3,"D0allhyp PID (hypok)");
559
560 fPIDSel_Bin4 = new TH1F("fPIDSel_Bin1", "Ratio of D0 selected by PID for Correction",3,0.,3.);
561 fPIDSel_Bin4->SetMinimum(0);
562 fPIDSel_Bin4->GetXaxis()->SetBinLabel(1,"D0allhyp All");
563 fPIDSel_Bin4->GetXaxis()->SetBinLabel(2,"D0allhyp PID");
564 fPIDSel_Bin4->GetXaxis()->SetBinLabel(3,"D0allhyp PID (hypok)");
565
566 fPIDSel_Bin5 = new TH1F("fPIDSel_Bin1", "Ratio of D0 selected by PID for Correction",3,0.,3.);
567 fPIDSel_Bin5->SetMinimum(0);
568 fPIDSel_Bin5->GetXaxis()->SetBinLabel(1,"D0allhyp All");
569 fPIDSel_Bin5->GetXaxis()->SetBinLabel(2,"D0allhyp PID");
570 fPIDSel_Bin5->GetXaxis()->SetBinLabel(3,"D0allhyp PID (hypok)");
571
572 fMultipleHyps = new TH1F("fMultipleHyps", "N. of hyp. accepted for each candidate (accounted N. times)",8,0.,8.);
573 fMultipleHyps->SetMinimum(0);
574 fMultipleHyps->GetXaxis()->SetBinLabel(1,"1 (PPR)");
575 fMultipleHyps->GetXaxis()->SetBinLabel(2,"2 (PPR)");
576 fMultipleHyps->GetXaxis()->SetBinLabel(3,"3 (PPR)");
577 fMultipleHyps->GetXaxis()->SetBinLabel(4,"4 (PPR)");
578 fMultipleHyps->GetXaxis()->SetBinLabel(5,"1 (PPR+PID)");
579 fMultipleHyps->GetXaxis()->SetBinLabel(6,"2 (PPR+PID)");
580 fMultipleHyps->GetXaxis()->SetBinLabel(7,"3 (PPR+PID)");
581 fMultipleHyps->GetXaxis()->SetBinLabel(8,"4 (PPR+PID)");
582
583 fMultipleHypsType = new TH1F("fMultipleHypsType", "Type of hyp. accepted for each candidate",8,0.,8.);
584 fMultipleHypsType->SetMinimum(0);
585 fMultipleHypsType->GetXaxis()->SetBinLabel(1,"D0");
586 fMultipleHypsType->GetXaxis()->SetBinLabel(2,"D0bar");
587 fMultipleHypsType->GetXaxis()->SetBinLabel(3,"2D0");
588 fMultipleHypsType->GetXaxis()->SetBinLabel(4,"2D0bar");
589 fMultipleHypsType->GetXaxis()->SetBinLabel(5,"D0+D0bar");
590 fMultipleHypsType->GetXaxis()->SetBinLabel(6,"2D0+D0bar");
591 fMultipleHypsType->GetXaxis()->SetBinLabel(7,"D0+2D0bar");
592 fMultipleHypsType->GetXaxis()->SetBinLabel(8,"2D0+2D0bar");
593
594 fOutputC->Add(fMultipleHyps);
595 fOutputC->Add(fMultipleHypsType);
596
597 fOutputC->Add(fPIDSel);
598 fOutput->Add(fPIDSel_Bin1);
599 fOutput2->Add(fPIDSel_Bin2);
600 fOutput3->Add(fPIDSel_Bin3);
601 fOutput4->Add(fPIDSel_Bin4);
602 fOutput5->Add(fPIDSel_Bin5);
603
604 fPtSel = new TH1F("fPtSel", "Pt of candidates accepted; Pt [GeV/c]; Entries/10 MeV",2000,0.,20.);
605 fPtSel->SetMinimum(0);
606 fOutputC->Add(fPtSel);
607
608 return;
609}
610
611//________________________________________________________________________
612void AliAnalysisTaskSESelectHF4Prong::UserExec(Option_t */*option*/)
613{
614 // Execute analysis for current event:
615 // heavy flavor candidates selection and histograms
616
617 AliAODEvent *aodIn = dynamic_cast<AliAODEvent*> (InputEvent());
618
619 TClonesArray *inputArrayCharm4Prong = 0;
620
621 if(!aodIn && AODEvent() && IsStandardAOD()) {
622 // In case there is an AOD handler writing a standard AOD, use the AOD
623 // event in memory rather than the input (ESD) event.
624 aodIn = dynamic_cast<AliAODEvent*> (AODEvent());
625 // in this case the braches in the deltaAOD (AliAOD.VertexingHF.root)
626 // have to taken from the AOD event hold by the AliAODExtension
627 AliAODHandler* aodHandler = (AliAODHandler*)
628 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
629 if(aodHandler->GetExtensions()) {
630 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject("AliAOD.VertexingHF.root");
631 AliAODEvent *aodFromExt = ext->GetAOD();
632 // load D0 candidates
633 inputArrayCharm4Prong=(TClonesArray*)aodFromExt->GetList()->FindObject("Charm4Prong");
634 }
635 } else {
636 // load D0 candidates
637 inputArrayCharm4Prong=(TClonesArray*)aodIn->GetList()->FindObject("Charm4Prong");
638 }
639
640 if(!inputArrayCharm4Prong) {
641 printf("AliAnalysisTaskSESelectHF4Prong::UserExec: D0to3Kpi branch not found!\n");
642 return;
643 }
644
645 //print event info
646// aodIn->GetHeader()->Print();
647
648 //Event counter ++
649 fEventCounter->Fill(0);
650
651 // fix for temporary bug in ESDfilter
652 // the AODs with null vertex pointer didn't pass the PhysSel
653 if(!aodIn->GetPrimaryVertex()) return;
654
655 // primary vertex
656 AliAODVertex *vtx1 = (AliAODVertex*)aodIn->GetPrimaryVertex();
657// vtx1->Print();
658
659 // make trkIDtoEntry register (temporary)
660 Int_t trkIDtoEntry[100000];
661 for(Int_t it=0;it<aodIn->GetNumberOfTracks();it++) {
662 AliAODTrack *track = aodIn->GetTrack(it);
663 trkIDtoEntry[track->GetID()]=it;
664 }
665
666 Int_t iOutVerticesHF=0,iOutCharm4Prong=0;
667 fVerticesHFTClArr->Delete();
668 iOutVerticesHF = fVerticesHFTClArr->GetEntriesFast();
669 TClonesArray &verticesHFRef = *fVerticesHFTClArr;
670 fCharm4ProngTClArr->Delete();
671 iOutCharm4Prong = fCharm4ProngTClArr->GetEntriesFast();
672 TClonesArray &aodCharm4ProngRef = *fCharm4ProngTClArr;
673
674 // loop over D0->K3pi candidates
675 Int_t nInCharm4Prong = inputArrayCharm4Prong->GetEntriesFast();
676 printf("Number of D0->K3pi: %d\n",nInCharm4Prong);
677
678 for (Int_t iCharm4Prong = 0; iCharm4Prong < nInCharm4Prong; iCharm4Prong++) {
679 AliAODRecoDecayHF4Prong *dIn = (AliAODRecoDecayHF4Prong*)inputArrayCharm4Prong->UncheckedAt(iCharm4Prong);
680 Bool_t unsetvtx=kFALSE;
681
682 if(!dIn->GetOwnPrimaryVtx()) {
683 dIn->SetOwnPrimaryVtx(vtx1); // needed to compute all variables
684 unsetvtx=kTRUE;
685 }
686
687 //fill histos of cuts
688 Double_t dca = dIn->GetDCA();
689 Double_t dist2 = dIn->GetDist12toPrim();
690 Double_t dist3 = dIn->GetDist3toPrim();
691 Double_t dist4 = dIn->GetDist4toPrim();
692 Double_t cosine = dIn->CosPointingAngle();
693 Double_t ptPart = dIn->Pt();
694 Double_t yPart = dIn->YD0();
695 Double_t dcatrip = dIn->GetDCA(3);
696 Double_t dcaquad1 = dIn->GetDCA(2);
697 Double_t dcaquad2 = dIn->GetDCA(5);
698
699 Double_t ptBinH[6] = {2.5,4.5,6.0,8.0,12.0,25.0}; //bin i has pt between values i and i+1
700
701 fCutDCA->Fill(dca);
702 fCutDCA3->Fill(dcatrip);
703 fCutDCA2->Fill(dcaquad1);
704 fCutDCA5->Fill(dcaquad2);
705 fCutVertexDist2->Fill(dist2);
706 fCutVertexDist3->Fill(dist3);
707 fCutVertexDist4->Fill(dist4);
708 fCutCosinePoint->Fill(cosine);
709 fCutPt->Fill(ptPart);
710 fCutY->Fill(yPart);
711 fPtVsYAll->Fill(ptPart,yPart);
712
713 //flags initialization
714 fSelected = fCuts->IsSelected(dIn,AliRDHFCuts::kCandidate);
715 Int_t selD01 = fCuts->D01Selected(dIn,AliRDHFCuts::kCandidate);
716 Int_t selD02 = fCuts->D02Selected(dIn,AliRDHFCuts::kCandidate);
717 Int_t selD0bar1 = fCuts->D0bar1Selected(dIn,AliRDHFCuts::kCandidate);
718 Int_t selD0bar2 = fCuts->D0bar2Selected(dIn,AliRDHFCuts::kCandidate);
719 Int_t flagAccLim = 1;
720
721 //Limited Acceptance
722 if(ptPart > 5.) {
723 if (TMath::Abs(yPart) > 0.8) flagAccLim = 0;
724 }
725 else {
726 Double_t maxFiducialY = -0.2/15*ptPart*ptPart+1.9/15*ptPart+0.5;
727 Double_t minFiducialY = 0.2/15*ptPart*ptPart-1.9/15*ptPart-0.5;
728 if (yPart < minFiducialY || yPart > maxFiducialY) flagAccLim = 0;;
729 }
730
731 //number of CANDIDATES (regardless of hypotheses) passing PPR
732 if(fSelected==1||fSelected==2||fSelected==3) {
733 fPtVsY->Fill(ptPart,yPart);
734 fPIDSel->Fill(0);
735 if (ptPart >= ptBinH[0] && ptPart < ptBinH[1]) fPIDSel_Bin1->Fill(0);
736 else if (ptPart >= ptBinH[1] && ptPart < ptBinH[2]) fPIDSel_Bin2->Fill(0);
737 else if (ptPart >= ptBinH[2] && ptPart < ptBinH[3]) fPIDSel_Bin3->Fill(0);
738 else if (ptPart >= ptBinH[3] && ptPart < ptBinH[4]) fPIDSel_Bin4->Fill(0);
739 else if (ptPart >= ptBinH[4] && ptPart < ptBinH[5]) fPIDSel_Bin5->Fill(0);
740 }
741
742
743 PostData(6,fOutputC);
744
745 //selection
746 if((fSelected==1||fSelected==2||fSelected==3) && flagAccLim == 1) {
747 // get daughter AOD tracks
748 AliAODTrack *trk0 = (AliAODTrack*)dIn->GetDaughter(0);
749 AliAODTrack *trk1 = (AliAODTrack*)dIn->GetDaughter(1);
750 AliAODTrack *trk2 = (AliAODTrack*)dIn->GetDaughter(2);
751 AliAODTrack *trk3 = (AliAODTrack*)dIn->GetDaughter(3);
752 if(!trk0 || !trk1 || !trk2 || !trk3) {
753 trk0=aodIn->GetTrack(trkIDtoEntry[dIn->GetProngID(0)]);
754 trk1=aodIn->GetTrack(trkIDtoEntry[dIn->GetProngID(1)]);
755 trk2=aodIn->GetTrack(trkIDtoEntry[dIn->GetProngID(2)]);
756 trk3=aodIn->GetTrack(trkIDtoEntry[dIn->GetProngID(3)]);
757 }
758 printf("pt of positive track #1: %f\n",trk0->Pt());
759 printf("pt of negative track #1: %f\n",trk1->Pt());
760 printf("pt of positive track #2: %f\n",trk2->Pt());
761 printf("pt of negative track #2: %f\n",trk3->Pt());
762
763 dIn->InvMassD0(fmassD0);
764 dIn->InvMassD0bar(fmassD0bar);
765
766 //fill histos (combining selection form cuts & PID (with rho information))
767 Int_t hypD01 = 0, hypD02 = 0, hypD0bar1 = 0, hypD0bar2 = 0;
768 Int_t pid1 = 0, pid2 = 0, pidbar1 = 0, pidbar2 = 0;
769 Int_t pidSelection = fCuts->IsSelectedFromPID(dIn, &pid1, &pid2, &pidbar1, &pidbar2);
770
771 //number of CANDIDATES (regardless of hypotheses) passing PPR + PID - PAY ATTENTION: hypoth. for PID and PPR may not be the same!
772 if (pidSelection > 0) {
773 fPIDSel->Fill(1);
774 if (ptPart >= ptBinH[0] && ptPart < ptBinH[1]) fPIDSel_Bin1->Fill(1);
775 else if (ptPart >= ptBinH[1] && ptPart < ptBinH[2]) fPIDSel_Bin2->Fill(1);
776 else if (ptPart >= ptBinH[2] && ptPart < ptBinH[3]) fPIDSel_Bin3->Fill(1);
777 else if (ptPart >= ptBinH[3] && ptPart < ptBinH[4]) fPIDSel_Bin4->Fill(1);
778 else if (ptPart >= ptBinH[4] && ptPart < ptBinH[5]) fPIDSel_Bin5->Fill(1);
779 }
780
781 //number of hypoteses accepted per candidate after PPR
782 if(selD01+selD02+selD0bar1+selD0bar2 == 1) fMultipleHyps->Fill(0);
783 if(selD01+selD02+selD0bar1+selD0bar2 == 2) fMultipleHyps->Fill(1);
784 if(selD01+selD02+selD0bar1+selD0bar2 == 3) fMultipleHyps->Fill(2);
785 if(selD01+selD02+selD0bar1+selD0bar2 == 4) fMultipleHyps->Fill(3);
786
787 //combine PPD + PID cuts
788 if (selD01 == 1 && pid1==1) hypD01 = 1;
789 if (selD02 == 1 && pid2==1) hypD02 = 1;
790 if (selD0bar1 == 1 && pidbar1==1) hypD0bar1 = 1;
791 if (selD0bar2 == 1 && pidbar2==1) hypD0bar2 = 1;
792
793 //number of CANDIDATES (regardless of hypotheses) passing PPR + PID - PAY ATTENTION: hypoth. for PID and PPR must match (at least one)!
794 if (hypD01 == 1 || hypD02 == 1 || hypD0bar1 == 1 || hypD0bar2 == 1) {
795 fPIDSel->Fill(2);
796 if (ptPart >= ptBinH[0] && ptPart < ptBinH[1]) fPIDSel_Bin1->Fill(2);
797 else if (ptPart >= ptBinH[1] && ptPart < ptBinH[2]) fPIDSel_Bin2->Fill(2);
798 else if (ptPart >= ptBinH[2] && ptPart < ptBinH[3]) fPIDSel_Bin3->Fill(2);
799 else if (ptPart >= ptBinH[3] && ptPart < ptBinH[4]) fPIDSel_Bin4->Fill(2);
800 else if (ptPart >= ptBinH[4] && ptPart < ptBinH[5]) fPIDSel_Bin5->Fill(2);
801 }
802
803 //number of hypoteses accepted per candidate after PPR and PID
804 if(hypD01+hypD02+hypD0bar1+hypD0bar2 == 1) fMultipleHyps->Fill(4);
805 if(hypD01+hypD02+hypD0bar1+hypD0bar2 == 2) fMultipleHyps->Fill(5);
806 if(hypD01+hypD02+hypD0bar1+hypD0bar2 == 3) fMultipleHyps->Fill(6);
807 if(hypD01+hypD02+hypD0bar1+hypD0bar2 == 4) fMultipleHyps->Fill(7);
808
809 //type of hypoteses accepted per candidate after PPR and PID
810 if(hypD01+hypD02 == 1 && hypD0bar1+hypD0bar2 == 0) fMultipleHypsType->Fill(0);
811 if(hypD01+hypD02 == 0 && hypD0bar1+hypD0bar2 == 1) fMultipleHypsType->Fill(1);
812 if(hypD01+hypD02 == 2 && hypD0bar1+hypD0bar2 == 0) fMultipleHypsType->Fill(2);
813 if(hypD01+hypD02 == 0 && hypD0bar1+hypD0bar2 == 2) fMultipleHypsType->Fill(3);
814 if(hypD01+hypD02 == 1 && hypD0bar1+hypD0bar2 == 1) fMultipleHypsType->Fill(4);
815 if(hypD01+hypD02 == 2 && hypD0bar1+hypD0bar2 == 1) fMultipleHypsType->Fill(5);
816 if(hypD01+hypD02 == 1 && hypD0bar1+hypD0bar2 == 2) fMultipleHypsType->Fill(6);
817 if(hypD01+hypD02 == 2 && hypD0bar1+hypD0bar2 == 2) fMultipleHypsType->Fill(7);
818
819
820//
821// This section is auxiliary: (multiple hypotheses histos)
822//
823 if (hypD01+hypD02+hypD0bar1+hypD0bar2 == 2 || hypD01+hypD02+hypD0bar1+hypD0bar2 == 3 || hypD01+hypD02+hypD0bar1+hypD0bar2 == 4)
824 {
825
826 if (ptPart > ptBinH[0]) {
827 // D01 hyp.
828 if(hypD01==1) {
829 if (ptPart < ptBinH[1]) fhInvMassMultipleOnly_Bin1->Fill(fmassD0[0]);
830 else if (ptPart >= ptBinH[1] && ptPart < ptBinH[2]) fhInvMassMultipleOnly_Bin2->Fill(fmassD0[0]);
831 else if (ptPart >= ptBinH[2] && ptPart < ptBinH[3]) fhInvMassMultipleOnly_Bin3->Fill(fmassD0[0]);
832 else if (ptPart >= ptBinH[3] && ptPart < ptBinH[4]) fhInvMassMultipleOnly_Bin4->Fill(fmassD0[0]);
833 else if (ptPart >= ptBinH[4] && ptPart < ptBinH[5]) fhInvMassMultipleOnly_Bin5->Fill(fmassD0[0]);
834 }
835 // D02 hyp.
836 if(hypD02==1) {
837 if (ptPart < ptBinH[1]) fhInvMassMultipleOnly_Bin1->Fill(fmassD0[1]);
838 else if (ptPart >= ptBinH[1] && ptPart < ptBinH[2]) fhInvMassMultipleOnly_Bin2->Fill(fmassD0[1]);
839 else if (ptPart >= ptBinH[2] && ptPart < ptBinH[3]) fhInvMassMultipleOnly_Bin3->Fill(fmassD0[1]);
840 else if (ptPart >= ptBinH[3] && ptPart < ptBinH[4]) fhInvMassMultipleOnly_Bin4->Fill(fmassD0[1]);
841 else if (ptPart >= ptBinH[4] && ptPart < ptBinH[5]) fhInvMassMultipleOnly_Bin5->Fill(fmassD0[1]);
842 }
843 // D0bar1 hyp.
844 if(hypD0bar1==1) {
845 if (ptPart < ptBinH[1]) fhInvMassMultipleOnly_Bin1->Fill(fmassD0bar[0]);
846 else if (ptPart >= ptBinH[1] && ptPart < ptBinH[2]) fhInvMassMultipleOnly_Bin2->Fill(fmassD0bar[0]);
847 else if (ptPart >= ptBinH[2] && ptPart < ptBinH[3]) fhInvMassMultipleOnly_Bin3->Fill(fmassD0bar[0]);
848 else if (ptPart >= ptBinH[3] && ptPart < ptBinH[4]) fhInvMassMultipleOnly_Bin4->Fill(fmassD0bar[0]);
849 else if (ptPart >= ptBinH[4] && ptPart < ptBinH[5]) fhInvMassMultipleOnly_Bin5->Fill(fmassD0bar[0]);
850 }
851 // D0bar2 hyp.
852 if(hypD0bar2==1) {
853 if (ptPart < ptBinH[1]) fhInvMassMultipleOnly_Bin1->Fill(fmassD0bar[1]);
854 else if (ptPart >= ptBinH[1] && ptPart < ptBinH[2]) fhInvMassMultipleOnly_Bin2->Fill(fmassD0bar[1]);
855 else if (ptPart >= ptBinH[2] && ptPart < ptBinH[3]) fhInvMassMultipleOnly_Bin3->Fill(fmassD0bar[1]);
856 else if (ptPart >= ptBinH[3] && ptPart < ptBinH[4]) fhInvMassMultipleOnly_Bin4->Fill(fmassD0bar[1]);
857 else if (ptPart >= ptBinH[4] && ptPart < ptBinH[5]) fhInvMassMultipleOnly_Bin5->Fill(fmassD0bar[1]);
858 }
859 }
860
861 }
862//
863//end of auxiliary section
864//
865
866
867 //All histos are filled if Pt of candidate is greater than minimum of first bin (in this way: bin1+bin2+...binN = whole)
868 if (ptPart > ptBinH[0]) {
869
870 // D01 hyp.
871 if(hypD01==1) {
872 fPtSel->Fill(ptPart);
873 fScatterP4PID->Fill(trk1->Pt(),trk3->Pt());
874 if (ptPart < ptBinH[1]) {fhInvMassD0Sum_10Mev_Bin1->Fill(fmassD0[0]);
875 fhInvMassD0Sum_5Mev_Bin1->Fill(fmassD0[0]);
876 fhInvMassSumAll_10Mev_Bin1->Fill(fmassD0[0]);
877 fhInvMassSumAll_5Mev_Bin1->Fill(fmassD0[0]);}
878 else if (ptPart >= ptBinH[1] && ptPart < ptBinH[2]) {fhInvMassD0Sum_10Mev_Bin2->Fill(fmassD0[0]);
879 fhInvMassD0Sum_5Mev_Bin2->Fill(fmassD0[0]);
880 fhInvMassSumAll_10Mev_Bin2->Fill(fmassD0[0]);
881 fhInvMassSumAll_5Mev_Bin2->Fill(fmassD0[0]);}
882 else if (ptPart >= ptBinH[2] && ptPart < ptBinH[3]) {fhInvMassD0Sum_10Mev_Bin3->Fill(fmassD0[0]);
883 fhInvMassD0Sum_5Mev_Bin3->Fill(fmassD0[0]);
884 fhInvMassSumAll_10Mev_Bin3->Fill(fmassD0[0]);
885 fhInvMassSumAll_5Mev_Bin3->Fill(fmassD0[0]);}
886 else if (ptPart >= ptBinH[3] && ptPart < ptBinH[4]) {fhInvMassD0Sum_10Mev_Bin4->Fill(fmassD0[0]);
887 fhInvMassD0Sum_5Mev_Bin4->Fill(fmassD0[0]);
888 fhInvMassSumAll_10Mev_Bin4->Fill(fmassD0[0]);
889 fhInvMassSumAll_5Mev_Bin4->Fill(fmassD0[0]);}
890 else if (ptPart >= ptBinH[4] && ptPart < ptBinH[5]) {fhInvMassD0Sum_10Mev_Bin5->Fill(fmassD0[0]);
891 fhInvMassD0Sum_5Mev_Bin5->Fill(fmassD0[0]);
892 fhInvMassSumAll_10Mev_Bin5->Fill(fmassD0[0]);
893 fhInvMassSumAll_5Mev_Bin5->Fill(fmassD0[0]);}
894 }
895 // D02 hyp.
896 if(hypD02==1) {
897 fPtSel->Fill(ptPart);
898 fScatterP4PID->Fill(trk3->Pt(),trk1->Pt());
899 if (ptPart < ptBinH[1]) {fhInvMassD0Sum_10Mev_Bin1->Fill(fmassD0[1]);
900 fhInvMassD0Sum_5Mev_Bin1->Fill(fmassD0[1]);
901 fhInvMassSumAll_10Mev_Bin1->Fill(fmassD0[1]);
902 fhInvMassSumAll_5Mev_Bin1->Fill(fmassD0[1]);}
903 else if (ptPart >= ptBinH[1] && ptPart < ptBinH[2]) {fhInvMassD0Sum_10Mev_Bin2->Fill(fmassD0[1]);
904 fhInvMassD0Sum_5Mev_Bin2->Fill(fmassD0[1]);
905 fhInvMassSumAll_10Mev_Bin2->Fill(fmassD0[1]);
906 fhInvMassSumAll_5Mev_Bin2->Fill(fmassD0[1]);}
907 else if (ptPart >= ptBinH[2] && ptPart < ptBinH[3]) {fhInvMassD0Sum_10Mev_Bin3->Fill(fmassD0[1]);
908 fhInvMassD0Sum_5Mev_Bin3->Fill(fmassD0[1]);
909 fhInvMassSumAll_10Mev_Bin3->Fill(fmassD0[1]);
910 fhInvMassSumAll_5Mev_Bin3->Fill(fmassD0[1]);}
911 else if (ptPart >= ptBinH[3] && ptPart < ptBinH[4]) {fhInvMassD0Sum_10Mev_Bin4->Fill(fmassD0[1]);
912 fhInvMassD0Sum_5Mev_Bin4->Fill(fmassD0[1]);
913 fhInvMassSumAll_10Mev_Bin4->Fill(fmassD0[1]);
914 fhInvMassSumAll_5Mev_Bin4->Fill(fmassD0[1]);}
915 else if (ptPart >= ptBinH[4] && ptPart < ptBinH[5]) {fhInvMassD0Sum_10Mev_Bin5->Fill(fmassD0[1]);
916 fhInvMassD0Sum_5Mev_Bin5->Fill(fmassD0[1]);
917 fhInvMassSumAll_10Mev_Bin5->Fill(fmassD0[1]);
918 fhInvMassSumAll_5Mev_Bin5->Fill(fmassD0[1]);}
919 }
920 // D0bar1 hyp.
921 if(hypD0bar1==1) {
922 fPtSel->Fill(ptPart);
923 fScatterP4PID->Fill(trk0->Pt(),trk2->Pt());
924 if (ptPart < ptBinH[1]) {fhInvMassD0barSum_10Mev_Bin1->Fill(fmassD0bar[0]);
925 fhInvMassD0barSum_5Mev_Bin1->Fill(fmassD0bar[0]);
926 fhInvMassSumAll_10Mev_Bin1->Fill(fmassD0bar[0]);
927 fhInvMassSumAll_5Mev_Bin1->Fill(fmassD0bar[0]);}
928 else if (ptPart >= ptBinH[1] && ptPart < ptBinH[2]) {fhInvMassD0barSum_10Mev_Bin2->Fill(fmassD0bar[0]);
929 fhInvMassD0barSum_5Mev_Bin2->Fill(fmassD0bar[0]);
930 fhInvMassSumAll_10Mev_Bin2->Fill(fmassD0bar[0]);
931 fhInvMassSumAll_5Mev_Bin2->Fill(fmassD0bar[0]);}
932 else if (ptPart >= ptBinH[2] && ptPart < ptBinH[3]) {fhInvMassD0barSum_10Mev_Bin3->Fill(fmassD0bar[0]);
933 fhInvMassD0barSum_5Mev_Bin3->Fill(fmassD0bar[0]);
934 fhInvMassSumAll_10Mev_Bin3->Fill(fmassD0bar[0]);
935 fhInvMassSumAll_5Mev_Bin3->Fill(fmassD0bar[0]);}
936 else if (ptPart >= ptBinH[3] && ptPart < ptBinH[4]) {fhInvMassD0barSum_10Mev_Bin4->Fill(fmassD0bar[0]);
937 fhInvMassD0barSum_5Mev_Bin4->Fill(fmassD0bar[0]);
938 fhInvMassSumAll_10Mev_Bin4->Fill(fmassD0bar[0]);
939 fhInvMassSumAll_5Mev_Bin4->Fill(fmassD0bar[0]);}
940 else if (ptPart >= ptBinH[4] && ptPart < ptBinH[5]) {fhInvMassD0barSum_10Mev_Bin5->Fill(fmassD0bar[0]);
941 fhInvMassD0barSum_5Mev_Bin5->Fill(fmassD0bar[0]);
942 fhInvMassSumAll_10Mev_Bin5->Fill(fmassD0bar[0]);
943 fhInvMassSumAll_5Mev_Bin5->Fill(fmassD0bar[0]);}
944 }
945 // D0bar2 hyp.
946 if(hypD0bar2==1) {
947 fPtSel->Fill(ptPart);
948 fScatterP4PID->Fill(trk2->Pt(),trk0->Pt());
949 if (ptPart < ptBinH[1]) {fhInvMassD0barSum_10Mev_Bin1->Fill(fmassD0bar[1]);
950 fhInvMassD0barSum_5Mev_Bin1->Fill(fmassD0bar[1]);
951 fhInvMassSumAll_10Mev_Bin1->Fill(fmassD0bar[1]);
952 fhInvMassSumAll_5Mev_Bin1->Fill(fmassD0bar[1]);}
953 else if (ptPart >= ptBinH[1] && ptPart < ptBinH[2]) {fhInvMassD0barSum_10Mev_Bin2->Fill(fmassD0bar[1]);
954 fhInvMassD0barSum_5Mev_Bin2->Fill(fmassD0bar[1]);
955 fhInvMassSumAll_10Mev_Bin2->Fill(fmassD0bar[1]);
956 fhInvMassSumAll_5Mev_Bin2->Fill(fmassD0bar[1]);}
957 else if (ptPart >= ptBinH[2] && ptPart < ptBinH[3]) {fhInvMassD0barSum_10Mev_Bin3->Fill(fmassD0bar[1]);
958 fhInvMassD0barSum_5Mev_Bin3->Fill(fmassD0bar[1]);
959 fhInvMassSumAll_10Mev_Bin3->Fill(fmassD0bar[1]);
960 fhInvMassSumAll_5Mev_Bin3->Fill(fmassD0bar[1]);}
961 else if (ptPart >= ptBinH[3] && ptPart < ptBinH[4]) {fhInvMassD0barSum_10Mev_Bin4->Fill(fmassD0bar[1]);
962 fhInvMassD0barSum_5Mev_Bin4->Fill(fmassD0bar[1]);
963 fhInvMassSumAll_10Mev_Bin4->Fill(fmassD0bar[1]);
964 fhInvMassSumAll_5Mev_Bin4->Fill(fmassD0bar[1]);}
965 else if (ptPart >= ptBinH[4] && ptPart < ptBinH[5]) {fhInvMassD0barSum_10Mev_Bin5->Fill(fmassD0bar[1]);
966 fhInvMassD0barSum_5Mev_Bin5->Fill(fmassD0bar[1]);
967 fhInvMassSumAll_10Mev_Bin5->Fill(fmassD0bar[1]);
968 fhInvMassSumAll_5Mev_Bin5->Fill(fmassD0bar[1]);}
969 }
970 }
971
972 PostData(1,fOutput);
973 PostData(2,fOutput2);
974 PostData(3,fOutput3);
975 PostData(4,fOutput4);
976 PostData(5,fOutput5);
977
978 // HERE ONE COULD RECALCULATE THE VERTEX USING THE KF PACKAGE
979
980 // clone candidate for output AOD
981 if(hypD01||hypD02||hypD0bar1||hypD0bar2) {
982 AliAODVertex *v = new(verticesHFRef[iOutVerticesHF++])
983 AliAODVertex(*(dIn->GetSecondaryVtx()));
984 AliAODRecoDecayHF4Prong *dOut=new(aodCharm4ProngRef[iOutCharm4Prong++])
985 AliAODRecoDecayHF4Prong(*dIn);
986 dOut->SetSecondaryVtx(v);
987 dOut->SetOwnPrimaryVtx((AliAODVertex*)((dIn->GetOwnPrimaryVtx())->Clone()));
988 v->SetParent(dOut);
989 }
990 } //end of selection loop (starts with fSelected == 1, 2 or 3)
991 if(unsetvtx) dIn->UnsetOwnPrimaryVtx();
992 } // end loop on D0->K3pi
993
994 printf("Number of selected D0->K3pi: %d\n",iOutCharm4Prong);
995
996 return;
997}
998
999//________________________________________________________________________
1000void AliAnalysisTaskSESelectHF4Prong::Terminate(Option_t */*option*/)
1001{
1002 // Terminate analysis
1003 //
1004 if(fDebug > 1) printf("AnalysisTaskSESelectHF4Prong: Terminate() \n");
1005
1006 fOutput = dynamic_cast<TList*> (GetOutputData(1));
1007 if (!fOutput) {
1008 printf("ERROR: fOutput not available\n");
1009 return;
1010 }
1011 fOutput2 = dynamic_cast<TList*> (GetOutputData(2));
1012 if (!fOutput2) {
1013 printf("ERROR: fOutput not available\n");
1014 return;
1015 }
1016 fOutput3 = dynamic_cast<TList*> (GetOutputData(3));
1017 if (!fOutput3) {
1018 printf("ERROR: fOutput not available\n");
1019 return;
1020 }
1021 fOutput4 = dynamic_cast<TList*> (GetOutputData(4));
1022 if (!fOutput4) {
1023 printf("ERROR: fOutput not available\n");
1024 return;
1025 }
1026 if (!fOutput5) {
1027 printf("ERROR: fOutput not available\n");
1028 return;
1029 }
1030 fOutputC = dynamic_cast<TList*> (GetOutputData(5));
1031 if (!fOutputC) {
1032 printf("ERROR: fOutputC not available\n");
1033 return;
1034 }
1035
1036 fhInvMassD0Sum_10Mev_Bin1 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0Sum_10Mev_Bin1"));
1037 fhInvMassD0barSum_10Mev_Bin1 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0barSum_10Mev_Bin1"));
1038 fhInvMassSumAll_10Mev_Bin1 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassSumAll_10Mev_Bin1"));
1039 fhInvMassD0Sum_5Mev_Bin1 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0Sum_5Mev_Bin1"));
1040 fhInvMassD0barSum_5Mev_Bin1 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0barSum_5Mev_Bin1"));
1041 fhInvMassSumAll_5Mev_Bin1 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassSumAll_5Mev_Bin1"));
1042 fhInvMassD0Sum_10Mev_Bin2 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0Sum_10Mev_Bin2"));
1043 fhInvMassD0barSum_10Mev_Bin2 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0barSum_10Mev_Bin2"));
1044 fhInvMassSumAll_10Mev_Bin2 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassSumAll_10Mev_Bin2"));
1045 fhInvMassD0Sum_5Mev_Bin2 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0Sum_5Mev_Bin2"));
1046 fhInvMassD0barSum_5Mev_Bin2 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0barSum_5Mev_Bin2"));
1047 fhInvMassSumAll_5Mev_Bin2 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassSumAll_5Mev_Bin2"));
1048 fhInvMassD0Sum_10Mev_Bin3 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0Sum_10Mev_Bin3"));
1049 fhInvMassD0barSum_10Mev_Bin3 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0barSum_10Mev_Bin3"));
1050 fhInvMassSumAll_10Mev_Bin3 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassSumAll_10Mev_Bin3"));
1051 fhInvMassD0Sum_5Mev_Bin3 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0Sum_5Mev_Bin3"));
1052 fhInvMassD0barSum_5Mev_Bin3 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0barSum_5Mev_Bin3"));
1053 fhInvMassSumAll_5Mev_Bin3 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassSumAll_5Mev_Bin3"));
1054 fhInvMassD0Sum_10Mev_Bin4 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0Sum_10Mev_Bin4"));
1055 fhInvMassD0barSum_10Mev_Bin4 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0barSum_10Mev_Bin4"));
1056 fhInvMassSumAll_10Mev_Bin4 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassSumAll_10Mev_Bin4"));
1057 fhInvMassD0Sum_5Mev_Bin4 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0Sum_5Mev_Bin4"));
1058 fhInvMassD0barSum_5Mev_Bin4 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0barSum_5Mev_Bin4"));
1059 fhInvMassSumAll_5Mev_Bin4 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassSumAll_5Mev_Bin4"));
1060 fhInvMassD0Sum_10Mev_Bin5 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0Sum_10Mev_Bin5"));
1061 fhInvMassD0barSum_10Mev_Bin5 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0barSum_10Mev_Bin5"));
1062 fhInvMassSumAll_10Mev_Bin5 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassSumAll_10Mev_Bin5"));
1063 fhInvMassD0Sum_5Mev_Bin5 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0Sum_5Mev_Bin5"));
1064 fhInvMassD0barSum_5Mev_Bin5 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassD0barSum_5Mev_Bin5"));
1065 fhInvMassSumAll_5Mev_Bin5 = dynamic_cast<TH1F*>(fOutput->FindObject("fhInvMassSumAll_5Mev_Bin5"));
1066
1067 fScatterP4PID = dynamic_cast<TH2F*>(fOutput->FindObject("fScatterP4PID"));
1068 fPtVsY = dynamic_cast<TH2F*>(fOutputC->FindObject("fPtVsY"));
1069 fPtVsYAll = dynamic_cast<TH2F*>(fOutputC->FindObject("fPtVsYAll"));
1070
1071 fEventCounter = dynamic_cast<TH1F*>(fOutputC->FindObject("fEventCounter"));
1072
1073 fCutDCA = dynamic_cast<TH1F*>(fOutputC->FindObject("fCutDCA"));
1074 fCutDCA3 = dynamic_cast<TH1F*>(fOutputC->FindObject("fCutDCA3"));
1075 fCutDCA2 = dynamic_cast<TH1F*>(fOutputC->FindObject("fCutDCA2"));
1076 fCutDCA5 = dynamic_cast<TH1F*>(fOutputC->FindObject("fCutDCA5"));
1077 fCutVertexDist2 = dynamic_cast<TH1F*>(fOutputC->FindObject("fCutVertexDist2"));
1078 fCutVertexDist3 = dynamic_cast<TH1F*>(fOutputC->FindObject("fCutVertexDist3"));
1079 fCutVertexDist4 = dynamic_cast<TH1F*>(fOutputC->FindObject("fCutVertexDist4"));
1080 fCutCosinePoint = dynamic_cast<TH1F*>(fOutputC->FindObject("fCutCosinePoint"));
1081
1082 fCutPt = dynamic_cast<TH1F*>(fOutputC->FindObject("fCutPt"));
1083 fCutY = dynamic_cast<TH1F*>(fOutputC->FindObject("fCutY"));
1084 fPIDSel = dynamic_cast<TH1F*>(fOutputC->FindObject("fPIDSel"));
1085 fPIDSel_Bin1 = dynamic_cast<TH1F*>(fOutputC->FindObject("fPIDSel_Bin1"));
1086 fPIDSel_Bin2 = dynamic_cast<TH1F*>(fOutputC->FindObject("fPIDSel_Bin2"));
1087 fPIDSel_Bin3 = dynamic_cast<TH1F*>(fOutputC->FindObject("fPIDSel_Bin3"));
1088 fPIDSel_Bin4 = dynamic_cast<TH1F*>(fOutputC->FindObject("fPIDSel_Bin4"));
1089 fPIDSel_Bin5 = dynamic_cast<TH1F*>(fOutputC->FindObject("fPIDSel_Bin5"));
1090}
1091