40 ModulePatterns=[[-2,2,0,99,-99,99,-99,99,0,9999,0,1,0]],
41 DefectProbabilities=[[0.,1e-2,1e-1,0.]],
42 NDefectFractionsPerPattern=[[1.,-1, 1.]],
45 CornerDefectParamsPerPattern=[],
46 NCornerDefectFractionsPerPattern=[],
47 RngPerDefectType=False,
49 DefectsOutputFile=None,
50 FillHistogramsPerPattern=False,
51 FillEtaPhiHistogramsPerPattern=False,
52 MaxRandomPositionAttempts: int=10,
53 HistogramGroupName: str=
"ITkPixelDefects",
54 HistogramFileName: str=
"itk_pixel_defects_opt1.root",
55 PropagateDefectsToStatus=
True) :
57 Schedule conditions algorithm for emulated ITk pixel defects, and algorithms to drop RDOs overlapping with the emulated defects.
58 ModulePattern: criteria to match modules, which are lists of n-tuples where every two numbers of each n-tuple define a range
59 to match parts of module identifiers (barrel/ec, layer/disk, eta., phi, columns, side) plus a flag (last
60 element of each n-tuple), which is unused for pixel.
61 DefectProbabilities: list of n-tuples per criterion containing 4 probabilities: module, pixel to be defect, a module
62 to have at least one core column defect, circuit defect.
63 NDefectFractionsPerPattern: Fractions of exactly n-group defects (core-column, circuit) under condition that there is at least one
64 such group defect. There must be one n-tuple with fractions per criterion, and each fraction
65 n-tuple must contain for each group defect probability a non empty set of fractions of exactly 1, ... n defects.
66 Fractions for different group defects are separated by -1. There should be two sequences of
67 positive fractions separated by -1.
68 NoiseProbability: Empty or probabilities of a pixel to produce a spurious hit.
69 NoiseShape: binned PDF (i.e. list of fractions) to create tot values for spurious hits.
70 CornerDefectParamsPerPattern: parameters for corner defects per pattern can be created with e.g. makeCornerDefectParam
71 NCornerDefectFractionsPerPattern: fractions of 1,..4 corner defects
72 FillHistogramsPerPattern: if True histograms are filled per module pattern
73 FillEtaPhiHistogramsPerPattern: if True also fill xy, and rz histograms of defects per module.
74 HistogramGroupName: None (disables histogramming) or the histogram group name must be unique
75 HistogramFileName: None (disables histogramming) or a file name for writing the histograms.
78 from InDetDefectsEmulation.PixelDefectsEmulatorConfig
import (
79 ITkPixelDefectsEmulatorCondAlgCfg,
80 ITkPixelDefectsEmulatorAlgCfg,
81 ITkPixelDefectsEmulatorToDetectorElementStatusCondAlgCfg,
86 if HistogramFileName
is None or len(HistogramFileName) ==0 :
87 HistogramGroupName =
None
88 if HistogramGroupName
is not None :
89 cfg.merge( DefectsHistSvcCfg(flags, HistogramGroup=HistogramGroupName, FileName=HistogramFileName))
92 cfg.merge( ITkPixelDefectsEmulatorCondAlgCfg(flags,
94 HistogramGroupName=f
"/{HistogramGroupName}/EmulatedDefects/" if HistogramGroupName
is not None else "",
95 ModulePatterns = ModulePatterns,
96 DefectProbabilities = DefectProbabilities,
97 NDefectFractionsPerPattern = NDefectFractionsPerPattern,
98 MaxRandomPositionAttempts=MaxRandomPositionAttempts,
99 CornerDefectParamsPerPattern=CornerDefectParamsPerPattern,
100 NCornerDefectFractionsPerPattern=NCornerDefectFractionsPerPattern,
101 RngPerDefectType=RngPerDefectType,
102 DefectsInputFiles=DefectsInputFiles,
103 DefectsOutputFile=DefectsOutputFile,
104 FillHistogramsPerPattern=FillHistogramsPerPattern,
105 FillEtaPhiHistogramsPerPattern=FillEtaPhiHistogramsPerPattern,
106 CheckerBoardDefects=
False,
109 WriteKey=
"ITkPixelEmulatedDefects",
113 cfg.merge( ITkPixelDefectsEmulatorAlgCfg(flags,
115 EmulatedDefectsKey=
"ITkPixelEmulatedDefects",
116 ModulePatterns = ModulePatterns,
117 NoiseProbability = NoiseProbability,
118 NoiseShape = NoiseShape,
120 HistogramGroupName=f
"/{HistogramGroupName}/RejectedRDOs/" if HistogramGroupName
is not None else "",
123 if PropagateDefectsToStatus :
125 cfg.merge(ITkPixelDefectsEmulatorToDetectorElementStatusCondAlgCfg(flags,
126 name=
"ITkPixelDefectsEmulatorToDetectorElementStatusCondAlg",
127 EmulatedDefectsKey=
"ITkPixelEmulatedDefects",
128 WriteKey=
"ITkPixelDetectorElementStatusFromEmulatedDefects"))
129 pixel_det_el_status_cond_alg=cfg.getCondAlgo(
"ITkPixelDetectorElementStatusCondAlgNoByteStreamErrors")
130 pixel_det_el_status_cond_alg.ConditionsSummaryTool.PixelDetElStatusCondDataBaseKey=
"ITkPixelDetectorElementStatusFromEmulatedDefects"
135 DefectProbabilities=None,
136 NDefectFractionsPerPattern=None,
137 RngPerDefectType=False,
138 DefectsInputFiles=[],
139 DefectsOutputFile=None,
140 FillHistogramsPerPattern=False,
141 FillEtaPhiHistogramsPerPattern=False,
142 HistogramGroupName: str=
"PixelDefects",
143 HistogramFileName: str=
"pixel_defects.root") :
145 Schedule algorithms to emulate run3 pixel defects, and algorithm to drop RDOs which overlap with these defects
147 from InDetDefectsEmulation.PixelDefectsEmulatorConfig
import (
148 PixelDefectsEmulatorCondAlgCfg,
149 PixelDefectsEmulatorAlgCfg,
154 if HistogramFileName
is None or len(HistogramFileName) ==0 :
155 HistogramGroupName =
None
156 if HistogramGroupName
is not None :
157 cfg.merge( DefectsHistSvcCfg(flags, HistogramGroup=HistogramGroupName, FileName=HistogramFileName))
159 if ModulePatterns
is None and DefectProbabilities
is None and NDefectFractionsPerPattern
is None:
160 a_module_pattern_list, a_prob_list,fractions,ignore_NoiseProbability,ignore_NoiseShape, cornerDefectParam, cornerDefectFractions = combineModuleDefects([
161 moduleDefect(bec=[-2,-2],layer=[0,99], phi_range=[-99,99],eta_range=[-99,99],
162 columns_or_strips=[0,9999],
171 ModulePatterns = a_module_pattern_list
172 DefectProbabilities = a_prob_list
173 NDefectFractionsPerPattern = fractions
176 cfg.merge( PixelDefectsEmulatorCondAlgCfg(flags,
177 ModulePatterns = ModulePatterns,
178 DefectProbabilities = DefectProbabilities,
179 NDefectFractionsPerPattern = NDefectFractionsPerPattern,
180 CornerDefectParamsPerPattern=cornerDefectParam,
181 NCornerDefectFractionsPerPattern=cornerDefectFractions,
182 RngPerDefectType=RngPerDefectType,
183 DefectsInputFiles=DefectsInputFiles,
184 DefectsOutputFile=DefectsOutputFile,
185 FillHistogramsPerPattern=FillHistogramsPerPattern,
186 FillEtaPhiHistogramsPerPattern=FillEtaPhiHistogramsPerPattern,
188 HistogramGroupName=f
"/{HistogramGroupName}/EmulatedDefects/" if HistogramGroupName
is not None else "",
189 WriteKey=
"PixelEmulatedDefects",
193 cfg.merge( PixelDefectsEmulatorAlgCfg(flags,
195 EmulatedDefectsKey=
"PixelEmulatedDefects",
197 HistogramGroupName=f
"/{HistogramGroupName}/RejectedRDOs/" if HistogramGroupName
is not None else "",
236 circuit_cc_defect_prob,
238 pixel_defect_prob=1e-2,
239 module_defect_prob=0.,
241 noiseProbability=None,
244 Create different defects for quads and single chip modules, where the corresponding modules are selected by
245 the number of offline columns
252 corner_defects=makeCornerDefectParam(probability=cornerDefectProb,
254 min_ry=0.5,max_ry=1.5,
255 min_sagitta=0.2,max_sagitta=0.5)
260 corner_defect_n_defect_corners=
poissonFractions(cc_defect_prob=15e-2, max_n=4)
262 return combineModuleDefects([
263 moduleDefect(bec=[-2,2],layer=[0,99], phi_range=[-99,99],eta_range=[-99,99],
264 columns_or_strips=[800,800],
267 probability=[module_defect_prob,
272 fractionsOfNDefects=[[1.], quad_fractions,[1.]],
273 noiseProbability=noiseProbability,
274 noiseShape=noiseShape,
275 cornerDefectParam=[],
276 cornerDefectNCornerFractions=[]
278 moduleDefect(bec=[-2,2],layer=[0,1], phi_range=[-99,99],eta_range=[-99,99],
279 columns_or_strips=[384,384],
282 probability=[module_defect_prob,
284 circuit_cc_defect_prob,
287 fractionsOfNDefects=[[1.], circuit_fractions,[1.]],
288 noiseProbability=noiseProbability,
289 noiseShape=noiseShape,
290 cornerDefectParam=corner_defects,
291 cornerDefectNCornerFractions=corner_defect_n_defect_corners,
293 moduleDefect(bec=[-2,2],layer=[0,1], phi_range=[-99,99],eta_range=[-99,99],
294 columns_or_strips=[200,200],
297 probability=[module_defect_prob,
299 circuit_cc_defect_prob,
302 fractionsOfNDefects=[[1.],circuit_fractions,[1.]],
303 noiseProbability=noiseProbability,
304 noiseShape=noiseShape,
305 cornerDefectParam=corner_defects,
306 cornerDefectNCornerFractions=corner_defect_n_defect_corners,
334 FrontEndCCDefectProb=0.1,
335 PixelDefectProb=1e-2,
340 RngPerDefectType=False,
341 DefectsInputFiles=[],
342 DefectsOutputFile=None,
343 PropagateDefectsToStatus=True,
344 HistogramFileName=None) :
346 Create exactly one core column defect per module where the probability is given
347 by module_prob, and create single pixel defects according to pixel_defect_prob
351 ModulePatterns, DefectProbabilities, NDefectFractionsPerPattern, NoiseProbability, NoiseShape,cornerDefectParam,cornerDefectFractions =
makeITkDefectsParams(
352 quad_cc_defect_prob=
quadProb(FrontEndCCDefectProb),
353 quad_fractions=fractions,
354 circuit_cc_defect_prob=FrontEndCCDefectProb,
355 circuit_fractions=fractions,
356 pixel_defect_prob=PixelDefectProb,
357 module_defect_prob=ModuleDefectProb,
358 cornerDefectProb=CornerDefectProb,
359 noiseProbability=noiseProbabilitySingle,
360 noiseShape=noiseShapeSingle)
364 ModulePatterns=ModulePatterns,
365 DefectProbabilities=DefectProbabilities,
366 NDefectFractionsPerPattern=NDefectFractionsPerPattern,
367 NoiseProbability=NoiseProbability,
368 NoiseShape=NoiseShape,
369 CornerDefectParamsPerPattern=cornerDefectParam,
370 NCornerDefectFractionsPerPattern=cornerDefectFractions,
371 RngPerDefectType=RngPerDefectType,
372 DefectsInputFiles=DefectsInputFiles,
373 DefectsOutputFile=DefectsOutputFile,
374 FillHistogramsPerPattern=
True,
375 FillEtaPhiHistogramsPerPattern=
True,
376 PropagateDefectsToStatus=PropagateDefectsToStatus,
377 HistogramFileName=HistogramFileName)
382 FrontEndCCDefectProb=0.1,
383 PixelDefectProb=1e-2,
387 RngPerDefectType=False,
388 DefectsInputFiles=[],
389 DefectsOutputFile=None,
390 PropagateDefectsToStatus=True,
391 HistogramFileName=None) :
393 Create Poisson distributed core column defects per module where the probability for at least one
394 core column defect is given by front_end_cc_defect_prob for single chip modules and larger for
395 quads, respectively. Single pixel defects are controlled by pixel_defect_prob
398 quad_prob=
quadProb(FrontEndCCDefectProb)
399 ModulePatterns, DefectProbabilities, NDefectFractionsPerPattern, NoiseProbability, NoiseShape,cornerDefectParam,cornerDefectFractions =
makeITkDefectsParams(
400 quad_cc_defect_prob=quad_prob,
402 circuit_cc_defect_prob=FrontEndCCDefectProb,
404 pixel_defect_prob=PixelDefectProb,
405 module_defect_prob=ModuleDefectProb,
406 cornerDefectProb=CornerDefectProb,
407 noiseProbability=noiseProbabilitySingle,
408 noiseShape=noiseShapeSingle)
412 ModulePatterns=ModulePatterns,
413 DefectProbabilities=DefectProbabilities,
414 NDefectFractionsPerPattern=NDefectFractionsPerPattern,
415 NoiseProbability=NoiseProbability,
416 NoiseShape=NoiseShape,
417 CornerDefectParamsPerPattern=cornerDefectParam,
418 NCornerDefectFractionsPerPattern=cornerDefectFractions,
419 RngPerDefectType=RngPerDefectType,
420 DefectsInputFiles=DefectsInputFiles,
421 DefectsOutputFile=DefectsOutputFile,
422 FillHistogramsPerPattern=
True,
423 FillEtaPhiHistogramsPerPattern=
True,
424 PropagateDefectsToStatus=PropagateDefectsToStatus,
425 HistogramFileName=HistogramFileName)
429 FrontEndCCDefectProb=0.1,
430 PixelDefectProb=1e-2,
431 ModuleDefectProb=1e-2,
432 CornerDefectProb=15e-2,
434 RngPerDefectType=False,
435 DefectsInputFiles=[],
436 DefectsOutputFile=None,
437 PropagateDefectsToStatus=True,
438 HistogramFileName=None) :
440 Enables all defects according to the current expectation.
443 FrontEndCCDefectProb,
448 RngPerDefectType=RngPerDefectType,
449 DefectsInputFiles=DefectsInputFiles,
450 DefectsOutputFile=DefectsOutputFile,
451 PropagateDefectsToStatus=PropagateDefectsToStatus,
452 HistogramFileName=HistogramFileName)
emulateITkPixelDefectsOneCC(flags, cfg, FrontEndCCDefectProb=0.1, PixelDefectProb=1e-2, NumberOfCCDefects=1, ModuleDefectProb=0., CornerDefectProb=0., NoiseProb=0., RngPerDefectType=False, DefectsInputFiles=[], DefectsOutputFile=None, PropagateDefectsToStatus=True, HistogramFileName=None)
emulateITkPixelDefectsDefault(flags, cfg, FrontEndCCDefectProb=0.1, PixelDefectProb=1e-2, ModuleDefectProb=1e-2, CornerDefectProb=15e-2, NoiseProb=0., RngPerDefectType=False, DefectsInputFiles=[], DefectsOutputFile=None, PropagateDefectsToStatus=True, HistogramFileName=None)
emulateITkPixelDefectsPoisson(flags, cfg, FrontEndCCDefectProb=0.1, PixelDefectProb=1e-2, ModuleDefectProb=0., CornerDefectProb=0., NoiseProb=0., RngPerDefectType=False, DefectsInputFiles=[], DefectsOutputFile=None, PropagateDefectsToStatus=True, HistogramFileName=None)
makeITkDefectsParams(quad_cc_defect_prob, quad_fractions, circuit_cc_defect_prob, circuit_fractions, pixel_defect_prob=1e-2, module_defect_prob=0., cornerDefectProb=0., noiseProbability=None, noiseShape=[])
emulateITkPixelDefects(flags, cfg, ModulePatterns=[[-2, 2, 0, 99,-99, 99,-99, 99, 0, 9999, 0, 1, 0]], DefectProbabilities=[[0., 1e-2, 1e-1, 0.]], NDefectFractionsPerPattern=[[1.,-1, 1.]], NoiseProbability=[], NoiseShape=[], CornerDefectParamsPerPattern=[], NCornerDefectFractionsPerPattern=[], RngPerDefectType=False, DefectsInputFiles=[], DefectsOutputFile=None, FillHistogramsPerPattern=False, FillEtaPhiHistogramsPerPattern=False, int MaxRandomPositionAttempts=10, str HistogramGroupName="ITkPixelDefects", str HistogramFileName="itk_pixel_defects_opt1.root", PropagateDefectsToStatus=True)
emulatePixelDefects(flags, cfg, ModulePatterns=None, DefectProbabilities=None, NDefectFractionsPerPattern=None, RngPerDefectType=False, DefectsInputFiles=[], DefectsOutputFile=None, FillHistogramsPerPattern=False, FillEtaPhiHistogramsPerPattern=False, str HistogramGroupName="PixelDefects", str HistogramFileName="pixel_defects.root")