14 <contact>software-tracking@belle2.org</contact>
15 <output>ROIFindingValidation.root</output>
17 This module validates the ROI Finding module.
23 from tracking
import add_tracking_for_PXDDataReduction_simulation
25 from ROOT
import Belle2
29 from svd
import add_svd_reconstruction
30 from simulation
import add_simulation
32 CONTACT =
'software-tracking@belle2.org'
35 OUTPUT_FILE =
'ROIFindingTrackingValidation.root'
41 basf2.set_random_seed(1509)
46 """Module to collect information about the ROIs (PXDIntercepts & ROIs) and to
47 generate validation plots on the performance of the ROIFinding module."""
53 output_file_name=None,
77 """Receive signal at the start of event processing"""
85 self.
drfdrf = collections.deque()
100 ''' ROIs quantities'''
106 sensor = roi.getSensorID()
107 if(sensor.getLayerNumber() == 1):
108 nL1_ROI = nL1_ROI + 1
110 nL2_ROI = nL2_ROI + 1
112 self.
nROIs_L1nROIs_L1.append(nL1_ROI)
113 self.
nROIs_L2nROIs_L2.append(nL2_ROI)
115 self.
nROIsnROIs = self.
nROIsnROIs + rois.getEntries()
117 '''Data Reduction Factor '''
122 self.
drfdrf.append(len(in_pxd) / len(tot_pxd))
124 ''' PXDIntercepts Statistical Error '''
128 if(sensor.getLayerNumber() == 1):
129 self.
statU_L1statU_L1.append(inter.getSigmaU())
130 self.
statV_L1statV_L1.append(inter.getSigmaV())
132 self.
statU_L2statU_L2.append(inter.getSigmaU())
133 self.
statV_L2statV_L2.append(inter.getSigmaV())
136 """Receive signal at the end of event processing"""
139 basf2.B2RESULT(
"total nROIs = {}".format(self.
nROIsnROIs))
143 output_tfile = ROOT.TFile(self.
output_file_nameoutput_file_name,
'recreate')
146 h_nROIs_L1.hist(self.
nROIs_L1nROIs_L1, bins=100, lower_bound=0, upper_bound=100)
147 h_nROIs_L1.contact = contact
148 h_nROIs_L1.check =
'average of 25 +/- 10 is expected'
149 h_nROIs_L1.description =
'ROIs on L1'
150 h_nROIs_L1.title =
'ROIs on L1'
151 h_nROIs_L1.xlabel =
'number of ROIs'
152 h_nROIs_L1.ylabel =
''
153 h_nROIs_L1.write(output_tfile)
156 h_nROIs_L2.hist(self.
nROIs_L2nROIs_L2, bins=100, lower_bound=0, upper_bound=100)
157 h_nROIs_L2.contact = contact
158 h_nROIs_L2.check =
'average of 25 +/- 10 is expected'
159 h_nROIs_L2.description =
'ROIs on L2'
160 h_nROIs_L2.title =
'ROIs on L2'
161 h_nROIs_L2.xlabel =
'number of ROIs'
162 h_nROIs_L2.ylabel =
''
163 h_nROIs_L2.write(output_tfile)
166 h_drf.hist(self.
drfdrf, bins=100, lower_bound=0, upper_bound=1)
167 h_drf.contact = contact
168 h_drf.check =
'with no bkg, the average should be around 70%'
169 h_drf.description =
'Fraction of PXDDDigits inside ROIs'
170 h_drf.title =
'Fraction of PXDDDigits inside ROIs'
173 h_drf.write(output_tfile)
176 h_statU_L1.hist(self.
statU_L1statU_L1, bins=100, lower_bound=0, upper_bound=0.2)
177 h_statU_L1.contact = contact
178 h_statU_L1.check =
'average should be around 0.021 cm'
179 h_statU_L1.description =
'Statistical Error of the Intercept on L1 planes, along U'
180 h_statU_L1.title =
'L1 Intercept Statistical Uncertainity along U'
181 h_statU_L1.xlabel =
'U stat uncertainity'
182 h_statU_L1.ylabel =
''
183 h_statU_L1.write(output_tfile)
186 h_statV_L1.hist(self.
statV_L1statV_L1, bins=100, lower_bound=0, upper_bound=0.2)
187 h_statV_L1.contact = contact
188 h_statV_L1.check =
'average should be around 0.021 cm'
189 h_statV_L1.description =
'Statistical Error of the Intercept on L1 planes, along V'
190 h_statV_L1.title =
'L1 Intercept Statistical Uncertainity along V'
191 h_statV_L1.xlabel =
'V stat uncertainity (cm)'
192 h_statV_L1.ylabel =
''
193 h_statV_L1.write(output_tfile)
196 h_statU_L2.hist(self.
statU_L2statU_L2, bins=100, lower_bound=0, upper_bound=0.2)
197 h_statU_L2.contact = contact
198 h_statU_L2.check =
'average should be around 0.015 cm'
199 h_statU_L2.description =
'Statistical Error of the Intercept on L2 planes, along U'
200 h_statU_L2.title =
'L2 Intercept Statistical Uncertainity along U'
201 h_statU_L2.xlabel =
'U stat uncertainity (cm)'
202 h_statU_L2.ylabel =
''
203 h_statU_L2.write(output_tfile)
206 h_statV_L2.hist(self.
statV_L2statV_L2, bins=100, lower_bound=0, upper_bound=0.2)
207 h_statV_L2.contact = contact
208 h_statV_L2.check =
'average should be around 0.016 cm'
209 h_statV_L2.description =
'Statistical Error of the Intercept on L2 planes, along V'
210 h_statV_L2.title =
'L2 Intercept Statistical Uncertainity along V'
211 h_statV_L2.xlabel =
'V stat uncertainity (cm)'
212 h_statV_L2.ylabel =
''
213 h_statV_L2.write(output_tfile)
220 path = basf2.create_path()
222 path.add_module(
'EventInfoSetter', evtNumList=N_EVENTS)
223 path.add_module(
'EvtGenInput')
224 add_simulation(path, forceSetPXDDataReduction=
True, usePXDDataReduction=
False)
225 add_svd_reconstruction(path, isROIsimulation=
True)
231 pxd_unfiltered_digits =
'PXDDigits'
232 pxd_filtered_digits =
'filteredPXDDigits'
235 svd_reco_tracks =
'__ROIsvdRecoTracks'
236 add_tracking_for_PXDDataReduction_simulation(path, [
'SVD',
'CDC'],
'__ROIsvdClusters')
239 pxdDataRed = basf2.register_module(
'PXDROIFinder')
241 'recoTrackListName': svd_reco_tracks,
242 'PXDInterceptListName':
'PXDIntercepts',
243 'ROIListName':
'ROIs',
244 'tolerancePhi': 0.15,
253 pxdDataRed.param(param_pxdDataRed)
254 path.add_module(pxdDataRed)
257 pxd_digifilter = basf2.register_module(
'PXDdigiFilter')
258 pxd_digifilter.param(
'ROIidsName',
'ROIs')
259 pxd_digifilter.param(
'PXDDigitsName', pxd_unfiltered_digits)
260 pxd_digifilter.param(
'PXDDigitsInsideROIName', pxd_filtered_digits)
261 pxd_digifilter.param(
'PXDDigitsOutsideROIName',
'PXDDigitsOutside')
262 path.add_module(pxd_digifilter)
265 path.add_module(ROIValidationPlots)
267 path.add_module(
'Progress')
a (simplified) python wrapper for StoreArray.
Class to uniquely identify a any structure of the PXD and SVD.
nPXDDigitsIN
count the number of PXDDigits inside the ROIs
nPXDDigits
count the number of PXDDigits
nROIs_L1
list of the number of ROIs in PXD layer 1
def __init__(self, name='', contact='', output_file_name=None, nROIs=0)
theta_phi_L1
list of the hit angular information in PXD layer 1
statV_L2
list of the v-coordinate sigma in PXD layer 2
drf
list of the ratios of filter to all PXD hits
nROIs_L2
list of the number of ROIs in PXD layer 2
statU_L1
list of the u-coordinate sigma in PXD layer 1
statV_L1
list of the v-coordinate sigma in PXD layer 1
statU_L2
list of the u-coordinate sigma in PXD layer 2
validation_name
name of this validation output
nROIs
count the number of ROIs