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 """
81 eclDigits.registerInDataStore()
90 cellId = {
"FWD": 1,
"BRL": 1153,
"BWD": 7777}
104 eclCalDigit.setCellId(cellId[region])
110 energy = digitParam[region][
"aboveEnergythresh"] * (self.
energyThresh + 1)
111 time = digitParam[region][
"aboveTimethresh"] * (self.
timeThresh + 1)
112 eclCalDigit.setEnergy(energy)
113 eclCalDigit.setTime(time)
116 newDigit = eclCalDigits.appendNew()
117 newDigit.__assign__(eclCalDigit)
120 expectOutOfTime[region] = int(digitParam[region][
"aboveEnergythresh"]
and digitParam[region][
"aboveTimethresh"])
121 b2.B2DEBUG(35, region +
": expecting " + str(expectOutOfTime[region]))
122 b2.B2DEBUG(39,
"region = " + region +
", time = " + str(time) +
", energy = " + str(energy))
130 module which checks the number of out of time digits in EventLevelClusteringInfo
is as expected
139 tc = TestCase(
'__init__')
141 tc.assertEqual(eventLevelClusteringInfo.getNECLCalDigitsOutOfTimeFWD(), expectOutOfTime[
"FWD"])
142 tc.assertEqual(eventLevelClusteringInfo.getNECLCalDigitsOutOfTimeBarrel(), expectOutOfTime[
"BRL"])
143 tc.assertEqual(eventLevelClusteringInfo.getNECLCalDigitsOutOfTimeBWD(), expectOutOfTime[
"BWD"])
144 tc.assertEqual(eventLevelClusteringInfo.getNECLCalDigitsOutOfTime(),
145 expectOutOfTime[
"FWD"] + expectOutOfTime[
"BRL"] + expectOutOfTime[
"BWD"])
148main = b2.create_path()
151eventinfosetter = b2.register_module(
'EventInfoSetter')
152main.add_module(eventinfosetter)
154gearbox = b2.register_module(
'Gearbox')
155main.add_module(gearbox)
157geometry = b2.register_module(
'Geometry', useDB=
False)
158geometry.param(
'components', [
'ECL'])
159main.add_module(geometry)
163addECLCalDigits.logging.log_level = b2.LogLevel.DEBUG
164addECLCalDigits.logging.debug_level = 10
167eventinfosetter.param({
'evtNumList': [len(addECLCalDigits.digitParams)],
'runList': [0]})
169ECLDigitCalibrator = b2.register_module(
'ECLDigitCalibrator')
170main.add_module(ECLDigitCalibrator)
173for param
in ECLDigitCalibrator.available_params():
174 if param.name ==
"backgroundEnergyCut":
175 addECLCalDigits.energyThresh = param.values
176 elif param.name ==
"backgroundTimingCut":
177 addECLCalDigits.timeThresh = param.values
Class to store calibrated ECLDigits: ECLCalDigits.
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