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()
85 Add ECLCalDigits according to self.digitParams
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.
int timeThresh
default time threshold
eclCalDigits
ECLCalDigits datastore.
int energyThresh
default energy threshold
list digitParams
parameters to create custom ECLCalDigits
int eventCounter
count number of times event method is called (each time use different combinations of ECLCalDigits