107def _createDefaultSubFlagsCaloRecGPU():
108 """
109 Generate a new default CaloRecGPU flags domain
110
111 Generates a full suite of CaloRecGPU flags for a specific subdomain, the prefixing of the subdomain is handled by the caller.
112 Sets the most generic default parameters or default parameter lambda function logic for each flag, this can be overridden if needed by specific subdomains.
113 """
114 flags = AthConfigFlags()
115
116
117
118 flags.addFlag('MeasureTimes', False)
119
120
121
122
123 flags.addFlag('FillMissingCells', False)
124 flags.addFlag('MissingCellsToFill', [])
125
126 flags.addFlag('NumPreAllocatedDataHolders', 0)
127
128 flags.addFlag('UseOriginalCriteria', lambda prevFlags: not prevFlags.Calo.TopoCluster.UseGPUCompatibleCriteria)
129
130
131
132
133
134
135 flags.addFlag('SeedThreshold',4.0)
136 flags.addFlag('GrowThreshold',2.0)
137 flags.addFlag('TermThreshold',0.0)
138 flags.addFlag('UseAbsSeedThreshold',True)
139 flags.addFlag('UseAbsGrowThreshold',True)
140 flags.addFlag('UseAbsTermThreshold',True)
141 flags.addFlag('ClusterSize', 'Topo_420')
142
143
144
145
146 flags.addFlag('GrowingCalorimeterNames', ["LAREM", "LARHEC", "LARFCAL", "TILE"])
147 flags.addFlag('GrowingSeedSamplingNames', ["PreSamplerB", "EMB1", "EMB2", "EMB3", "PreSamplerE", "EME1", "EME2", "EME3", "HEC0", "HEC1","HEC2", "HEC3", "TileBar0", "TileBar1", "TileBar2", "TileExt0", "TileExt1", "TileExt2", "TileGap1", "TileGap2", "TileGap3", "FCAL0", "FCAL1", "FCAL2"])
148 flags.addFlag('GrowingNeighborOption',"super3D")
149 flags.addFlag('GrowingRestrictHECIWandFCalNeighbors',False)
150 flags.addFlag('GrowingRestrictPSNeighbors',True)
151 flags.addFlag('GrowingTreatL1PredictedCellsAsGood',True)
152
153 flags.addFlag('GrowingTimeCutSeedThreshold',12.5*ns)
154
155 flags.addFlag('PostGrowingClusterCutClustersInAbsEt', True)
156 flags.addFlag('PostGrowingClusterEnergyCut', -1e-16*MeV)
157
158
159
160
161
162
163
164
165
166
167
168 flags.addFlag('SplittingNeighborOption',"super3D")
169 flags.addFlag('SplittingRestrictHECIWandFCalNeighbors',False)
170 flags.addFlag('SplittingTreatL1PredictedCellsAsGood',True)
171
172 flags.addFlag('SplittingNumberOfCellsCut', 4)
173 flags.addFlag('SplittingEnergyCut', 500 * MeV)
174 flags.addFlag('SplittingSamplingNames',["EMB2", "EMB3", "EME2", "EME3", "FCAL0"])
175 flags.addFlag('SplittingSecondarySamplingNames',["EMB1","EME1", "TileBar0","TileBar1","TileBar2", "TileExt0","TileExt1","TileExt2", "HEC0","HEC1","HEC2","HEC3", "FCAL1","FCAL2"])
176 flags.addFlag('SplittingShareBorderCells',True)
177 flags.addFlag('SplittingEMShowerScale',5.0*cm)
178 flags.addFlag('SplittingUseNegativeClusters', lambda prevFlags: prevFlags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute)
179
180 flags.addFlag('GPUSplittingRestrictPSNeighbors',False)
181
182
183 flags.addFlag('MomentsUseAbsEnergy', lambda prevFlags: prevFlags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute)
184 flags.addFlag('MomentsMaxAxisAngle',20*deg)
185 flags.addFlag('MomentsMinBadLArQuality',4000)
186 MomentsToCalculateOnline=[ "FIRST_PHI",
187 "FIRST_ETA",
188 "SECOND_R",
189 "SECOND_LAMBDA",
190 "DELTA_PHI",
191 "DELTA_THETA",
192 "DELTA_ALPHA",
193 "CENTER_X",
194 "CENTER_Y",
195 "CENTER_Z",
196 "CENTER_MAG",
197 "CENTER_LAMBDA",
198 "LATERAL",
199 "LONGITUDINAL",
200 "ENG_FRAC_EM",
201 "ENG_FRAC_MAX",
202 "ENG_FRAC_CORE",
203 "FIRST_ENG_DENS",
204 "SECOND_ENG_DENS",
205 "ISOLATION",
206 "ENG_BAD_CELLS",
207 "N_BAD_CELLS",
208 "N_BAD_CELLS_CORR",
209 "BAD_CELLS_CORR_E",
210 "BADLARQ_FRAC",
211 "ENG_POS",
212 "SIGNIFICANCE",
213 "CELL_SIGNIFICANCE",
214 "CELL_SIG_SAMPLING",
215 "AVG_LAR_Q",
216 "AVG_TILE_Q",
217 "PTD",
218 "MASS",
219 "SECOND_TIME",
220 "NCELL_SAMPLING" ]
221 MomentsToCalculateOffline = MomentsToCalculateOnline + ["ENG_BAD_HV_CELLS","N_BAD_HV_CELLS"]
222 flags.addFlag('MomentsToCalculate', lambda prevFlags: MomentsToCalculateOnline if prevFlags.Common.isOnline else MomentsToCalculateOffline )
223 flags.addFlag('MomentsMinRLateral',4*cm)
224 flags.addFlag('MomentsMinLLongitudinal',10*cm)
225
226 flags.addFlag('CalibrationUseAbsEnergy', lambda prevFlags: prevFlags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute)
227
228
229
230 flags.addFlag('doTwoGaussianNoise', lambda prevFlags: prevFlags.Calo.TopoCluster.doTwoGaussianNoise)
231
232
233 flags.addFlag('doTimeCut', lambda prevFlags: prevFlags.Calo.TopoCluster.doTimeCut)
234 flags.addFlag('extendTimeCut', lambda prevFlags: prevFlags.Calo.TopoCluster.extendTimeCut)
235
236 flags.addFlag('useUpperLimitForTimeCut', lambda prevFlags: prevFlags.Calo.TopoCluster.useUpperLimitForTimeCut)
237
238 flags.addFlag('timeCutUpperLimit', lambda prevFlags: prevFlags.Calo.TopoCluster.timeCutUpperLimit)
239
240 flags.addFlag('xtalkEM2', lambda prevFlags: prevFlags.Calo.TopoCluster.xtalkEM2)
241 flags.addFlag('xtalkEM2D', lambda prevFlags: prevFlags.Calo.TopoCluster.xtalkEM2D)
242 flags.addFlag('xtalkEM2n', lambda prevFlags: prevFlags.Calo.TopoCluster.xtalkEM2n)
243 flags.addFlag('xtalkEM3', lambda prevFlags: prevFlags.Calo.TopoCluster.xtalkEM3)
244 flags.addFlag('xtalkEMEta', lambda prevFlags: prevFlags.Calo.TopoCluster.xtalkEMEta)
245 flags.addFlag('xtalkDeltaT', lambda prevFlags: prevFlags.Calo.TopoCluster.xtalkDeltaT)
246 flags.addFlag('xtalk2Eratio1', lambda prevFlags: prevFlags.Calo.TopoCluster.xtalk2Eratio1)
247 flags.addFlag('xtalk2Eratio2', lambda prevFlags: prevFlags.Calo.TopoCluster.xtalk2Eratio2)
248 flags.addFlag('xtalk3Eratio', lambda prevFlags: prevFlags.Calo.TopoCluster.xtalk3Eratio)
249 flags.addFlag('xtalkEtaEratio', lambda prevFlags: prevFlags.Calo.TopoCluster.xtalkEtaEratio)
250 flags.addFlag('xtalk2DEratio', lambda prevFlags: prevFlags.Calo.TopoCluster.xtalk2DEratio)
251
252 flags.addFlag('doTopoClusterLocalCalib', lambda prevFlags: prevFlags.Calo.TopoCluster.doTopoClusterLocalCalib)
253 flags.addFlag('doCalibHitMoments', lambda prevFlags: prevFlags.Calo.TopoCluster.doCalibHitMoments)
254
255 flags.addFlag('skipWriteList', lambda prevFlags: prevFlags.Calo.TopoCluster.skipWriteList)
256 flags.addFlag('writeExtendedClusterMoments', lambda prevFlags: prevFlags.Calo.TopoCluster.writeExtendedClusterMoments)
257 flags.addFlag('writeCalibHitClusterMoments', lambda prevFlags: prevFlags.Calo.TopoCluster.writeCalibHitClusterMoments)
258
259 flags.addFlag('addCalibrationHitDecoration', lambda prevFlags: prevFlags.Calo.TopoCluster.addCalibrationHitDecoration)
260 flags.addFlag('CalibrationHitDecorationName', lambda prevFlags: prevFlags.Calo.TopoCluster.CalibrationHitDecorationName)
261 flags.addFlag('addCPData', lambda prevFlags: prevFlags.Calo.TopoCluster.addCPData)
262
263 return flags