5 from ROOT
import Belle2
9 def add_pxd_unpacker(path):
10 pxdunpacker = register_module(
'PXDUnpacker')
11 path.add_module(pxdunpacker)
13 pxderrorcheck = register_module(
'PXDPostErrorChecker')
14 path.add_module(pxderrorcheck)
16 pxdhitsorter = register_module(
'PXDRawHitSorter')
17 path.add_module(pxdhitsorter)
18 if 'ActivatePXDPixelMasker' not in [e.name()
for e
in path.modules()]:
19 path.add_module(
'ActivatePXDPixelMasker')
22 def add_pxd_packer(path):
23 pxdpacker = register_module(
'PXDPacker')
24 pxdpacker.param(
'dhe_to_dhc', [
91 path.add_module(pxdpacker)
94 def add_pxd_reconstruction(path, clusterName=None, digitsName=None, usePXDClusterShapes=False):
96 if usePXDClusterShapes:
97 if 'ActivatePXDClusterPositionEstimator' not in [e.name()
for e
in path.modules()]:
98 shape_activator = register_module(
'ActivatePXDClusterPositionEstimator')
99 shape_activator.set_name(
'ActivatePXDClusterPositionEstimator')
100 path.add_module(shape_activator)
102 if 'PXDClusterizer' not in [e.name()
for e
in path.modules()]:
103 clusterizer = register_module(
'PXDClusterizer')
104 clusterizer.set_name(
'PXDClusterizer')
106 clusterizer.param(
'Clusters', clusterName)
108 clusterizer.param(
'Digits', digitsName)
109 path.add_module(clusterizer)
112 def add_pxd_simulation(path, digitsName=None, activatePixelMasks=True, activateGainCorrection=True):
114 if activatePixelMasks
and 'ActivatePXDPixelMasker' not in [e.name()
for e
in path.modules()]:
115 path.add_module(
'ActivatePXDPixelMasker')
116 if activateGainCorrection
and 'ActivatePXDGainCalibrator' not in [e.name()
for e
in path.modules()]:
117 path.add_module(
'ActivatePXDGainCalibrator')
119 digitizer = register_module(
'PXDDigitizer')
121 digitizer.param(
'Digits', digitsName)
122 path.add_module(digitizer)
125 def add_pxd_fullframe(path, min_ladders=(1, 1), max_ladders=(8, 12)):
128 min_ladder = min_ladders[layer - 1]
129 max_ladder = max_ladders[layer - 1]
130 for ladder
in range(min_ladder, max_ladder + 1):
131 for sensor
in [1, 2]:
132 modules.append((layer, ladder, sensor))
134 for (layer, ladder, sensor)
in modules:
135 path.add_module(
'ROIGenerator', ROIListName=
'ROIs', nROIs=1, TrigDivider=1,
136 Layer=layer, Ladder=ladder, Sensor=sensor,
137 MinU=0, MaxU=249, MinV=0, MaxV=767)
140 def add_pxd_fullframe_phase3_early(path):
141 add_pxd_fullframe(path, min_ladders=(1, 4), max_ladders=(8, 5))
144 def add_pxd_percentframe(path, min_ladders=(1, 1), max_ladders=(8, 12), fraction=0.1, random_position=
False):
147 min_ladder = min_ladders[layer - 1]
148 max_ladder = max_ladders[layer - 1]
149 for ladder
in range(min_ladder, max_ladder + 1):
150 for sensor
in [1, 2]:
151 modules.append((layer, ladder, sensor))
155 s = math.sqrt(fraction)
156 MinU = max(0, int(250 / 2 * (1 - 0.5 * s)))
158 MinV = max(0, int(768 / 2 * (1 - 2.0 * s)))
161 for (layer, ladder, sensor)
in modules:
162 path.add_module(
'ROIGenerator', ROIListName=
'ROIs', nROIs=1, TrigDivider=1,
163 Layer=layer, Ladder=ladder, Sensor=sensor,
164 MinU=MinU, MaxU=MaxU, MinV=MinV, MaxV=MaxV, Random=random_position)
167 def add_pxd_percentframe_phase3_early(path, fraction=0.1, random_position=False):
168 add_pxd_percentframe(path, min_ladders=(1, 4), max_ladders=(8, 5), fraction=fraction, random_position=random_position)
171 def add_roi_payload_assembler(path, ignore_hlt_decision):
172 path.add_module(
'ROIPayloadAssembler',
173 ROIListName=
'ROIs', ROIpayloadName=
'ROIpayload',
174 SendAllDownscaler=0, SendROIsDownscaler=1,
175 AcceptAll=ignore_hlt_decision, NoRejectFlag=
False)
178 def add_roi_finder(path):
180 Add the PXDDataReduction module to preserve the tracking informaiton for ROI calculation
181 :param path: The path to which the module should be added
182 :param calcROIs: True: turn on the ROI calculation, False: turn off
185 path.add_module(
'PXDROIFinder', recoTrackListName=
'RecoTracks',
186 PXDInterceptListName=
'PXDIntercepts', ROIListName=
'ROIs',
187 tolerancePhi=0.15, toleranceZ=0.5,
188 sigmaSystU=0.02, sigmaSystV=0.02,
189 numSigmaTotU=10, numSigmaTotV=10,
190 maxWidthU=0.5, maxWidthV=0.5)