34 StripDefectProb: float=1e-2,
35 ModuleDefectProb: float=1e-2,
37 MaxRandomPositionAttempts: int=10,
38 RngPerDefectType=
False,
40 DefectsOutputFile=
None,
41 FillHistogramsPerPattern: bool=
True,
42 FillEtaPhiHistogramsPerPattern: bool=
True,
43 HistogramGroupName: str=
"ITkStripDefects",
44 HistogramFileName: str=
None,
45 PropagateDefectsToStatus=
True) :
47 Schedule algorithms to create ITk strip defect conditions data and to emulate
48 defects by dropping ITk strip RDOs overlapping with such defects. ModuleDefectProb controls the number of
49 defect strip modules and DefectProb the number of defect strips. If a strip group is overlapping with
50 a single strip defect, the strip group will be split.
53 from InDetDefectsEmulation.StripDefectsEmulatorConfig
import (
54 ITkStripDefectsEmulatorCondAlgCfg,
55 ITkStripDefectsEmulatorAlgCfg,
56 ITkStripDefectsEmulatorToDetectorElementStatusCondAlgCfg,
63 if HistogramFileName
is None or len(HistogramFileName) ==0 :
64 HistogramGroupName =
None
65 if HistogramGroupName
is not None :
66 cfg.merge(
DefectsHistSvcCfg(flags, HistogramGroup=HistogramGroupName, FileName=HistogramFileName))
70 module_pattern, module_defect_prob, fractions, ignore_NoiseProbability,ignore_NoiseShape, cornerDefectParam, cornerDefectFractions =
combineModuleDefects([
71 moduleDefect(bec=[-2,-2],layer=[0,99], phi_range=[-99,99],eta_range=[-99,99],
74 probability=[ModuleDefectProb,
77 moduleDefect(bec=[-1,1],layer=[0,1], phi_range=[-99,99],eta_range=[-99,99],
80 probability=[ModuleDefectProb,
83 moduleDefect(bec=[-1,1],layer=[2,99], phi_range=[-99,99],eta_range=[-99,99],
86 probability=[ModuleDefectProb,
89 moduleDefect(bec=[2,2],layer=[0,99], phi_range=[-99,99],eta_range=[-99,99],
92 probability=[ModuleDefectProb,
101 return [elm/scale
if scale > 0.
else 0.
for elm
in dist]
102 def gaussDist(mean, width, n) :
103 scale = -1./(2*width)
104 return norm([ math.exp( scale *math.pow(i - mean,2.) )
for i
in range(0,n) ])
106 time_bin_dist = gaussDist(1.51,0.03,3)
110 for length
in [15093,18093,18981,23981,24092,24180,26223,27093,28980,30807,30808,31981,32223,40161,48360,54580,54581,60162] :
112 defects += [
moduleDefect(column_or_strip_length=[length-1,length+1],
114 noiseProbability=NoiseProb * 0.5*( 1 + length / 37627.5 ),
115 noiseShape=time_bin_dist)]
116 module_pattern_noise, ignore_module_defect_prob, ignore_fractions, NoiseProbability,NoiseShape,cornerDefectParam,cornerDefectFractions =
combineModuleDefects(defects)
118 module_pattern_noise=[]
125 HistogramGroupName=f
"/{HistogramGroupName}/StripEmulatedDefects/" if HistogramGroupName
is not None else "",
126 MaxRandomPositionAttempts=MaxRandomPositionAttempts,
127 ModulePatterns=module_pattern,
128 DefectProbabilities=module_defect_prob,
129 CornerDefectParamsPerPattern=[],
130 NCornerDefectFractionsPerPattern=[],
131 RngPerDefectType=RngPerDefectType,
132 DefectsInputFiles=DefectsInputFiles,
133 DefectsOutputFile=DefectsOutputFile,
134 FillHistogramsPerPattern=FillHistogramsPerPattern,
135 FillEtaPhiHistogramsPerPattern=FillEtaPhiHistogramsPerPattern,
136 WriteKey=
"ITkStripEmulatedDefects",
142 EmulatedDefectsKey=
"ITkStripEmulatedDefects",
143 ModulePatterns=module_pattern_noise,
144 NoiseProbability = NoiseProbability,
145 NoiseShape = NoiseShape,
147 HistogramGroupName=f
"/{HistogramGroupName}/StripRejectedRDOs/" if HistogramGroupName
is not None else "",
150 if PropagateDefectsToStatus :
153 name=
"ITkStripDefectsEmulatorToDetectorElementStatusCondAlg",
154 EmulatedDefectsKey=
"ITkStripEmulatedDefects",
155 WriteKey=
"ITkStripDetectorElementStatusFromEmulatedDefects"))
156 strip_det_el_status_cond_alg=cfg.getCondAlgo(
"ITkStripDetectorElementStatusCondAlgNoByteStreamErrors")
157 strip_det_el_status_cond_alg.ConditionsSummaryTool.SCTDetElStatusCondDataBaseKey=
"ITkStripDetectorElementStatusFromEmulatedDefects"
161 StripDefectProb: float=1e-2,
162 ModuleDefectProb: float=1e-2,
164 RngPerDefectType=
False,
165 DefectsInputFiles=[],
166 DefectsOutputFile=
None,
167 HistogramFileName: str=
None,
168 PropagateDefectsToStatus=
True) :
170 StripDefectProb=StripDefectProb,
171 ModuleDefectProb=ModuleDefectProb,
173 RngPerDefectType=RngPerDefectType,
174 DefectsInputFiles=DefectsInputFiles,
175 DefectsOutputFile=DefectsOutputFile,
176 HistogramFileName=HistogramFileName,
177 PropagateDefectsToStatus=PropagateDefectsToStatus)