12Test EventLevelClusteringInfo counting of out of time ECLCalDigits.
14Creates 1 ECLCalDigit in each ECL detector region (FWD, Barrel, BWD).
16The created digits cover all possible combinations of:
17time above threshold for counting
18time below threshold
for counting
19energy above threshold
for counting
20energy below threshold
for counting
22In order to be counted, both energy
and time have to be above threshold
26from ROOT import Belle2
27from unittest import TestCase
30from b2test_utils import skip_test_if_light
36expectOutOfTime = {
"FWD": 0,
"BRL": 0,
"BWD": 0}
41 Add combinations of ECLCalDigits above/below threshold to be counted as out of time
46 Prepare ECLCalDigits parameters
53 aboveEnergyThresh = [True,
False]
54 aboveTimeThresh = [
True,
False]
55 thresholdNames = [
"aboveEnergythresh",
"aboveTimethresh"]
57 thresholdsPerRegion = [dict(zip(thresholdNames, thresholds))
58 for thresholds
in itertools.product(aboveEnergyThresh, aboveTimeThresh)]
60 fwdThresholds, brlThresholds, bwdThresholds = itertools.tee(thresholdsPerRegion, 3)
62 regions = [
"FWD",
"BRL",
"BWD"]
66 for thresholds
in itertools.product(fwdThresholds, brlThresholds, bwdThresholds)]
74 """ module initialize - register ECLCalDigit in datastore """
87 cellId = {
"FWD": 1,
"BRL": 1153,
"BWD": 7777}
98 eclCalDigit = Belle2.ECLCalDigit()
101 eclCalDigit.setCellId(cellId[region])
107 energy = digitParam[region][
"aboveEnergythresh"] * (self.
energyThresh + 1)
108 time = digitParam[region][
"aboveTimethresh"] * (self.
timeThresh + 1)
109 eclCalDigit.setEnergy(energy)
110 eclCalDigit.setTime(time)
113 newDigit = eclCalDigits.appendNew()
114 newDigit.__assign__(eclCalDigit)
117 expectOutOfTime[region] = int(digitParam[region][
"aboveEnergythresh"]
and digitParam[region][
"aboveTimethresh"])
118 b2.B2DEBUG(35, region +
": expecting " + str(expectOutOfTime[region]))
119 b2.B2DEBUG(39,
"region = " + region +
", time = " + str(time) +
", energy = " + str(energy))
127 module which checks the number of out of time digits in EventLevelClusteringInfo
is as expected
136 tc = TestCase(
'__init__')
138 tc.assertEqual(eventLevelClusteringInfo.getNECLCalDigitsOutOfTimeFWD(), expectOutOfTime[
"FWD"])
139 tc.assertEqual(eventLevelClusteringInfo.getNECLCalDigitsOutOfTimeBarrel(), expectOutOfTime[
"BRL"])
140 tc.assertEqual(eventLevelClusteringInfo.getNECLCalDigitsOutOfTimeBWD(), expectOutOfTime[
"BWD"])
141 tc.assertEqual(eventLevelClusteringInfo.getNECLCalDigitsOutOfTime(),
142 expectOutOfTime[
"FWD"] + expectOutOfTime[
"BRL"] + expectOutOfTime[
"BWD"])
145main = b2.create_path()
148eventinfosetter = b2.register_module(
'EventInfoSetter')
149main.add_module(eventinfosetter)
151gearbox = b2.register_module(
'Gearbox')
152main.add_module(gearbox)
154geometry = b2.register_module(
'Geometry', useDB=
False)
155geometry.param(
'components', [
'ECL'])
156main.add_module(geometry)
160addECLCalDigits.logging.log_level = b2.LogLevel.DEBUG
161addECLCalDigits.logging.debug_level = 10
164eventinfosetter.param({
'evtNumList': [len(addECLCalDigits.digitParams)],
'runList': [0]})
166ECLDigitCalibrator = b2.register_module(
'ECLDigitCalibrator')
167main.add_module(ECLDigitCalibrator)
170for param
in ECLDigitCalibrator.available_params():
171 if param.name ==
"backgroundEnergyCut":
172 addECLCalDigits.energyThresh = param.values
173 elif param.name ==
"backgroundTimingCut":
174 addECLCalDigits.timeThresh = param.values
A (simplified) python wrapper for StoreArray.
a (simplified) python wrapper for StoreObjPtr.
eclCalDigits
ECLCalDigits datastore.
digitParams
parameters to create custom ECLCalDigits
eventCounter
count number of times event method is called (each time use different combinations of ECLCalDigits
timeThresh
default time threshold
energyThresh
default energy threshold