12 from ROOT
import Belle2
13 from unittest
import TestCase
14 from ROOT
import gRandom
18 logLevel = LogLevel.INFO
21 eclDigitsDatastoreName =
'ECLDigits'
22 unpackerOutputDatastoreName =
'someECLUnpackerDatastoreName'
29 Adds ECLDigits with very large/small time/amplitude values
35 amps = [0, 1, 100000, 262015]
36 times = [-2048, -100, 0, 100, 2047]
37 qualitys = [0, 1, 2, 3]
38 chis = [0, 1, 254, 511]
39 paramNames = [
"amp",
"time",
"quality",
"chi"]
41 self.
digitParams = [dict(zip(paramNames, params))
for params
in itertools.product(amps, times, qualitys, chis)]
50 usedCellIds = list(map(
lambda eclDigit: eclDigit.getCellId(), eclDigitsFromSimulation))
55 if (digitParam[
'quality']
is not 2)
and (digitParam[
'chi']
is not 0):
59 if (digitParam[
'quality']
is 2)
and (digitParam[
'time']
is not 0):
63 cellId = int(gRandom.Uniform(1, 8736))
64 while cellId
in usedCellIds:
65 cellId = int(gRandom.Uniform(1, 8736))
67 usedCellIds.append(cellId)
72 eclDigit.setCellId(cellId)
73 eclDigit.setAmp(digitParam[
'amp'])
74 eclDigit.setTimeFit(digitParam[
'time'])
75 eclDigit.setQuality(digitParam[
'quality'])
76 eclDigit.setChi(digitParam[
'chi'])
79 newDigit = eclDigitsFromSimulation.appendNew()
80 newDigit.__assign__(eclDigit)
85 module which checks if two collections of ECLDigits are equal
89 """ use a some information to sort the ECLDigits list
90 Returns a python-list containing the ECLDigits
93 py_list = [x
for x
in unsortedPyStoreArray]
111 if not len(eclDigitsFromSimulation_unsorted) == len(eclDigitsPackedUnpacked_unsorted):
112 B2FATAL(
"Different number of ECLDigits from simulation and after packing+unpacking")
114 eclDigitsPackedUnpacked = self.
sortECLDigits(eclDigitsPackedUnpacked_unsorted)
115 eclDigitsFromSimulation = self.
sortECLDigits(eclDigitsFromSimulation_unsorted)
117 tc = TestCase(
'__init__')
120 for idx
in range(len(eclDigitsPackedUnpacked)):
121 digit = eclDigitsFromSimulation[idx]
122 digitPackedUnpacked = eclDigitsPackedUnpacked[idx]
124 B2DEBUG(5,
'MC digit: cellid = ' +
125 str(digit.getCellId()) +
127 str(digit.getAmp()) +
129 str(digit.getTimeFit()) +
131 str(digit.getQuality()) +
133 str(digit.getChi()) +
134 '\nUnpackedDigit: cellid = ' +
135 str(digitPackedUnpacked.getCellId()) +
137 str(digitPackedUnpacked.getAmp()) +
139 str(digitPackedUnpacked.getTimeFit()) +
141 str(digitPackedUnpacked.getQuality()) +
143 str(digitPackedUnpacked.getChi()))
145 tc.assertEqual(digit.getCellId(), digitPackedUnpacked.getCellId())
146 tc.assertEqual(digit.getAmp(), digitPackedUnpacked.getAmp())
147 tc.assertEqual(digit.getTimeFit(), digitPackedUnpacked.getTimeFit())
148 tc.assertEqual(digit.getQuality(), digitPackedUnpacked.getQuality())
149 tc.assertEqual(digit.getChi(), digitPackedUnpacked.getChi())
154 eventinfosetter = register_module(
'EventInfoSetter')
155 eventinfosetter.param({
'evtNumList': [10]})
156 main.add_module(eventinfosetter)
159 particlegun = register_module(
'ParticleGun')
160 particlegun.param(
'pdgCodes', [13, -13])
161 particlegun.param(
'nTracks', 10)
162 main.add_module(particlegun)
166 set_module_parameters(main, type=
"Geometry", useDB=
False, components=[
"ECL"])
172 ecl_packer = register_module(
'ECLPacker')
173 main.add_module(ecl_packer)
176 ecl_unpacker = register_module(
'ECLUnpacker')
178 ecl_unpacker.param(
'ECLDigitsName', unpackerOutputDatastoreName)
179 main.add_module(ecl_unpacker)
183 main.add_module(eclPackUnpackerChecker, logLevel=logLevel)