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