3 from ROOT
import Belle2
5 from svd
import add_svd_simulation
34 """Set aside all SimHits on a selected sensor/side to create
35 signal/background collisions."""
38 '''initialize python module'''
41 '''selected sensor info'''
47 for h
in storesimhits:
53 '''Inject stored SVDSimHits'''
56 '''initialize python module'''
59 '''sim hit store array'''
63 self.
simhits.registerInDataStore()
70 simhit = self.
simhits.appendNew()
74 if __name__ ==
"__main__":
78 basf2.B2INFO(
'Creating background data...')
80 create_bgfile = basf2.create_path()
81 create_bgfile.add_module(
'EventInfoSetter', expList=[0], runList=[0], evtNumList=[100])
82 create_bgfile.add_module(
'Gearbox')
83 create_bgfile.add_module(
'Geometry', components=[
'MagneticField',
'SVD'])
84 create_bgfile.add_module(
'ParticleGun')
85 create_bgfile.add_module(
'FullSim')
86 create_bgfile.add_module(
'BeamBkgTagSetter', backgroundType=
"twoPhoton", realTime=310.0)
87 create_bgfile.add_module(
'RootOutput', outputFileName=
'bgForMixing.root', branchNames=[
'BackgroundMetaData',
'SVDSimHits'])
91 basf2.B2INFO(
'Creating overlay data...')
93 create_ovrfile = basf2.create_path()
94 create_ovrfile.add_module(
'EventInfoSetter', expList=[0], runList=[0], evtNumList=[1])
95 create_ovrfile.add_module(
'Gearbox')
96 create_ovrfile.add_module(
'Geometry', components=[
'MagneticField',
'SVD'])
97 create_ovrfile.add_module(
'BeamBkgMixer', backgroundFiles=[
'bgForMixing.root'], minTime=-150, maxTime=150)
99 add_svd_simulation(create_ovrfile)
100 for m
in create_ovrfile.modules():
101 if m.name() ==
"SVDDigitizer":
102 m.param(
'ElectronicEffects',
False)
105 create_ovrfile.add_module(
'RootOutput', outputFileName=
'bgForOverlay.root', branchNames=[
'SVDShaperDigits'])
109 basf2.B2INFO(
'Background mixing...')
111 produce_mixed = basf2.create_path()
112 produce_mixed.add_module(
'EventInfoSetter', expList=[0], runList=[0], evtNumList=[1])
113 produce_mixed.add_module(
'Gearbox')
114 produce_mixed.add_module(
'Geometry', components=[
'MagneticField',
'SVD'])
118 produce_mixed.add_module(
'BeamBkgMixer', backgroundFiles=[
'bgForMixing.root'], minTime=-150, maxTime=150)
120 add_svd_simulation(produce_mixed)
121 for m
in produce_mixed.modules():
122 if m.name() ==
"SVDDigitizer":
123 m.param(
'ElectronicEffects',
False)
125 produce_mixed.add_module(
'SVDShaperDigitSorter')
126 produce_mixed.add_module(
'RootOutput', outputFileName=
'mixedBg.root')
130 basf2.B2INFO(
'Background overlay...')
132 produce_overlaid = basf2.create_path()
133 produce_overlaid.add_module(
'EventInfoSetter', expList=[0], runList=[0], evtNumList=[1])
134 produce_overlaid.add_module(
'Gearbox')
135 produce_overlaid.add_module(
'Geometry', components=[
'MagneticField',
'SVD'])
136 produce_overlaid.add_module(
'BGOverlayInput', inputFileNames=[
'bgForOverlay.root'])
139 add_svd_simulation(produce_overlaid)
140 for m
in produce_overlaid.modules():
141 if m.name() ==
"SVDDigitizer":
142 m.param(
'ElectronicEffects',
False)
144 produce_overlaid.add_module(
'BGOverlayExecutor')
146 produce_overlaid.add_module(
'SVDShaperDigitSorter')
147 produce_overlaid.add_module(
'RootOutput', outputFileName=
'overlaidBg.root')
151 basf2.B2INFO(
'Comparing...')
154 f_mixed = ROOT.TFile(
'mixedBg.root')
155 tree_mixed = f_mixed.Get(
'tree')
157 f_over = ROOT.TFile(
'overlaidBg.root')
158 tree_over = f_over.Get(
'tree')
162 for evt1, evt2
in zip(tree_mixed, tree_over):
163 d_mixed = evt1.SVDShaperDigits
164 d_over = evt2.SVDShaperDigits
165 if (len(d_mixed) != len(d_over)):
166 basf2.B2ERROR(
'Lengths of SVDShaperDigit arrays DIFFER!')
168 for d1, d2
in zip(d_mixed, d_over):
170 match = match
and (d1.getSensorID() == d2.getSensorID())
171 match = match
and (d1.isUStrip() == d2.isUStrip())
172 match = match
and (d1.getCellID() == d2.getCellID())
173 for s1, s2
in zip(d1.getSamples(), d2.getSamples()):
174 match = match
and (int(s1) == int(s2))
175 match = match
and (d1.getModeByte() == d2.getModeByte())
179 basf2.B2ERROR(
'Digits do not match.')
183 basf2.B2INFO(
'Processed {0} matching digits.'.format(n_good))