Belle II Software development
inclusiveDstarReconstruction.py
1
8
9"""
10An example script showing how to reconstruct D* mesons inclusively from slow
11pions.
12"""
13
14import basf2
15import modularAnalysis as mA
16import stdPi0s
17
18
19main_path = basf2.create_path()
20
21mA.inputMdstList(
22 filelist=[basf2.find_file("analysis/tests/mdst.root")],
23 path=main_path,
24)
25
26list_tree_tuples = list()
27
28# MC Truth
29mA.fillParticleListFromMC("pi+:from_mc", cut="[dr < 2] and [abs(dz) < 4]", addDaughters=True, path=main_path)
30mA.addInclusiveDstarReconstruction(
31 "D*+:Dstcharged_slowPicharged_MC -> pi+:from_mc",
32 slowPionCut="[useCMSFrame(p) < 2]",
33 DstarCut="useCMSFrame(p) < 2",
34 path=main_path)
35
36mA.fillParticleListFromMC("pi0:from_mc", "", addDaughters=True, path=main_path)
37mA.addInclusiveDstarReconstruction(
38 "D*+:Dstcharged_slowPizero_MC -> pi0:from_mc",
39 slowPionCut="[useCMSFrame(p) < 2]",
40 DstarCut="useCMSFrame(p) < 2",
41 path=main_path)
42mA.addInclusiveDstarReconstruction(
43 "D*0:Dstzero_slowPizero_MC -> pi0:from_mc",
44 slowPionCut="[useCMSFrame(p) < 2]",
45 DstarCut="useCMSFrame(p) < 2",
46 path=main_path)
47mA.matchMCTruth("D*+:Dstcharged_slowPizero_MC", path=main_path)
48mA.matchMCTruth("D*0:Dstzero_slowPizero_MC", path=main_path)
49mA.matchMCTruth("D*+:Dstcharged_slowPicharged_MC", path=main_path)
50
51list_tree_tuples.append(("D*+:Dstcharged_slowPicharged_MC", "Dstcharged_slowPicharged_MC"))
52list_tree_tuples.append(("D*+:Dstcharged_slowPizero_MC", "Dstcharged_slowPizero_MC"))
53list_tree_tuples.append(("D*0:Dstzero_slowPizero_MC", "Dstzero_slowPizero_MC"))
54
55# Reco Level
56mA.fillParticleList("pi+:slow", cut="[dr < 2] and [abs(dz) < 4]", path=main_path)
57mA.matchMCTruth("pi+:slow", path=main_path)
58
59mA.addInclusiveDstarReconstruction(
60 "D*+:Dstcharged_slowPicharged -> pi+:slow",
61 slowPionCut="[useCMSFrame(p) < 2]",
62 DstarCut="useCMSFrame(p) < 2",
63 path=main_path)
64mA.matchMCTruth("D*+:Dstcharged_slowPicharged", path=main_path)
65
66mA.addInclusiveDstarReconstruction(
67 "D*-:Dstcharged_slowPicharged_negative -> pi-:slow",
68 slowPionCut="[useCMSFrame(p) < 2]",
69 DstarCut="useCMSFrame(p) < 2",
70 path=main_path)
71mA.matchMCTruth("D*-:Dstcharged_slowPicharged_negative", path=main_path)
72
73stdPi0s.stdPi0s("eff60_May2020", path=main_path)
74mA.matchMCTruth("pi0:eff60_May2020", path=main_path)
75
76mA.addInclusiveDstarReconstruction(
77 "D*+:Dstcharged_slowPizero -> pi0:eff60_May2020",
78 slowPionCut="[useCMSFrame(p) < 2]",
79 DstarCut="useCMSFrame(p) < 2",
80 path=main_path)
81mA.matchMCTruth("D*+:Dstcharged_slowPizero", path=main_path)
82
83mA.addInclusiveDstarReconstruction(
84 "D*0:Dstzero_slowPizero -> pi0:eff60_May2020",
85 slowPionCut="[useCMSFrame(p) < 2]",
86 DstarCut="useCMSFrame(p) < 2",
87 path=main_path)
88mA.matchMCTruth("D*0:Dstzero_slowPizero", path=main_path)
89
90list_tree_tuples.append(("D*+:Dstcharged_slowPicharged", "Dstcharged_slowPicharged"))
91list_tree_tuples.append(("D*-:Dstcharged_slowPicharged_negative", "Dstcharged_slowPicharged_negative"))
92list_tree_tuples.append(("D*+:Dstcharged_slowPizero", "Dstcharged_slowPizero"))
93list_tree_tuples.append(("D*0:Dstzero_slowPizero", "Dstzero_slowPizero"))
94
95dstar_variables = [
96 "isSignal",
97 "PDG",
98 "daughter(0, PDG)",
99 "E",
100 "p",
101 "pt",
102 "useCMSFrame(p)",
103 "useCMSFrame(E)",
104 "matchedMC(p)",
105 "matchedMC(pt)",
106 "matchedMC(E)",
107 "matchedMC(useCMSFrame(p))",
108 "matchedMC(PDG)",
109 "px",
110 "py",
111 "pz",
112 "M",
113 "InvM",
114 "daughter(0, isSignal)",
115 "daughter(0, E)",
116 "daughter(0, p)",
117 "daughter(0, useCMSFrame(p))",
118 "daughter(0, matchedMC(p))",
119 "daughter(0, matchedMC(E))",
120 "daughter(0, matchedMC(useCMSFrame(p)))",
121 "daughter(0, matchedMC(PDG))",
122 "daughter(0, daughter(0, matchedMC(PDG)))",
123 "daughter(0, daughter(1, matchedMC(PDG)))",
124 "daughter(0, mcMother(PDG))",
125 "daughter(0, mcMother(p))",
126 "daughter(0, mcMother(useCMSFrame(p)))",
127 "daughter(0, mcMother(E))",
128 "daughter(0, mcMother(mcDaughter(0, PDG)))",
129 "daughter(0, mcMother(mcDaughter(0, p)))",
130 "daughter(0, mcMother(mcDaughter(0, E)))",
131 "daughter(0, mcMother(mcDaughter(0, useCMSFrame(p))))",
132 "daughter(0, mcMother(mcDaughter(1, PDG)))",
133 "daughter(0, mcMother(mcDaughter(1, p)))",
134 "daughter(0, mcMother(mcDaughter(1, E)))",
135 "daughter(0, mcMother(mcDaughter(1, useCMSFrame(p))))",
136 "daughter(0, mcMother(mcMother(mcDaughter(0, PDG))))",
137 "daughter(0, mcMother(mcMother(mcDaughter(1, PDG))))",
138]
139
140for list_tree_tuple in list_tree_tuples:
141 mA.variablesToNtuple(
142 decayString=list_tree_tuple[0],
143 variables=dstar_variables,
144 treename=list_tree_tuple[1],
145 path=main_path
146 )
147
148basf2.process(main_path)
stdPi0s(listtype="eff60_May2020", path=None, beamBackgroundMVAWeight="", fakePhotonMVAWeight="", biasCorrectionTable="")
Definition stdPi0s.py:22