3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory
import CompFactory
7 return (tool_name, prefix)
9 def ComparedToolsToPlot(tool_ref, tool_test, prefix, match_in_energy = False, match_without_shared = False, match_perfectly = False):
10 return (tool_ref, tool_test, prefix, match_in_energy, match_without_shared, match_perfectly)
12 def MatchingOptions(min_similarity = 0.50, terminal_weight = 250., grow_weight = 500., seed_weight = 1000.):
13 return (min_similarity, terminal_weight, grow_weight, seed_weight)
18 kwargs.setdefault(
"MeasureTimes", flags.CaloRecGPU.ActiveConfig.MeasureTimes)
19 kwargs.setdefault(
"TimeFileOutput", name +
"Times.txt")
21 ConstantDataExporter = CompFactory.BasicConstantGPUDataExporter(name, **kwargs)
23 result.setPrivateTools(ConstantDataExporter)
29 kwargs.setdefault(
"MeasureTimes", flags.CaloRecGPU.ActiveConfig.MeasureTimes)
30 kwargs.setdefault(
"TimeFileOutput", name +
"Times.txt")
32 kwargs.setdefault(
"CellsName", cellsname)
34 if flags.CaloRecGPU.ActiveConfig.FillMissingCells:
35 kwargs.setdefault(
"MissingCellsToFill", flags.CaloRecGPU.ActiveConfig.MissingCellsToFill)
37 EventDataExporter = CompFactory.BasicEventDataGPUExporter(name, **kwargs)
39 result.setPrivateTools(EventDataExporter)
44 kwargs.setdefault(
"MeasureTimes", flags.CaloRecGPU.ActiveConfig.MeasureTimes)
45 kwargs.setdefault(
"TimeFileOutput", name +
"Times.txt")
46 kwargs.setdefault(
"CellsName", cellsname)
47 kwargs.setdefault(
"ClusterSize", flags.CaloRecGPU.ActiveConfig.ClusterSize)
48 if flags.CaloRecGPU.ActiveConfig.FillMissingCells:
49 kwargs.setdefault(
"MissingCellsToFill", flags.CaloRecGPU.ActiveConfig.MissingCellsToFill)
51 AthenaClusterImporter = CompFactory.BasicGPUToAthenaImporter(name, **kwargs)
52 result.setPrivateTools(AthenaClusterImporter)
57 kwargs.setdefault(
"CellsName", cellsname)
58 kwargs.setdefault(
"SavePath",
"output")
60 CPUOutput = CompFactory.CaloCPUOutput(name, **kwargs)
61 result.setPrivateTools(CPUOutput)
66 kwargs.setdefault(
"UseSortedAndCutClusters",
True)
67 kwargs.setdefault(
"SavePath",
"output")
69 GPUOutput = CompFactory.CaloGPUOutput(name, **kwargs)
70 result.setPrivateTools(GPUOutput)
75 kwargs.setdefault(
"MeasureTimes", flags.CaloRecGPU.ActiveConfig.MeasureTimes)
76 kwargs.setdefault(
"TimeFileOutput", name +
"Times.txt")
78 kwargs.setdefault(
"ClusterCutsInAbsEt", flags.CaloRecGPU.ActiveConfig.PostGrowingClusterCutClustersInAbsEt)
79 kwargs.setdefault(
"ClusterEtorAbsEtCut", flags.CaloRecGPU.ActiveConfig.PostGrowingClusterEnergyCut)
81 kwargs.setdefault(
"ClusterCutsInAbsEt",
True)
82 kwargs.setdefault(
"ClusterEtorAbsEtCut", -1)
85 CalcTool = CompFactory.BasicGPUClusterInfoCalculator(name, **kwargs)
86 result.setPrivateTools(CalcTool)
92 kwargs.setdefault(
"MeasureTimes", flags.CaloRecGPU.ActiveConfig.MeasureTimes)
93 kwargs.setdefault(
"TimeFileOutput", name +
"Times.txt")
95 kwargs.setdefault(
"CalorimeterNames", flags.CaloRecGPU.ActiveConfig.GrowingCalorimeterNames)
97 kwargs.setdefault(
"SeedSamplingNames", flags.CaloRecGPU.ActiveConfig.GrowingSeedSamplingNames)
99 kwargs.setdefault(
"SeedThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.SeedThreshold)
100 kwargs.setdefault(
"NeighborThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.GrowThreshold)
101 kwargs.setdefault(
"CellThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.TermThreshold)
103 kwargs.setdefault(
"SeedCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsSeedThreshold)
104 kwargs.setdefault(
"NeighborCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsGrowThreshold)
105 kwargs.setdefault(
"CellCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsTermThreshold)
107 kwargs.setdefault(
"TwoGaussianNoise", flags.CaloRecGPU.ActiveConfig.doTwoGaussianNoise)
109 kwargs.setdefault(
"SeedCutsInT", flags.CaloRecGPU.ActiveConfig.doTimeCut)
110 kwargs.setdefault(
"CutOOTseed", flags.CaloRecGPU.ActiveConfig.doTimeCut
and flags.CaloRecGPU.ActiveConfig.extendTimeCut)
111 kwargs.setdefault(
"UseTimeCutUpperLimit", flags.CaloRecGPU.ActiveConfig.useUpperLimitForTimeCut)
112 kwargs.setdefault(
"TimeCutUpperLimit", flags.CaloRecGPU.ActiveConfig.timeCutUpperLimit)
114 kwargs.setdefault(
"SeedThresholdOnTAbs", flags.CaloRecGPU.ActiveConfig.GrowingTimeCutSeedThreshold)
116 kwargs.setdefault(
"TreatL1PredictedCellsAsGood", flags.CaloRecGPU.ActiveConfig.GrowingTreatL1PredictedCellsAsGood)
118 kwargs.setdefault(
"XTalkEM2", flags.CaloRecGPU.ActiveConfig.xtalkEM2)
119 kwargs.setdefault(
"XTalkDeltaT", flags.CaloRecGPU.ActiveConfig.xtalkDeltaT)
123 kwargs.setdefault(
"NeighborOption", flags.CaloRecGPU.ActiveConfig.GrowingNeighborOption)
125 kwargs.setdefault(
"RestrictHECIWandFCalNeighbors", flags.CaloRecGPU.ActiveConfig.GrowingRestrictHECIWandFCalNeighbors)
127 kwargs.setdefault(
"RestrictPSNeighbors", flags.CaloRecGPU.ActiveConfig.GrowingRestrictPSNeighbors)
129 TAClusterMaker = CompFactory.TopoAutomatonClustering(name, **kwargs)
130 result.setPrivateTools(TAClusterMaker)
136 kwargs.setdefault(
"CellsName", cellsname)
138 kwargs.setdefault(
"CalorimeterNames", flags.CaloRecGPU.ActiveConfig.GrowingCalorimeterNames)
139 kwargs.setdefault(
"SeedSamplingNames", flags.CaloRecGPU.ActiveConfig.GrowingSeedSamplingNames)
141 kwargs.setdefault(
"NeighborOption", flags.CaloRecGPU.ActiveConfig.GrowingNeighborOption)
142 kwargs.setdefault(
"RestrictHECIWandFCalNeighbors", flags.CaloRecGPU.ActiveConfig.GrowingRestrictHECIWandFCalNeighbors)
143 kwargs.setdefault(
"RestrictPSNeighbors", flags.CaloRecGPU.ActiveConfig.GrowingRestrictPSNeighbors)
145 kwargs.setdefault(
"SeedThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.SeedThreshold)
146 kwargs.setdefault(
"NeighborThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.GrowThreshold)
147 kwargs.setdefault(
"CellThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.TermThreshold)
149 kwargs.setdefault(
"SeedCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsSeedThreshold)
150 kwargs.setdefault(
"NeighborCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsGrowThreshold)
151 kwargs.setdefault(
"CellCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsTermThreshold)
153 kwargs.setdefault(
"SeedCutsInT", flags.CaloRecGPU.ActiveConfig.doTimeCut)
154 kwargs.setdefault(
"CutOOTseed", flags.CaloRecGPU.ActiveConfig.doTimeCut
and flags.CaloRecGPU.ActiveConfig.extendTimeCut)
155 kwargs.setdefault(
"UseTimeCutUpperLimit", flags.CaloRecGPU.ActiveConfig.useUpperLimitForTimeCut)
156 kwargs.setdefault(
"TimeCutUpperLimit", flags.CaloRecGPU.ActiveConfig.timeCutUpperLimit)
157 kwargs.setdefault(
"XTalkEM2", flags.CaloRecGPU.ActiveConfig.xtalkEM2)
158 kwargs.setdefault(
"XTalkEM2D", flags.CaloRecGPU.ActiveConfig.xtalkEM2D)
159 kwargs.setdefault(
"XTalkEM2n", flags.CaloRecGPU.ActiveConfig.xtalkEM2n)
160 kwargs.setdefault(
"XTalkEM3", flags.CaloRecGPU.ActiveConfig.xtalkEM3)
161 kwargs.setdefault(
"XTalkEMEta", flags.CaloRecGPU.ActiveConfig.xtalkEMEta)
162 kwargs.setdefault(
"XTalkDeltaT", flags.CaloRecGPU.ActiveConfig.xtalkDeltaT)
163 kwargs.setdefault(
"XTalk2Eratio1", flags.CaloRecGPU.ActiveConfig.xtalk2Eratio1)
164 kwargs.setdefault(
"XTalk2Eratio2", flags.CaloRecGPU.ActiveConfig.xtalk2Eratio2)
165 kwargs.setdefault(
"XTalk3Eratio", flags.CaloRecGPU.ActiveConfig.xtalk3Eratio)
166 kwargs.setdefault(
"XTalkEtaEratio", flags.CaloRecGPU.ActiveConfig.xtalkEtaEratio)
167 kwargs.setdefault(
"XTalk2DEratio", flags.CaloRecGPU.ActiveConfig.xtalk2DEratio)
169 kwargs.setdefault(
"ClusterCutsInAbsEt", flags.CaloRecGPU.ActiveConfig.PostGrowingClusterCutClustersInAbsEt)
170 kwargs.setdefault(
"ClusterEtorAbsEtCut", flags.CaloRecGPU.ActiveConfig.PostGrowingClusterEnergyCut)
172 kwargs.setdefault(
"TwoGaussianNoise", flags.CaloRecGPU.ActiveConfig.doTwoGaussianNoise)
174 kwargs.setdefault(
"SeedThresholdOnTAbs", flags.CaloRecGPU.ActiveConfig.GrowingTimeCutSeedThreshold)
176 kwargs.setdefault(
"TreatL1PredictedCellsAsGood", flags.CaloRecGPU.ActiveConfig.GrowingTreatL1PredictedCellsAsGood)
178 kwargs.setdefault(
"UseGPUCriteria",
not flags.CaloRecGPU.ActiveConfig.UseOriginalCriteria)
180 TopoMaker = CompFactory.CaloTopoClusterMaker(name, **kwargs)
181 result.setPrivateTools(TopoMaker)
187 kwargs.setdefault(
"MeasureTimes", flags.CaloRecGPU.ActiveConfig.MeasureTimes)
188 kwargs.setdefault(
"TimeFileOutput", name +
"Times.txt")
190 kwargs.setdefault(
"NumberOfCellsCut", flags.CaloRecGPU.ActiveConfig.SplittingNumberOfCellsCut)
191 kwargs.setdefault(
"EnergyCut", flags.CaloRecGPU.ActiveConfig.SplittingEnergyCut)
192 kwargs.setdefault(
"SamplingNames", flags.CaloRecGPU.ActiveConfig.SplittingSamplingNames)
193 kwargs.setdefault(
"SecondarySamplingNames", flags.CaloRecGPU.ActiveConfig.SplittingSecondarySamplingNames)
194 kwargs.setdefault(
"ShareBorderCells", flags.CaloRecGPU.ActiveConfig.SplittingShareBorderCells)
195 kwargs.setdefault(
"EMShowerScale", flags.CaloRecGPU.ActiveConfig.SplittingEMShowerScale)
196 kwargs.setdefault(
"WeightingOfNegClusters", flags.CaloRecGPU.ActiveConfig.SplittingUseNegativeClusters)
198 kwargs.setdefault(
"TreatL1PredictedCellsAsGood", flags.CaloRecGPU.ActiveConfig.SplittingTreatL1PredictedCellsAsGood)
200 kwargs.setdefault(
"NeighborOption", flags.CaloRecGPU.ActiveConfig.SplittingNeighborOption)
201 kwargs.setdefault(
"RestrictHECIWandFCalNeighbors", flags.CaloRecGPU.ActiveConfig.SplittingRestrictHECIWandFCalNeighbors)
202 kwargs.setdefault(
"RestrictPSNeighbors", flags.CaloRecGPU.ActiveConfig.GPUSplittingRestrictPSNeighbors)
205 Splitter = CompFactory.TopoAutomatonSplitting(name, **kwargs)
206 result.setPrivateTools(Splitter)
212 kwargs.setdefault(
"NeighborOption", flags.CaloRecGPU.ActiveConfig.SplittingNeighborOption)
213 kwargs.setdefault(
"RestrictHECIWandFCalNeighbors", flags.CaloRecGPU.ActiveConfig.SplittingRestrictHECIWandFCalNeighbors)
215 kwargs.setdefault(
"NumberOfCellsCut", flags.CaloRecGPU.ActiveConfig.SplittingNumberOfCellsCut)
216 kwargs.setdefault(
"EnergyCut", flags.CaloRecGPU.ActiveConfig.SplittingEnergyCut)
218 kwargs.setdefault(
"SamplingNames", flags.CaloRecGPU.ActiveConfig.SplittingSamplingNames)
219 kwargs.setdefault(
"SecondarySamplingNames", flags.CaloRecGPU.ActiveConfig.SplittingSecondarySamplingNames)
221 kwargs.setdefault(
"ShareBorderCells", flags.CaloRecGPU.ActiveConfig.SplittingShareBorderCells)
222 kwargs.setdefault(
"EMShowerScale", flags.CaloRecGPU.ActiveConfig.SplittingEMShowerScale)
224 kwargs.setdefault(
"TreatL1PredictedCellsAsGood", flags.CaloRecGPU.ActiveConfig.SplittingTreatL1PredictedCellsAsGood)
226 kwargs.setdefault(
"WeightingOfNegClusters", flags.CaloRecGPU.ActiveConfig.SplittingUseNegativeClusters)
228 kwargs.setdefault(
"UseGPUCriteria",
not flags.CaloRecGPU.ActiveConfig.UseOriginalCriteria)
230 TopoSplitter = CompFactory.CaloTopoClusterSplitter(name, **kwargs)
231 result.setPrivateTools(TopoSplitter)
237 kwargs.setdefault(
"MeasureTimes", flags.CaloRecGPU.ActiveConfig.MeasureTimes)
238 kwargs.setdefault(
"TimeFileOutput", name +
"Times.txt")
240 kwargs.setdefault(
"WeightingOfNegClusters", flags.CaloRecGPU.ActiveConfig.MomentsUseAbsEnergy)
242 kwargs.setdefault(
"MaxAxisAngle", flags.CaloRecGPU.ActiveConfig.MomentsMaxAxisAngle)
244 kwargs.setdefault(
"TwoGaussianNoise", flags.CaloRecGPU.ActiveConfig.doTwoGaussianNoise)
246 kwargs.setdefault(
"MinBadLArQuality", flags.CaloRecGPU.ActiveConfig.MomentsMinBadLArQuality)
248 kwargs.setdefault(
"MinRLateral", flags.CaloRecGPU.ActiveConfig.MomentsMinRLateral)
249 kwargs.setdefault(
"MinLLongitudinal", flags.CaloRecGPU.ActiveConfig.MomentsMinLLongitudinal)
251 GPUTopoMoments = CompFactory.GPUClusterInfoAndMomentsCalculator(name, **kwargs)
252 result.setPrivateTools(GPUTopoMoments)
258 kwargs.setdefault(
"WeightingOfNegClusters", flags.CaloRecGPU.ActiveConfig.MomentsUseAbsEnergy)
260 kwargs.setdefault(
"MaxAxisAngle", flags.CaloRecGPU.ActiveConfig.MomentsMaxAxisAngle)
262 kwargs.setdefault(
"TwoGaussianNoise", flags.CaloRecGPU.ActiveConfig.doTwoGaussianNoise)
264 kwargs.setdefault(
"MinBadLArQuality", flags.CaloRecGPU.ActiveConfig.MomentsMinBadLArQuality)
266 kwargs.setdefault(
"MomentsNames", flags.CaloRecGPU.ActiveConfig.MomentsToCalculate)
268 kwargs.setdefault(
"MinRLateral", flags.CaloRecGPU.ActiveConfig.MomentsMinRLateral)
269 kwargs.setdefault(
"MinLLongitudinal", flags.CaloRecGPU.ActiveConfig.MomentsMinLLongitudinal)
271 kwargs.setdefault(
"UseGPUCriteria",
not flags.CaloRecGPU.ActiveConfig.UseOriginalCriteria)
273 TopoMoments = CompFactory.CaloClusterMomentsMaker(name, **kwargs)
275 if not flags.Common.isOnline
and not instantiateForTrigger
and "LArHVFraction" not in kwargs:
278 from LArConfiguration.LArElecCalibDBConfig
import LArElecCalibDBCfg
281 TopoMoments.LArHVFraction=CompFactory.LArHVFraction(HVScaleCorrKey=
"LArHVScaleCorr")
283 TopoMoments.LArHVFraction=CompFactory.LArHVFraction(HVScaleCorrKey=
"LArHVScaleCorrRecomputed")
285 result.setPrivateTools(TopoMoments)
290 kwargs.setdefault(
"CellsName", cellsname)
292 kwargs.setdefault(
"ClusterSize", flags.CaloRecGPU.ActiveConfig.ClusterSize)
294 kwargs.setdefault(
"MeasureTimes", flags.CaloRecGPU.ActiveConfig.MeasureTimes)
295 kwargs.setdefault(
"TimeFileOutput", name +
"Times.txt")
297 if not flags.Common.isOnline
and not instantiateForTrigger:
298 kwargs.setdefault(
"FillHVMoments",
True)
300 kwargs.setdefault(
"HVScaleCorrKey",
"LArHVScaleCorr")
302 kwargs.setdefault(
"HVScaleCorrKey",
"LArHVScaleCorrRecomputed")
304 kwargs.setdefault(
"FillHVMoments",
False)
306 kwargs.setdefault(
"MomentsNames", flags.CaloRecGPU.ActiveConfig.MomentsToCalculate)
308 if flags.CaloRecGPU.ActiveConfig.FillMissingCells:
309 kwargs.setdefault(
"MissingCellsToFill", flags.CaloRecGPU.ActiveConfig.MissingCellsToFill)
311 AthenaClusterImporter = CompFactory.GPUToAthenaImporterWithMoments(name, **kwargs)
312 result.setPrivateTools(AthenaClusterImporter)
317 kwargs.setdefault(
"SavePath",
"counts")
318 kwargs.setdefault(
"FilePrefix",
"CPU")
319 kwargs.setdefault(
"CellsName", cellsname)
321 kwargs.setdefault(
"SeedThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.SeedThreshold)
322 kwargs.setdefault(
"NeighborThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.GrowThreshold)
323 kwargs.setdefault(
"CellThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.TermThreshold)
325 CPUCount = CompFactory.CaloCellsCounterCPU(name, **kwargs)
326 result.setPrivateTools(CPUCount)
331 kwargs.setdefault(
"SavePath",
"counts")
332 kwargs.setdefault(
"FilePrefix",
"GPU")
334 kwargs.setdefault(
"SeedThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.SeedThreshold)
335 kwargs.setdefault(
"NeighborThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.GrowThreshold)
336 kwargs.setdefault(
"CellThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.TermThreshold)
338 GPUCount = CompFactory.CaloCellsCounterGPU(name, **kwargs)
339 result.setPrivateTools(GPUCount)
344 kwargs.setdefault(
"SavePath",
"moments")
346 MomentsDumper = CompFactory.CaloMomentsDumper(name, **kwargs)
347 result.setPrivateTools(MomentsDumper)
353 kwargs.setdefault(
"SeedThreshold", flags.CaloRecGPU.ActiveConfig.SeedThreshold)
354 kwargs.setdefault(
"NeighborThreshold", flags.CaloRecGPU.ActiveConfig.GrowThreshold)
355 kwargs.setdefault(
"CellThreshold", flags.CaloRecGPU.ActiveConfig.TermThreshold)
357 kwargs.setdefault(
"CellsName", cellsname)
364 PloTool = CompFactory.CaloGPUClusterAndCellDataMonitor(name, **kwargs)
366 if "MonitoringTool" not in kwargs:
367 from AthenaMonitoringKernel.GenericMonitoringTool
import GenericMonitoringTool
370 result.setPrivateTools(PloTool)
376 kwargs.setdefault(
"MomentsNames", [
"ENG_CALIB_TOT"
382 ,
"ENG_CALIB_DEAD_TOT"
383 ,
"ENG_CALIB_DEAD_EMB0"
384 ,
"ENG_CALIB_DEAD_TILE0"
385 ,
"ENG_CALIB_DEAD_TILEG3"
386 ,
"ENG_CALIB_DEAD_EME0"
387 ,
"ENG_CALIB_DEAD_HEC0"
388 ,
"ENG_CALIB_DEAD_FCAL"
389 ,
"ENG_CALIB_DEAD_LEAKAGE"
390 ,
"ENG_CALIB_DEAD_UNCLASS"
392 ,
"ENG_CALIB_FRAC_HAD"
393 ,
"ENG_CALIB_FRAC_REST"])
395 kwargs.setdefault(
"CalibrationHitContainerNames", [
"LArCalibrationHitInactive"
396 ,
"LArCalibrationHitActive"
397 ,
"TileCalibHitActiveCell"
398 ,
"TileCalibHitInactiveCell"])
400 kwargs.setdefault(
"DMCalibrationHitContainerNames", [
"LArCalibrationHitDeadMaterial"
401 ,
"TileCalibHitDeadMaterial"])
403 TopoCalibMoments = CompFactory.CaloCalibClusterMomentsMaker2(name, **kwargs)
404 result.setPrivateTools(TopoCalibMoments)
410 CaloClusterLocalCalib=CompFactory.CaloClusterLocalCalib
413 LCClassify = CompFactory.CaloLCClassificationTool(prefix +
"LCClassify")
414 LCClassify.ClassificationKey =
"EMFracClassify"
415 LCClassify.UseSpread =
False
416 LCClassify.MaxProbability = 0.85
if flags.GeoModel.AtlasVersion.startswith(
"Rome")
and instantiateForTrigger
else 0.5
417 LCClassify.StoreClassificationProbabilityInAOD =
True
418 if instantiateForTrigger:
419 LCClassify.UseNormalizedEnergyDensity =
not flags.GeoModel.AtlasVersion.startswith(
"Rome")
420 if not instantiateForTrigger:
421 LCClassify.WeightingOfNegClusters = flags.CaloRecGPU.ActiveConfig.CalibrationUseAbsEnergy
423 LCWeight = CompFactory.CaloLCWeightTool(prefix +
"LCWeight")
424 LCWeight.CorrectionKey =
"H1ClusterCellWeights"
425 LCWeight.SignalOverNoiseCut = 2.0
426 LCWeight.UseHadProbability =
True
428 LocalCalib = CaloClusterLocalCalib (prefix +
"LocalCalib")
429 LocalCalib.ClusterClassificationTool = [LCClassify]
430 LocalCalib.ClusterRecoStatus = [1,2]
431 LocalCalib.LocalCalibTools = [LCWeight]
432 if not instantiateForTrigger:
433 LocalCalib.WeightingOfNegClusters = flags.CaloRecGPU.ActiveConfig.CalibrationUseAbsEnergy
436 LCOut = CompFactory.CaloLCOutOfClusterTool(prefix +
"LCOut")
437 LCOut.CorrectionKey =
"OOCCorrection"
438 LCOut.UseEmProbability =
False
439 LCOut.UseHadProbability =
True
441 OOCCalib = CaloClusterLocalCalib (prefix +
"OOCCalib")
442 OOCCalib.ClusterRecoStatus = [1,2]
443 OOCCalib.LocalCalibTools = [LCOut]
444 if not instantiateForTrigger:
445 OOCCalib.WeightingOfNegClusters = flags.CaloRecGPU.ActiveConfig.CalibrationUseAbsEnergy
447 LCOutPi0 = CompFactory.CaloLCOutOfClusterTool(prefix +
"LCOutPi0")
448 LCOutPi0.CorrectionKey =
"OOCPi0Correction"
449 LCOutPi0.UseEmProbability =
True
450 LCOutPi0.UseHadProbability =
False
452 OOCPi0Calib = CaloClusterLocalCalib (prefix +
"OOCPi0Calib")
453 OOCPi0Calib.ClusterRecoStatus = [1,2]
454 OOCPi0Calib.LocalCalibTools = [LCOutPi0]
455 if not instantiateForTrigger:
456 OOCPi0Calib.WeightingOfNegClusters = flags.CaloRecGPU.ActiveConfig.CalibrationUseAbsEnergy
459 LCDeadMaterial = CompFactory.CaloLCDeadMaterialTool(prefix +
"LCDeadMaterial")
460 LCDeadMaterial.HadDMCoeffKey =
"HadDMCoeff2"
461 LCDeadMaterial.ClusterRecoStatus = 0
462 LCDeadMaterial.WeightModeDM = 2
463 LCDeadMaterial.UseHadProbability =
True
464 if not instantiateForTrigger:
465 LCDeadMaterial.WeightingOfNegClusters = flags.CaloRecGPU.ActiveConfig.CalibrationUseAbsEnergy
467 DMCalib = CaloClusterLocalCalib (prefix +
"DMCalib")
468 DMCalib.ClusterRecoStatus = [1,2]
469 DMCalib.LocalCalibTools = [LCDeadMaterial]
470 if not instantiateForTrigger:
471 DMCalib.WeightingOfNegClusters = flags.CaloRecGPU.ActiveConfig.CalibrationUseAbsEnergy
479 result.setPrivateTools(lccalibtools)
486 clustersname = None, clustersnapname="CaloTopoClusters", name="HybridClusterProcessor",
487 PlotterTool = None, addAsPrimary = True, ReallyUseGPUTools = True):
489 doLCCalib = flags.CaloRecGPU.ActiveConfig.doTopoClusterLocalCalib
491 if clustersname
is None:
492 clustersname =
"CaloCalTopoClusters" if doLCCalib
else "CaloTopoClusters"
494 if clustersname ==
"CaloTopoClusters" and doLCCalib:
495 raise RuntimeError(
"Inconsistent arguments: clustersname must not be 'CaloTopoClusters' if doTopoClusterLocalCalib is True")
499 if not instantiateForTrigger:
501 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
502 from TileGeoModel.TileGMConfig
import TileGMCfg
503 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
512 HybridClusterProcessor = CompFactory.CaloGPUHybridClusterProcessor(name)
513 HybridClusterProcessor.ClustersOutputName = clustersname
515 HybridClusterProcessor.WriteTriggerSpecificInfo = instantiateForTrigger
517 HybridClusterProcessor.MeasureTimes = flags.CaloRecGPU.ActiveConfig.MeasureTimes
519 HybridClusterProcessor.TimeFileOutput =
"GlobalTimes.txt"
521 HybridClusterProcessor.DeferConstantDataPreparationToFirstEvent =
True
522 HybridClusterProcessor.DoPlots = PlotterTool
is not None
523 HybridClusterProcessor.PlotterTool = PlotterTool
525 HybridClusterProcessor.NumPreAllocatedDataHolders = flags.CaloRecGPU.ActiveConfig.NumPreAllocatedDataHolders
527 if ReallyUseGPUTools:
534 HybridClusterProcessor.BeforeGPUTools = []
536 HybridClusterProcessor.GPUTools = []
540 HybridClusterProcessor.GPUTools += [result.popToolsAndMerge(
ClusterInfoCalcToolCfg(flags,
"PostGPUGrowingClusterPropertiesCalculator",
True))]
548 HybridClusterProcessor.ConstantDataToGPUTool =
None
549 HybridClusterProcessor.EventDataToGPUTool =
None
550 HybridClusterProcessor.GPUToEventDataTool =
None
551 HybridClusterProcessor.SkipConversions =
True
553 HybridClusterProcessor.GPUTools = []
555 HybridClusterProcessor.BeforeGPUTools = []
563 HybridClusterProcessor.BeforeGPUTools += [ CompFactory.CaloClusterStoreRawProperties(
"RawPropertiesStorer") ]
567 HybridClusterProcessor.AfterGPUTools = []
569 if not instantiateForTrigger:
570 from CaloBadChannelTool.CaloBadChanToolConfig
import CaloBadChanToolCfg
572 HybridClusterProcessor.AfterGPUTools += [CompFactory.CaloClusterBadChannelList(badChannelTool = caloBadChanTool)]
574 if not instantiateForTrigger
and flags.CaloRecGPU.ActiveConfig.doCalibHitMoments:
577 HybridClusterProcessor.AfterGPUTools += [calibHitsMomentsMaker]
580 if not instantiateForTrigger:
581 HybridClusterProcessor.AfterGPUTools += [CompFactory.CaloClusterSnapshot(OutputName=clustersnapname,
583 FinalClusterContainerName=clustersname)]
585 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
586 from CaloRec.CaloTopoClusterConfig
import caloTopoCoolFolderCfg
592 HybridClusterProcessor.AfterGPUTools += calibTools
595 if not instantiateForTrigger:
596 from CaloRec.CaloTopoClusterConfig
import caloTopoCoolFolderCfg
599 if instantiateForTrigger:
600 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
603 result.addEventAlgo(HybridClusterProcessor, primary=addAsPrimary)
605 if instantiateForTrigger
or clustersname
in flags.CaloRecGPU.ActiveConfig.skipWriteList:
610 AODMoments=[
"SECOND_R"
629 if flags.CaloRecGPU.ActiveConfig.writeExtendedClusterMoments:
630 AODMoments += [
"LATERAL"
636 if flags.Reco.EnableHI:
637 AODMoments += [
"CELL_SIG_SAMPLING"]
639 if flags.CaloRecGPU.ActiveConfig.writeCalibHitClusterMoments:
640 AODMoments += [
"ENG_CALIB_TOT"
646 ,
"ENG_CALIB_DEAD_TOT"
647 ,
"ENG_CALIB_DEAD_EMB0"
648 ,
"ENG_CALIB_DEAD_TILE0"
649 ,
"ENG_CALIB_DEAD_TILEG3"
650 ,
"ENG_CALIB_DEAD_EME0"
651 ,
"ENG_CALIB_DEAD_HEC0"
652 ,
"ENG_CALIB_DEAD_FCAL"
653 ,
"ENG_CALIB_DEAD_LEAKAGE"
654 ,
"ENG_CALIB_DEAD_UNCLASS"
656 ,
"ENG_CALIB_FRAC_HAD"
657 ,
"ENG_CALIB_FRAC_REST"]
660 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD, addToESD
661 toESD = [f
"xAOD::CaloClusterContainer#{clustersname}",
662 f
"xAOD::CaloClusterAuxContainer#{clustersname}Aux.",
663 f
"CaloClusterCellLinkContainer#{clustersname}_links"]
664 toAOD = [f
"xAOD::CaloClusterContainer#{clustersname}",
665 f
"CaloClusterCellLinkContainer#{clustersname}_links"]
667 AODMoments.append(
"CellLink")
668 if flags.CaloRecGPU.ActiveConfig.addCalibrationHitDecoration:
669 AODMoments.append(flags.CaloRecGPU.ActiveConfig.CalibrationHitDecorationName)
671 if flags.CaloRecGPU.ActiveConfig.addCPData:
672 AODMoments += [
"ClusterWidthEta",
"ClusterWidthPhi"]
674 auxItems = f
"xAOD::CaloClusterAuxContainer#{clustersname}Aux."
675 auxItems+=
".".
join(AODMoments)
677 toAOD.append(auxItems)
679 result.merge(
addToESD(flags, toESD))
680 result.merge(
addToAOD(flags, toAOD))