Belle II Software  release-05-01-25
inclusiveDstarReconstruction.py
1 # Doxygen should skip this script
2 # @cond
3 
4 """
5 An example script showing how to reconstruct D* mesons inclusively from slow
6 pions.
7 """
8 
9 import basf2
10 import modularAnalysis as mA
11 import stdPi0s
12 
13 from ROOT import Belle2
14 
15 
16 main_path = basf2.create_path()
17 
18 mA.inputMdstList(
19  environmentType="default",
20  filelist=[Belle2.FileSystem.findFile("analysis/tests/mdst.root")],
21  path=main_path,
22 )
23 
24 list_tree_tuples = list()
25 
26 # MC Truth
27 mA.fillParticleListFromMC("pi-:from_mc", cut="[dr < 2] and [abs(dz) < 4]", addDaughters=True, path=main_path)
28 mA.addInclusiveDstarReconstruction("pi-:from_mc", "D*-:Dstcharged_slowPicharged_MC", "[useCMSFrame(p) < 0.2]", main_path)
29 
30 mA.fillParticleListFromMC("pi0:from_mc", "", addDaughters=True, path=main_path)
31 mA.addInclusiveDstarReconstruction("pi0:from_mc", "D*-:Dstcharged_slowPizero_MC", "[useCMSFrame(p) < 0.2]", main_path)
32 mA.addInclusiveDstarReconstruction("pi0:from_mc", "D*0:Dstzero_slowPizero_MC", "[useCMSFrame(p) < 0.2]", main_path)
33 
34 list_tree_tuples.append(("D*-:Dstcharged_slowPicharged_MC", "Dstcharged_slowPicharged_MC"))
35 list_tree_tuples.append(("D*-:Dstcharged_slowPizero_MC", "Dstcharged_slowPizero_MC"))
36 list_tree_tuples.append(("D*0:Dstzero_slowPizero_MC", "Dstzero_slowPizero_MC"))
37 
38 # Reco Level
39 mA.fillParticleList("pi-:slow", cut="[dr < 2] and [abs(dz) < 4]", path=main_path)
40 mA.matchMCTruth("pi-:slow", path=main_path)
41 mA.addInclusiveDstarReconstruction("pi-:slow", "D*-:Dstcharged_slowPicharged", "[useCMSFrame(p) < 0.2]", main_path)
42 mA.matchMCTruth("D*-:Dstcharged_slowPicharged", main_path)
43 
44 stdPi0s.stdPi0s("eff60_Jan2020", main_path)
45 mA.matchMCTruth("pi0:eff60_Jan2020", main_path)
46 mA.addInclusiveDstarReconstruction("pi0:eff60_Jan2020", "D*-:Dstcharged_slowPizero", "[useCMSFrame(p) < 0.2]", main_path)
47 mA.matchMCTruth("D*-:Dstcharged_slowPizero", main_path)
48 mA.addInclusiveDstarReconstruction("pi0:eff60_Jan2020", "D*0:Dstzero_slowPizero", "[useCMSFrame(p) < 0.2]", main_path)
49 mA.matchMCTruth("D*0:Dstzero_slowPizero", main_path)
50 
51 list_tree_tuples.append(("D*-:Dstcharged_slowPicharged", "Dstcharged_slowPicharged"))
52 list_tree_tuples.append(("D*-:Dstcharged_slowPizero", "Dstcharged_slowPizero"))
53 list_tree_tuples.append(("D*0:Dstzero_slowPizero", "Dstzero_slowPizero"))
54 
55 dstar_variables = [
56  "E",
57  "p",
58  "pt",
59  "useCMSFrame(p)",
60  "useCMSFrame(E)",
61  "matchedMC(p)",
62  "matchedMC(pt)",
63  "matchedMC(E)",
64  "matchedMC(useCMSFrame(p))",
65  "matchedMC(PDG)",
66  "px",
67  "py",
68  "pz",
69  "M",
70  "InvM",
71  "daughter(0, isSignal)",
72  "daughter(0, E)",
73  "daughter(0, p)",
74  "daughter(0, useCMSFrame(p))",
75  "daughter(0, matchedMC(p))",
76  "daughter(0, matchedMC(E))",
77  "daughter(0, matchedMC(useCMSFrame(p)))",
78  "daughter(0, matchedMC(PDG))",
79  "daughter(0, daughter(0, matchedMC(PDG)))",
80  "daughter(0, daughter(1, matchedMC(PDG)))",
81  "daughter(0, mcMother(PDG))",
82  "daughter(0, mcMother(p))",
83  "daughter(0, mcMother(useCMSFrame(p)))",
84  "daughter(0, mcMother(E))",
85  "daughter(0, mcMother(mcDaughter(0, PDG)))",
86  "daughter(0, mcMother(mcDaughter(0, p)))",
87  "daughter(0, mcMother(mcDaughter(0, E)))",
88  "daughter(0, mcMother(mcDaughter(0, useCMSFrame(p))))",
89  "daughter(0, mcMother(mcDaughter(1, PDG)))",
90  "daughter(0, mcMother(mcDaughter(1, p)))",
91  "daughter(0, mcMother(mcDaughter(1, E)))",
92  "daughter(0, mcMother(mcDaughter(1, useCMSFrame(p))))",
93  "daughter(0, mcMother(mcMother(mcDaughter(0, PDG))))",
94  "daughter(0, mcMother(mcMother(mcDaughter(1, PDG))))",
95 ]
96 
97 for list_tree_tuple in list_tree_tuples:
98  mA.variablesToNtuple(
99  decayString=list_tree_tuple[0],
100  variables=dstar_variables,
101  treename=list_tree_tuple[1],
102  path=main_path
103  )
104 
105 basf2.process(main_path)
106 print(basf2.statistics)
107 
108 # @endcond
basf2.process
def process(path, max_event=0)
Definition: __init__.py:25
Belle2::FileSystem::findFile
static std::string findFile(const std::string &path, bool silent=false)
Search for given file or directory in local or central release directory, and return absolute path if...
Definition: FileSystem.cc:147
stdPi0s.stdPi0s
def stdPi0s(listtype='eff60_Jan2020', path=None)
Definition: stdPi0s.py:19