13 <contact>software-tracking@belle2.org</contact>
14 <output>ROIFindingValidation.root</output>
16 This module validates the ROI Finding module.
22 from tracking
import add_tracking_for_PXDDataReduction_simulation
24 from ROOT
import Belle2
28 from svd
import add_svd_reconstruction
29 from simulation
import add_simulation
31 CONTACT =
'software-tracking@belle2.org'
34 OUTPUT_FILE =
'ROIFindingTrackingValidation.root'
40 basf2.set_random_seed(1509)
45 """Module to collect information about the ROIs (PXDIntercepts & ROIs) and to
46 generate validation plots on the performance of the ROIFinding module."""
52 output_file_name=None,
76 """Receive signal at the start of event processing"""
84 self.
drfdrf = collections.deque()
99 ''' ROIs quantities'''
105 sensor = roi.getSensorID()
106 if(sensor.getLayerNumber() == 1):
107 nL1_ROI = nL1_ROI + 1
109 nL2_ROI = nL2_ROI + 1
111 self.
nROIs_L1nROIs_L1.append(nL1_ROI)
112 self.
nROIs_L2nROIs_L2.append(nL2_ROI)
114 self.
nROIsnROIs = self.
nROIsnROIs + rois.getEntries()
116 '''Data Reduction Factor '''
121 self.
drfdrf.append(len(in_pxd) / len(tot_pxd))
123 ''' PXDIntercepts Statistical Error '''
127 if(sensor.getLayerNumber() == 1):
128 self.
statU_L1statU_L1.append(inter.getSigmaU())
129 self.
statV_L1statV_L1.append(inter.getSigmaV())
131 self.
statU_L2statU_L2.append(inter.getSigmaU())
132 self.
statV_L2statV_L2.append(inter.getSigmaV())
135 """Receive signal at the end of event processing"""
138 basf2.B2RESULT(
"total nROIs = {}".format(self.
nROIsnROIs))
142 output_tfile = ROOT.TFile(self.
output_file_nameoutput_file_name,
'recreate')
145 h_nROIs_L1.hist(self.
nROIs_L1nROIs_L1, bins=100, lower_bound=0, upper_bound=100)
146 h_nROIs_L1.contact = contact
147 h_nROIs_L1.check =
'average of 25 +/- 10 is expected'
148 h_nROIs_L1.description =
'ROIs on L1'
149 h_nROIs_L1.title =
'ROIs on L1'
150 h_nROIs_L1.xlabel =
'number of ROIs'
151 h_nROIs_L1.ylabel =
''
152 h_nROIs_L1.write(output_tfile)
155 h_nROIs_L2.hist(self.
nROIs_L2nROIs_L2, bins=100, lower_bound=0, upper_bound=100)
156 h_nROIs_L2.contact = contact
157 h_nROIs_L2.check =
'average of 25 +/- 10 is expected'
158 h_nROIs_L2.description =
'ROIs on L2'
159 h_nROIs_L2.title =
'ROIs on L2'
160 h_nROIs_L2.xlabel =
'number of ROIs'
161 h_nROIs_L2.ylabel =
''
162 h_nROIs_L2.write(output_tfile)
165 h_drf.hist(self.
drfdrf, bins=100, lower_bound=0, upper_bound=1)
166 h_drf.contact = contact
167 h_drf.check =
'with no bkg, the average should be around 70%'
168 h_drf.description =
'Fraction of PXDDDigits inside ROIs'
169 h_drf.title =
'Fraction of PXDDDigits inside ROIs'
172 h_drf.write(output_tfile)
175 h_statU_L1.hist(self.
statU_L1statU_L1, bins=100, lower_bound=0, upper_bound=0.2)
176 h_statU_L1.contact = contact
177 h_statU_L1.check =
'average should be around 0.021 cm'
178 h_statU_L1.description =
'Statistical Error of the Intercept on L1 planes, along U'
179 h_statU_L1.title =
'L1 Intercept Statistical Uncertainity along U'
180 h_statU_L1.xlabel =
'U stat uncertainity'
181 h_statU_L1.ylabel =
''
182 h_statU_L1.write(output_tfile)
185 h_statV_L1.hist(self.
statV_L1statV_L1, bins=100, lower_bound=0, upper_bound=0.2)
186 h_statV_L1.contact = contact
187 h_statV_L1.check =
'average should be around 0.021 cm'
188 h_statV_L1.description =
'Statistical Error of the Intercept on L1 planes, along V'
189 h_statV_L1.title =
'L1 Intercept Statistical Uncertainity along V'
190 h_statV_L1.xlabel =
'V stat uncertainity (cm)'
191 h_statV_L1.ylabel =
''
192 h_statV_L1.write(output_tfile)
195 h_statU_L2.hist(self.
statU_L2statU_L2, bins=100, lower_bound=0, upper_bound=0.2)
196 h_statU_L2.contact = contact
197 h_statU_L2.check =
'average should be around 0.015 cm'
198 h_statU_L2.description =
'Statistical Error of the Intercept on L2 planes, along U'
199 h_statU_L2.title =
'L2 Intercept Statistical Uncertainity along U'
200 h_statU_L2.xlabel =
'U stat uncertainity (cm)'
201 h_statU_L2.ylabel =
''
202 h_statU_L2.write(output_tfile)
205 h_statV_L2.hist(self.
statV_L2statV_L2, bins=100, lower_bound=0, upper_bound=0.2)
206 h_statV_L2.contact = contact
207 h_statV_L2.check =
'average should be around 0.016 cm'
208 h_statV_L2.description =
'Statistical Error of the Intercept on L2 planes, along V'
209 h_statV_L2.title =
'L2 Intercept Statistical Uncertainity along V'
210 h_statV_L2.xlabel =
'V stat uncertainity (cm)'
211 h_statV_L2.ylabel =
''
212 h_statV_L2.write(output_tfile)
219 path = basf2.create_path()
221 path.add_module(
'EventInfoSetter', evtNumList=N_EVENTS)
222 path.add_module(
'EvtGenInput')
223 add_simulation(path, forceSetPXDDataReduction=
True, usePXDDataReduction=
False)
224 add_svd_reconstruction(path, isROIsimulation=
True)
230 pxd_unfiltered_digits =
'PXDDigits'
231 pxd_filtered_digits =
'filteredPXDDigits'
234 svd_reco_tracks =
'__ROIsvdRecoTracks'
235 add_tracking_for_PXDDataReduction_simulation(path, [
'SVD',
'CDC'],
'__ROIsvdClusters')
238 pxdDataRed = basf2.register_module(
'PXDROIFinder')
240 'recoTrackListName': svd_reco_tracks,
241 'PXDInterceptListName':
'PXDIntercepts',
242 'ROIListName':
'ROIs',
244 pxdDataRed.param(param_pxdDataRed)
245 path.add_module(pxdDataRed)
248 pxd_digifilter = basf2.register_module(
'PXDdigiFilter')
249 pxd_digifilter.param(
'ROIidsName',
'ROIs')
250 pxd_digifilter.param(
'PXDDigitsName', pxd_unfiltered_digits)
251 pxd_digifilter.param(
'PXDDigitsInsideROIName', pxd_filtered_digits)
252 pxd_digifilter.param(
'PXDDigitsOutsideROIName',
'PXDDigitsOutside')
253 path.add_module(pxd_digifilter)
256 path.add_module(ROIValidationPlots)
258 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