Belle II Software  release-05-01-25
ntupleUpsilon4SGenInfo.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 
4 """
5 <header>
6  <contact>Vladimir Chekelian; Fernando Abudinen; abudinen@mpp.mpg.de</contact>
7  <description> make Upsilon(4S) ntuple for checks and studies of the generator file:
8 particles: Upsilon(4S), two daughters (i.e. BBbar) and four granddaughters (e.g. B0->Jpsi+K0S)
9 variables: mcPDG,M,nDaughters,mcDecayTime,mcLifeTime,mcX,mcY,mcZ,mcE,mcPX,mcPY,mcPZ;
10 created 12.02.2019 </description>
11 </header>
12 """
13 
14 import basf2 as b2
15 import modularAnalysis as ma
16 from variables import variables
17 import sys
18 
19 variables.addAlias('B00_mcPDG', 'daughter(0, mcPDG)')
20 variables.addAlias('B00_M', 'daughter(0, M)')
21 variables.addAlias('B00_nDaughters', 'daughter(0, nDaughters)')
22 variables.addAlias('B00_mcDecayTime', 'daughter(0, mcDecayTime)')
23 variables.addAlias('B00_mcLifeTime', 'daughter(0, mcLifeTime)')
24 variables.addAlias('B00_mcX', 'daughter(0, mcDecayVertexX)')
25 variables.addAlias('B00_mcY', 'daughter(0, mcDecayVertexY)')
26 variables.addAlias('B00_mcZ', 'daughter(0, mcDecayVertexZ)')
27 variables.addAlias('B00_mcE', 'daughter(0, mcE)')
28 variables.addAlias('B00_mcPX', 'daughter(0, mcPX)')
29 variables.addAlias('B00_mcPY', 'daughter(0, mcPY)')
30 variables.addAlias('B00_mcPZ', 'daughter(0, mcPZ)')
31 
32 variables.addAlias('B00_daughter0_mcPDG', 'daughter(0, daughter(0, mcPDG))')
33 variables.addAlias('B00_daughter0_M', 'daughter(0, daughter(0, M))')
34 variables.addAlias('B00_daughter0_nDaughters', 'daughter(0, daughter(0, nDaughters))')
35 variables.addAlias('B00_daughter0_mcDecayTime', 'daughter(0, daughter(0, mcDecayTime))')
36 variables.addAlias('B00_daughter0_mcLifeTime', 'daughter(0, daughter(0, mcLifeTime))')
37 variables.addAlias('B00_daughter0_mcX', 'daughter(0, daughter(0, mcDecayVertexX))')
38 variables.addAlias('B00_daughter0_mcY', 'daughter(0, daughter(0, mcDecayVertexY))')
39 variables.addAlias('B00_daughter0_mcZ', 'daughter(0, daughter(0, mcDecayVertexZ))')
40 variables.addAlias('B00_daughter0_mcE', 'daughter(0, daughter(0, mcE))')
41 variables.addAlias('B00_daughter0_mcPX', 'daughter(0, daughter(0, mcPX))')
42 variables.addAlias('B00_daughter0_mcPY', 'daughter(0, daughter(0, mcPY))')
43 variables.addAlias('B00_daughter0_mcPZ', 'daughter(0, daughter(0, mcPZ))')
44 
45 variables.addAlias('B00_daughter1_mcPDG', 'daughter(0, daughter(1, mcPDG))')
46 variables.addAlias('B00_daughter1_M', 'daughter(0, daughter(1, M))')
47 variables.addAlias('B00_daughter1_nDaughters', 'daughter(0, daughter(1, nDaughters))')
48 variables.addAlias('B00_daughter1_mcDecayTime', 'daughter(0, daughter(1, mcDecayTime))')
49 variables.addAlias('B00_daughter1_mcLifeTime', 'daughter(0, daughter(1, mcLifeTime))')
50 variables.addAlias('B00_daughter1_mcX', 'daughter(0, daughter(1, mcDecayVertexX))')
51 variables.addAlias('B00_daughter1_mcY', 'daughter(0, daughter(1, mcDecayVertexY))')
52 variables.addAlias('B00_daughter1_mcZ', 'daughter(0, daughter(1, mcDecayVertexZ))')
53 variables.addAlias('B00_daughter1_mcE', 'daughter(0, daughter(1, mcE))')
54 variables.addAlias('B00_daughter1_mcPX', 'daughter(0, daughter(1, mcPX))')
55 variables.addAlias('B00_daughter1_mcPY', 'daughter(0, daughter(1, mcPY))')
56 variables.addAlias('B00_daughter1_mcPZ', 'daughter(0, daughter(1, mcPZ))')
57 
58 variables.addAlias('B01_mcPDG', 'daughter(1, mcPDG)')
59 variables.addAlias('B01_M', 'daughter(1, M)')
60 variables.addAlias('B01_nDaughters', 'daughter(1, nDaughters)')
61 variables.addAlias('B01_mcDecayTime', 'daughter(1, mcDecayTime)')
62 variables.addAlias('B01_mcLifeTime', 'daughter(1, mcLifeTime)')
63 variables.addAlias('B01_mcX', 'daughter(1, mcDecayVertexX)')
64 variables.addAlias('B01_mcY', 'daughter(1, mcDecayVertexY)')
65 variables.addAlias('B01_mcZ', 'daughter(1, mcDecayVertexZ)')
66 variables.addAlias('B01_mcE', 'daughter(1, mcE)')
67 variables.addAlias('B01_mcPX', 'daughter(1, mcPX)')
68 variables.addAlias('B01_mcPY', 'daughter(1, mcPY)')
69 variables.addAlias('B01_mcPZ', 'daughter(1, mcPZ)')
70 
71 variables.addAlias('B01_daughter0_mcPDG', 'daughter(1, daughter(0, mcPDG))')
72 variables.addAlias('B01_daughter0_M', 'daughter(1, daughter(0, M))')
73 variables.addAlias('B01_daughter0_nDaughters', 'daughter(1, daughter(0, nDaughters))')
74 variables.addAlias('B01_daughter0_mcDecayTime', 'daughter(1, daughter(0, mcDecayTime))')
75 variables.addAlias('B01_daughter0_mcLifeTime', 'daughter(1, daughter(0, mcLifeTime))')
76 variables.addAlias('B01_daughter0_mcX', 'daughter(1, daughter(0, mcDecayVertexX))')
77 variables.addAlias('B01_daughter0_mcY', 'daughter(1, daughter(0, mcDecayVertexY))')
78 variables.addAlias('B01_daughter0_mcZ', 'daughter(1, daughter(0, mcDecayVertexZ))')
79 variables.addAlias('B01_daughter0_mcE', 'daughter(1, daughter(0, mcE))')
80 variables.addAlias('B01_daughter0_mcPX', 'daughter(1, daughter(0, mcPX))')
81 variables.addAlias('B01_daughter0_mcPY', 'daughter(1, daughter(0, mcPY))')
82 variables.addAlias('B01_daughter0_mcPZ', 'daughter(1, daughter(0, mcPZ))')
83 
84 variables.addAlias('B01_daughter1_mcPDG', 'daughter(1, daughter(1, mcPDG))')
85 variables.addAlias('B01_daughter1_M', 'daughter(1, daughter(1, M))')
86 variables.addAlias('B01_daughter1_nDaughters', 'daughter(1, daughter(1, nDaughters))')
87 variables.addAlias('B01_daughter1_mcDecayTime', 'daughter(1, daughter(1, mcDecayTime))')
88 variables.addAlias('B01_daughter1_mcLifeTime', 'daughter(1, daughter(1, mcLifeTime))')
89 variables.addAlias('B01_daughter1_mcX', 'daughter(1, daughter(1, mcDecayVertexX))')
90 variables.addAlias('B01_daughter1_mcY', 'daughter(1, daughter(1, mcDecayVertexY))')
91 variables.addAlias('B01_daughter1_mcZ', 'daughter(1, daughter(1, mcDecayVertexZ))')
92 variables.addAlias('B01_daughter1_mcE', 'daughter(1, daughter(1, mcE))')
93 variables.addAlias('B01_daughter1_mcPX', 'daughter(1, daughter(1, mcPX))')
94 variables.addAlias('B01_daughter1_mcPY', 'daughter(1, daughter(1, mcPY))')
95 variables.addAlias('B01_daughter1_mcPZ', 'daughter(1, daughter(1, mcPZ))')
96 
97 if len(sys.argv) != 2:
98  sys.exit('Must provide one input parameter: [output_root_file_name]'
99  )
100 
101 outRootFileName = sys.argv[1]
102 
103 # create path
104 cp_val_path = b2.create_path()
105 
106 environmentType = "default"
107 
108 ma.inputMdstList(environmentType=environmentType, filelist=[], path=cp_val_path)
109 
110 Upsilon4S = ('Upsilon(4S):all', '')
111 ma.fillParticleListsFromMC([Upsilon4S], True, path=cp_val_path)
112 ma.matchMCTruth('Upsilon(4S):all', path=cp_val_path)
113 
114 ma.variablesToNtuple(decayString='Upsilon(4S):all',
115  variables=["generatorEventWeight",
116  # Upsilon(4S)
117  "mcPDG", "M", "nDaughters", "mcDecayTime", "mcLifeTime",
118  "mcX", "mcY", "mcZ", "mcE", "mcPX", "mcPY", "mcPZ",
119  # first daughter (e.g. 1st B0) and two granddaughters
120  'B00_mcPDG', 'B00_M', 'B00_nDaughters',
121  'B00_mcDecayTime', 'B00_mcLifeTime',
122  'B00_mcX', 'B00_mcY', 'B00_mcZ',
123  'B00_mcE', 'B00_mcPX', 'B00_mcPY', 'B00_mcPZ',
124  'B00_daughter0_mcPDG', 'B00_daughter1_mcPDG',
125  'B00_daughter0_M', 'B00_daughter1_M',
126  'B00_daughter0_mcDecayTime', 'B00_daughter1_mcDecayTime',
127  'B00_daughter0_mcLifeTime', 'B00_daughter1_mcLifeTime',
128  'B00_daughter0_mcX', 'B00_daughter1_mcX',
129  'B00_daughter0_mcY', 'B00_daughter1_mcY',
130  'B00_daughter0_mcZ', 'B00_daughter1_mcZ',
131  'B00_daughter0_mcE', 'B00_daughter1_mcE',
132  'B00_daughter0_mcPX', 'B00_daughter1_mcPX',
133  'B00_daughter0_mcPY', 'B00_daughter1_mcPY',
134  'B00_daughter0_mcPZ', 'B00_daughter1_mcPZ',
135  # second daughter (e.g. 2nd B0) and two granddaughters
136  'B01_mcPDG', 'B01_M', 'B01_nDaughters',
137  'B01_mcDecayTime', 'B01_mcLifeTime',
138  'B01_mcX', 'B01_mcY', 'B01_mcZ',
139  'B01_mcE', 'B01_mcPX', 'B01_mcPY', 'B01_mcPZ',
140  'B01_daughter0_mcPDG', 'B01_daughter1_mcPDG',
141  'B01_daughter0_M', 'B01_daughter1_M',
142  'B01_daughter0_mcDecayTime', 'B01_daughter1_mcDecayTime',
143  'B01_daughter0_mcLifeTime', 'B01_daughter1_mcLifeTime',
144  'B01_daughter0_mcX', 'B01_daughter1_mcX',
145  'B01_daughter0_mcY', 'B01_daughter1_mcY',
146  'B01_daughter0_mcZ', 'B01_daughter1_mcZ',
147  'B01_daughter0_mcE', 'B01_daughter1_mcE',
148  'B01_daughter0_mcPX', 'B01_daughter1_mcPX',
149  'B01_daughter0_mcPY', 'B01_daughter1_mcPY',
150  'B01_daughter0_mcPZ', 'B01_daughter1_mcPZ'],
151  filename=outRootFileName,
152  treename='UpsilonTree',
153  path=cp_val_path)
154 
155 ma.summaryOfLists(particleLists=['Upsilon(4S):all'], path=cp_val_path)
156 
157 # Process the events
158 ma.process(cp_val_path)
159 
160 # print out the summary
161 print(b2.statistics)