106 result=ComponentAccumulator()
108 kwargs.setdefault(
"MeasureTimes", flags.CaloRecGPU.ActiveConfig.MeasureTimes)
109 kwargs.setdefault(
"TimeFileOutput", name +
"Times.txt")
111 kwargs.setdefault(
"CalorimeterNames", flags.CaloRecGPU.ActiveConfig.GrowingCalorimeterNames)
113 kwargs.setdefault(
"SeedSamplingNames", flags.CaloRecGPU.ActiveConfig.GrowingSeedSamplingNames)
115 kwargs.setdefault(
"SeedThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.SeedThreshold)
116 kwargs.setdefault(
"NeighborThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.GrowThreshold)
117 kwargs.setdefault(
"CellThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.TermThreshold)
119 kwargs.setdefault(
"SeedCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsSeedThreshold)
120 kwargs.setdefault(
"NeighborCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsGrowThreshold)
121 kwargs.setdefault(
"CellCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsTermThreshold)
123 kwargs.setdefault(
"TwoGaussianNoise", flags.CaloRecGPU.ActiveConfig.doTwoGaussianNoise)
125 kwargs.setdefault(
"SeedCutsInT", flags.CaloRecGPU.ActiveConfig.doTimeCut)
126 kwargs.setdefault(
"CutOOTseed", flags.CaloRecGPU.ActiveConfig.doTimeCut
and flags.CaloRecGPU.ActiveConfig.extendTimeCut)
127 kwargs.setdefault(
"UseTimeCutUpperLimit", flags.CaloRecGPU.ActiveConfig.useUpperLimitForTimeCut)
128 kwargs.setdefault(
"TimeCutUpperLimit", flags.CaloRecGPU.ActiveConfig.timeCutUpperLimit)
130 kwargs.setdefault(
"SeedThresholdOnTAbs", flags.CaloRecGPU.ActiveConfig.GrowingTimeCutSeedThreshold)
132 kwargs.setdefault(
"TreatL1PredictedCellsAsGood", flags.CaloRecGPU.ActiveConfig.GrowingTreatL1PredictedCellsAsGood)
134 kwargs.setdefault(
"XTalkEM2", flags.CaloRecGPU.ActiveConfig.xtalkEM2)
135 kwargs.setdefault(
"XTalkDeltaT", flags.CaloRecGPU.ActiveConfig.xtalkDeltaT)
139 kwargs.setdefault(
"NeighborOption", flags.CaloRecGPU.ActiveConfig.GrowingNeighborOption)
141 kwargs.setdefault(
"RestrictHECIWandFCalNeighbors", flags.CaloRecGPU.ActiveConfig.GrowingRestrictHECIWandFCalNeighbors)
143 kwargs.setdefault(
"RestrictPSNeighbors", flags.CaloRecGPU.ActiveConfig.GrowingRestrictPSNeighbors)
145 TAClusterMaker = CompFactory.TopoAutomatonClustering(name, **kwargs)
146 result.setPrivateTools(TAClusterMaker)
150 result=ComponentAccumulator()
152 kwargs.setdefault(
"CellsName", cellsname)
154 kwargs.setdefault(
"CalorimeterNames", flags.CaloRecGPU.ActiveConfig.GrowingCalorimeterNames)
155 kwargs.setdefault(
"SeedSamplingNames", flags.CaloRecGPU.ActiveConfig.GrowingSeedSamplingNames)
157 kwargs.setdefault(
"NeighborOption", flags.CaloRecGPU.ActiveConfig.GrowingNeighborOption)
158 kwargs.setdefault(
"RestrictHECIWandFCalNeighbors", flags.CaloRecGPU.ActiveConfig.GrowingRestrictHECIWandFCalNeighbors)
159 kwargs.setdefault(
"RestrictPSNeighbors", flags.CaloRecGPU.ActiveConfig.GrowingRestrictPSNeighbors)
161 kwargs.setdefault(
"SeedThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.SeedThreshold)
162 kwargs.setdefault(
"NeighborThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.GrowThreshold)
163 kwargs.setdefault(
"CellThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.TermThreshold)
165 kwargs.setdefault(
"SeedCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsSeedThreshold)
166 kwargs.setdefault(
"NeighborCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsGrowThreshold)
167 kwargs.setdefault(
"CellCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsTermThreshold)
169 kwargs.setdefault(
"SeedCutsInT", flags.CaloRecGPU.ActiveConfig.doTimeCut)
170 kwargs.setdefault(
"CutOOTseed", flags.CaloRecGPU.ActiveConfig.doTimeCut
and flags.CaloRecGPU.ActiveConfig.extendTimeCut)
171 kwargs.setdefault(
"UseTimeCutUpperLimit", flags.CaloRecGPU.ActiveConfig.useUpperLimitForTimeCut)
172 kwargs.setdefault(
"TimeCutUpperLimit", flags.CaloRecGPU.ActiveConfig.timeCutUpperLimit)
173 kwargs.setdefault(
"XTalkEM2", flags.CaloRecGPU.ActiveConfig.xtalkEM2)
174 kwargs.setdefault(
"XTalkEM2D", flags.CaloRecGPU.ActiveConfig.xtalkEM2D)
175 kwargs.setdefault(
"XTalkEM2n", flags.CaloRecGPU.ActiveConfig.xtalkEM2n)
176 kwargs.setdefault(
"XTalkEM3", flags.CaloRecGPU.ActiveConfig.xtalkEM3)
177 kwargs.setdefault(
"XTalkEMEta", flags.CaloRecGPU.ActiveConfig.xtalkEMEta)
178 kwargs.setdefault(
"XTalkDeltaT", flags.CaloRecGPU.ActiveConfig.xtalkDeltaT)
179 kwargs.setdefault(
"XTalk2Eratio1", flags.CaloRecGPU.ActiveConfig.xtalk2Eratio1)
180 kwargs.setdefault(
"XTalk2Eratio2", flags.CaloRecGPU.ActiveConfig.xtalk2Eratio2)
181 kwargs.setdefault(
"XTalk3Eratio", flags.CaloRecGPU.ActiveConfig.xtalk3Eratio)
182 kwargs.setdefault(
"XTalkEtaEratio", flags.CaloRecGPU.ActiveConfig.xtalkEtaEratio)
183 kwargs.setdefault(
"XTalk2DEratio", flags.CaloRecGPU.ActiveConfig.xtalk2DEratio)
185 kwargs.setdefault(
"ClusterCutsInAbsEt", flags.CaloRecGPU.ActiveConfig.PostGrowingClusterCutClustersInAbsEt)
186 kwargs.setdefault(
"ClusterEtorAbsEtCut", flags.CaloRecGPU.ActiveConfig.PostGrowingClusterEnergyCut)
188 kwargs.setdefault(
"TwoGaussianNoise", flags.CaloRecGPU.ActiveConfig.doTwoGaussianNoise)
190 kwargs.setdefault(
"SeedThresholdOnTAbs", flags.CaloRecGPU.ActiveConfig.GrowingTimeCutSeedThreshold)
192 kwargs.setdefault(
"TreatL1PredictedCellsAsGood", flags.CaloRecGPU.ActiveConfig.GrowingTreatL1PredictedCellsAsGood)
194 kwargs.setdefault(
"UseGPUCriteria",
not flags.CaloRecGPU.ActiveConfig.UseOriginalCriteria)
196 TopoMaker = CompFactory.CaloTopoClusterMaker(name, **kwargs)
197 result.setPrivateTools(TopoMaker)
201 result=ComponentAccumulator()
203 kwargs.setdefault(
"MeasureTimes", flags.CaloRecGPU.ActiveConfig.MeasureTimes)
204 kwargs.setdefault(
"TimeFileOutput", name +
"Times.txt")
206 kwargs.setdefault(
"NumberOfCellsCut", flags.CaloRecGPU.ActiveConfig.SplittingNumberOfCellsCut)
207 kwargs.setdefault(
"EnergyCut", flags.CaloRecGPU.ActiveConfig.SplittingEnergyCut)
208 kwargs.setdefault(
"SamplingNames", flags.CaloRecGPU.ActiveConfig.SplittingSamplingNames)
209 kwargs.setdefault(
"SecondarySamplingNames", flags.CaloRecGPU.ActiveConfig.SplittingSecondarySamplingNames)
210 kwargs.setdefault(
"ShareBorderCells", flags.CaloRecGPU.ActiveConfig.SplittingShareBorderCells)
211 kwargs.setdefault(
"EMShowerScale", flags.CaloRecGPU.ActiveConfig.SplittingEMShowerScale)
212 kwargs.setdefault(
"WeightingOfNegClusters", flags.CaloRecGPU.ActiveConfig.SplittingUseNegativeClusters)
214 kwargs.setdefault(
"TreatL1PredictedCellsAsGood", flags.CaloRecGPU.ActiveConfig.SplittingTreatL1PredictedCellsAsGood)
216 kwargs.setdefault(
"NeighborOption", flags.CaloRecGPU.ActiveConfig.SplittingNeighborOption)
217 kwargs.setdefault(
"RestrictHECIWandFCalNeighbors", flags.CaloRecGPU.ActiveConfig.SplittingRestrictHECIWandFCalNeighbors)
218 kwargs.setdefault(
"RestrictPSNeighbors", flags.CaloRecGPU.ActiveConfig.GPUSplittingRestrictPSNeighbors)
221 Splitter = CompFactory.TopoAutomatonSplitting(name, **kwargs)
222 result.setPrivateTools(Splitter)
226 result=ComponentAccumulator()
228 kwargs.setdefault(
"NeighborOption", flags.CaloRecGPU.ActiveConfig.SplittingNeighborOption)
229 kwargs.setdefault(
"RestrictHECIWandFCalNeighbors", flags.CaloRecGPU.ActiveConfig.SplittingRestrictHECIWandFCalNeighbors)
231 kwargs.setdefault(
"NumberOfCellsCut", flags.CaloRecGPU.ActiveConfig.SplittingNumberOfCellsCut)
232 kwargs.setdefault(
"EnergyCut", flags.CaloRecGPU.ActiveConfig.SplittingEnergyCut)
234 kwargs.setdefault(
"SamplingNames", flags.CaloRecGPU.ActiveConfig.SplittingSamplingNames)
235 kwargs.setdefault(
"SecondarySamplingNames", flags.CaloRecGPU.ActiveConfig.SplittingSecondarySamplingNames)
237 kwargs.setdefault(
"ShareBorderCells", flags.CaloRecGPU.ActiveConfig.SplittingShareBorderCells)
238 kwargs.setdefault(
"EMShowerScale", flags.CaloRecGPU.ActiveConfig.SplittingEMShowerScale)
240 kwargs.setdefault(
"TreatL1PredictedCellsAsGood", flags.CaloRecGPU.ActiveConfig.SplittingTreatL1PredictedCellsAsGood)
242 kwargs.setdefault(
"WeightingOfNegClusters", flags.CaloRecGPU.ActiveConfig.SplittingUseNegativeClusters)
244 kwargs.setdefault(
"UseGPUCriteria",
not flags.CaloRecGPU.ActiveConfig.UseOriginalCriteria)
246 TopoSplitter = CompFactory.CaloTopoClusterSplitter(name, **kwargs)
247 result.setPrivateTools(TopoSplitter)
251 result=ComponentAccumulator()
253 kwargs.setdefault(
"MeasureTimes", flags.CaloRecGPU.ActiveConfig.MeasureTimes)
254 kwargs.setdefault(
"TimeFileOutput", name +
"Times.txt")
256 kwargs.setdefault(
"WeightingOfNegClusters", flags.CaloRecGPU.ActiveConfig.MomentsUseAbsEnergy)
258 kwargs.setdefault(
"MaxAxisAngle", flags.CaloRecGPU.ActiveConfig.MomentsMaxAxisAngle)
260 kwargs.setdefault(
"TwoGaussianNoise", flags.CaloRecGPU.ActiveConfig.doTwoGaussianNoise)
262 kwargs.setdefault(
"MinBadLArQuality", flags.CaloRecGPU.ActiveConfig.MomentsMinBadLArQuality)
264 kwargs.setdefault(
"MinRLateral", flags.CaloRecGPU.ActiveConfig.MomentsMinRLateral)
265 kwargs.setdefault(
"MinLLongitudinal", flags.CaloRecGPU.ActiveConfig.MomentsMinLLongitudinal)
267 GPUTopoMoments = CompFactory.GPUClusterInfoAndMomentsCalculator(name, **kwargs)
268 result.setPrivateTools(GPUTopoMoments)
272 result=ComponentAccumulator()
274 kwargs.setdefault(
"WeightingOfNegClusters", flags.CaloRecGPU.ActiveConfig.MomentsUseAbsEnergy)
276 kwargs.setdefault(
"MaxAxisAngle", flags.CaloRecGPU.ActiveConfig.MomentsMaxAxisAngle)
278 kwargs.setdefault(
"TwoGaussianNoise", flags.CaloRecGPU.ActiveConfig.doTwoGaussianNoise)
280 kwargs.setdefault(
"MinBadLArQuality", flags.CaloRecGPU.ActiveConfig.MomentsMinBadLArQuality)
282 kwargs.setdefault(
"MomentsNames", flags.CaloRecGPU.ActiveConfig.MomentsToCalculate)
284 kwargs.setdefault(
"MinRLateral", flags.CaloRecGPU.ActiveConfig.MomentsMinRLateral)
285 kwargs.setdefault(
"MinLLongitudinal", flags.CaloRecGPU.ActiveConfig.MomentsMinLLongitudinal)
287 kwargs.setdefault(
"UseGPUCriteria",
not flags.CaloRecGPU.ActiveConfig.UseOriginalCriteria)
289 TopoMoments = CompFactory.CaloClusterMomentsMaker(name, **kwargs)
291 if not flags.Common.isOnline
and not instantiateForTrigger
and "LArHVFraction" not in kwargs:
294 from LArConfiguration.LArElecCalibDBConfig
import LArElecCalibDBCfg
295 result.merge(LArElecCalibDBCfg(flags,[
"HVScaleCorr"]))
297 TopoMoments.LArHVFraction=CompFactory.LArHVFraction(HVScaleCorrKey=
"LArHVScaleCorr")
299 TopoMoments.LArHVFraction=CompFactory.LArHVFraction(HVScaleCorrKey=
"LArHVScaleCorrRecomputed")
301 result.setPrivateTools(TopoMoments)
305 result=ComponentAccumulator()
306 kwargs.setdefault(
"CellsName", cellsname)
308 kwargs.setdefault(
"ClusterSize", flags.CaloRecGPU.ActiveConfig.ClusterSize)
310 kwargs.setdefault(
"MeasureTimes", flags.CaloRecGPU.ActiveConfig.MeasureTimes)
311 kwargs.setdefault(
"TimeFileOutput", name +
"Times.txt")
313 if not flags.Common.isOnline
and not instantiateForTrigger:
314 kwargs.setdefault(
"FillHVMoments",
True)
316 kwargs.setdefault(
"HVScaleCorrKey",
"LArHVScaleCorr")
318 kwargs.setdefault(
"HVScaleCorrKey",
"LArHVScaleCorrRecomputed")
320 kwargs.setdefault(
"FillHVMoments",
False)
322 kwargs.setdefault(
"MomentsNames", flags.CaloRecGPU.ActiveConfig.MomentsToCalculate)
324 if flags.CaloRecGPU.ActiveConfig.FillMissingCells:
325 kwargs.setdefault(
"MissingCellsToFill", flags.CaloRecGPU.ActiveConfig.MissingCellsToFill)
327 AthenaClusterImporter = CompFactory.GPUToAthenaImporterWithMoments(name, **kwargs)
328 result.setPrivateTools(AthenaClusterImporter)
359 result=ComponentAccumulator()
360 kwargs.setdefault(
"FileName",
"event_info.txt")
361 kwargs.setdefault(
"CellsName", cellsname)
363 kwargs.setdefault(
"SeedThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.SeedThreshold)
364 kwargs.setdefault(
"NeighborThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.GrowThreshold)
365 kwargs.setdefault(
"CellThresholdOnEorAbsEinSigma", flags.CaloRecGPU.ActiveConfig.TermThreshold)
367 kwargs.setdefault(
"GrowingNeighborOption", flags.CaloRecGPU.ActiveConfig.GrowingNeighborOption)
368 kwargs.setdefault(
"GrowingRestrictHECIWandFCalNeighbors", flags.CaloRecGPU.ActiveConfig.GrowingRestrictHECIWandFCalNeighbors)
369 kwargs.setdefault(
"GrowingRestrictPSNeighbors", flags.CaloRecGPU.ActiveConfig.GrowingRestrictPSNeighbors)
372 kwargs.setdefault(
"SplittingNeighborOption", flags.CaloRecGPU.ActiveConfig.SplittingNeighborOption)
373 kwargs.setdefault(
"SplittingRestrictHECIWandFCalNeighbors", flags.CaloRecGPU.ActiveConfig.SplittingRestrictHECIWandFCalNeighbors)
374 kwargs.setdefault(
"SplittingRestrictPSNeighbors", flags.CaloRecGPU.ActiveConfig.GPUSplittingRestrictPSNeighbors)
376 kwargs.setdefault(
"SeedCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsSeedThreshold)
377 kwargs.setdefault(
"NeighborCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsGrowThreshold)
378 kwargs.setdefault(
"CellCutsInAbsE", flags.CaloRecGPU.ActiveConfig.UseAbsTermThreshold)
380 GPUCount = CompFactory.CaloPerformancePropertiesOutput(name, **kwargs)
381 result.setPrivateTools(GPUCount)
393 result=ComponentAccumulator()
395 kwargs.setdefault(
"SeedThreshold", flags.CaloRecGPU.ActiveConfig.SeedThreshold)
396 kwargs.setdefault(
"NeighborThreshold", flags.CaloRecGPU.ActiveConfig.GrowThreshold)
397 kwargs.setdefault(
"CellThreshold", flags.CaloRecGPU.ActiveConfig.TermThreshold)
399 kwargs.setdefault(
"CellsName", cellsname)
403 if flags.CaloRecGPU.ActiveConfig.FillMissingCells:
404 kwargs.setdefault(
"MissingCellsToFill", flags.CaloRecGPU.ActiveConfig.MissingCellsToFill)
409 PloTool = CompFactory.CaloGPUClusterAndCellDataMonitor(name, **kwargs)
411 if "MonitoringTool" not in kwargs:
412 from AthenaMonitoringKernel.GenericMonitoringTool
import GenericMonitoringTool
415 result.setPrivateTools(PloTool)
453 result=ComponentAccumulator()
455 CaloClusterLocalCalib=CompFactory.CaloClusterLocalCalib
458 LCClassify = CompFactory.CaloLCClassificationTool(prefix +
"LCClassify")
459 LCClassify.ClassificationKey =
"EMFracClassify"
460 LCClassify.UseSpread =
False
461 LCClassify.MaxProbability = 0.85
if flags.GeoModel.AtlasVersion.startswith(
"Rome")
and instantiateForTrigger
else 0.5
462 LCClassify.StoreClassificationProbabilityInAOD =
True
463 if instantiateForTrigger:
464 LCClassify.UseNormalizedEnergyDensity =
not flags.GeoModel.AtlasVersion.startswith(
"Rome")
465 if not instantiateForTrigger:
466 LCClassify.WeightingOfNegClusters = flags.CaloRecGPU.ActiveConfig.CalibrationUseAbsEnergy
468 LCWeight = CompFactory.CaloLCWeightTool(prefix +
"LCWeight")
469 LCWeight.CorrectionKey =
"H1ClusterCellWeights"
470 LCWeight.SignalOverNoiseCut = 2.0
471 LCWeight.UseHadProbability =
True
473 LocalCalib = CaloClusterLocalCalib (prefix +
"LocalCalib")
474 LocalCalib.ClusterClassificationTool = [LCClassify]
475 LocalCalib.ClusterRecoStatus = [1,2]
476 LocalCalib.LocalCalibTools = [LCWeight]
477 if not instantiateForTrigger:
478 LocalCalib.WeightingOfNegClusters = flags.CaloRecGPU.ActiveConfig.CalibrationUseAbsEnergy
481 LCOut = CompFactory.CaloLCOutOfClusterTool(prefix +
"LCOut")
482 LCOut.CorrectionKey =
"OOCCorrection"
483 LCOut.UseEmProbability =
False
484 LCOut.UseHadProbability =
True
486 OOCCalib = CaloClusterLocalCalib (prefix +
"OOCCalib")
487 OOCCalib.ClusterRecoStatus = [1,2]
488 OOCCalib.LocalCalibTools = [LCOut]
489 if not instantiateForTrigger:
490 OOCCalib.WeightingOfNegClusters = flags.CaloRecGPU.ActiveConfig.CalibrationUseAbsEnergy
492 LCOutPi0 = CompFactory.CaloLCOutOfClusterTool(prefix +
"LCOutPi0")
493 LCOutPi0.CorrectionKey =
"OOCPi0Correction"
494 LCOutPi0.UseEmProbability =
True
495 LCOutPi0.UseHadProbability =
False
497 OOCPi0Calib = CaloClusterLocalCalib (prefix +
"OOCPi0Calib")
498 OOCPi0Calib.ClusterRecoStatus = [1,2]
499 OOCPi0Calib.LocalCalibTools = [LCOutPi0]
500 if not instantiateForTrigger:
501 OOCPi0Calib.WeightingOfNegClusters = flags.CaloRecGPU.ActiveConfig.CalibrationUseAbsEnergy
504 LCDeadMaterial = CompFactory.CaloLCDeadMaterialTool(prefix +
"LCDeadMaterial")
505 LCDeadMaterial.HadDMCoeffKey =
"HadDMCoeff2"
506 LCDeadMaterial.ClusterRecoStatus = 0
507 LCDeadMaterial.WeightModeDM = 2
508 LCDeadMaterial.UseHadProbability =
True
509 if not instantiateForTrigger:
510 LCDeadMaterial.WeightingOfNegClusters = flags.CaloRecGPU.ActiveConfig.CalibrationUseAbsEnergy
512 DMCalib = CaloClusterLocalCalib (prefix +
"DMCalib")
513 DMCalib.ClusterRecoStatus = [1,2]
514 DMCalib.LocalCalibTools = [LCDeadMaterial]
515 if not instantiateForTrigger:
516 DMCalib.WeightingOfNegClusters = flags.CaloRecGPU.ActiveConfig.CalibrationUseAbsEnergy
524 result.setPrivateTools(lccalibtools)
531 clustersname = None, clustersnapname="CaloTopoClusters", name="HybridClusterProcessor",
532 PlotterTool = None, addAsPrimary = True, ReallyUseGPUTools = True):
534 doLCCalib = flags.CaloRecGPU.ActiveConfig.doTopoClusterLocalCalib
536 if clustersname
is None:
537 clustersname =
"CaloCalTopoClusters" if doLCCalib
else "CaloTopoClusters"
539 if clustersname ==
"CaloTopoClusters" and doLCCalib:
540 raise RuntimeError(
"Inconsistent arguments: clustersname must not be 'CaloTopoClusters' if doTopoClusterLocalCalib is True")
542 result = ComponentAccumulator()
544 if not instantiateForTrigger:
546 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
547 from TileGeoModel.TileGMConfig
import TileGMCfg
548 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
550 result.merge(CaloNoiseCondAlgCfg(flags,
"totalNoise"))
551 result.merge(CaloNoiseCondAlgCfg(flags,
"electronicNoise"))
553 result.merge(LArGMCfg(flags))
554 result.merge(TileGMCfg(flags))
557 HybridClusterProcessor = CompFactory.CaloGPUHybridClusterProcessor(name)
558 HybridClusterProcessor.ClustersOutputName = clustersname
560 HybridClusterProcessor.WriteTriggerSpecificInfo = instantiateForTrigger
562 HybridClusterProcessor.MeasureTimes = flags.CaloRecGPU.ActiveConfig.MeasureTimes
564 HybridClusterProcessor.TimeFileOutput =
"GlobalTimes.txt"
566 HybridClusterProcessor.DeferConstantDataPreparationToFirstEvent =
True
567 HybridClusterProcessor.DoPlots = PlotterTool
is not None
568 HybridClusterProcessor.PlotterTool = PlotterTool
570 HybridClusterProcessor.NumPreAllocatedDataHolders = flags.CaloRecGPU.ActiveConfig.NumPreAllocatedDataHolders
572 if ReallyUseGPUTools:
579 HybridClusterProcessor.BeforeGPUTools = []
581 HybridClusterProcessor.GPUTools = []
585 HybridClusterProcessor.GPUTools += [result.popToolsAndMerge(
ClusterInfoCalcToolCfg(flags,
"PostGPUGrowingClusterPropertiesCalculator",
True))]
589 HybridClusterProcessor.GPUTools += [result.popToolsAndMerge(
ClusterSorterToolCfg(flags,
"GPUClusterSorting",
False) )]
595 HybridClusterProcessor.ConstantDataToGPUTool =
None
596 HybridClusterProcessor.EventDataToGPUTool =
None
597 HybridClusterProcessor.GPUToEventDataTool =
None
598 HybridClusterProcessor.SkipConversions =
True
600 HybridClusterProcessor.GPUTools = []
602 HybridClusterProcessor.BeforeGPUTools = []
610 HybridClusterProcessor.BeforeGPUTools += [ CompFactory.CaloClusterStoreRawProperties(
"RawPropertiesStorer") ]
614 HybridClusterProcessor.AfterGPUTools = []
616 if not instantiateForTrigger:
617 from CaloBadChannelTool.CaloBadChanToolConfig
import CaloBadChanToolCfg
618 caloBadChanTool = result.popToolsAndMerge( CaloBadChanToolCfg(flags) )
619 HybridClusterProcessor.AfterGPUTools += [CompFactory.CaloClusterBadChannelList(badChannelTool = caloBadChanTool)]
621 if not instantiateForTrigger
and flags.CaloRecGPU.ActiveConfig.doCalibHitMoments:
624 HybridClusterProcessor.AfterGPUTools += [calibHitsMomentsMaker]
627 if not instantiateForTrigger:
628 HybridClusterProcessor.AfterGPUTools += [CompFactory.CaloClusterSnapshot(OutputName=clustersnapname,
630 FinalClusterContainerName=clustersname)]
632 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
633 from CaloRec.CaloTopoClusterConfig
import caloTopoCoolFolderCfg
634 result.merge(CaloNoiseCondAlgCfg(flags, noisetype=
"electronicNoise"))
635 result.merge(caloTopoCoolFolderCfg(flags))
639 HybridClusterProcessor.AfterGPUTools += calibTools
642 if not instantiateForTrigger:
643 from CaloRec.CaloTopoClusterConfig
import caloTopoCoolFolderCfg
644 result.merge(caloTopoCoolFolderCfg(flags))
646 if instantiateForTrigger:
647 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
648 result.merge(CaloNoiseCondAlgCfg(flags))
650 result.addEventAlgo(HybridClusterProcessor, primary=addAsPrimary)
652 if instantiateForTrigger
or clustersname
in flags.CaloRecGPU.ActiveConfig.skipWriteList:
657 AODMoments=[
"SECOND_R"
676 if flags.CaloRecGPU.ActiveConfig.writeExtendedClusterMoments:
677 AODMoments += [
"LATERAL"
683 if flags.Reco.EnableHI:
684 AODMoments += [
"CELL_SIG_SAMPLING"]
686 if flags.CaloRecGPU.ActiveConfig.writeCalibHitClusterMoments:
687 AODMoments += [
"ENG_CALIB_TOT"
693 ,
"ENG_CALIB_DEAD_TOT"
694 ,
"ENG_CALIB_DEAD_EMB0"
695 ,
"ENG_CALIB_DEAD_TILE0"
696 ,
"ENG_CALIB_DEAD_TILEG3"
697 ,
"ENG_CALIB_DEAD_EME0"
698 ,
"ENG_CALIB_DEAD_HEC0"
699 ,
"ENG_CALIB_DEAD_FCAL"
700 ,
"ENG_CALIB_DEAD_LEAKAGE"
701 ,
"ENG_CALIB_DEAD_UNCLASS"
703 ,
"ENG_CALIB_FRAC_HAD"
704 ,
"ENG_CALIB_FRAC_REST"]
707 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD, addToESD
708 toESD = [f
"xAOD::CaloClusterContainer#{clustersname}",
709 f
"xAOD::CaloClusterAuxContainer#{clustersname}Aux.",
710 f
"CaloClusterCellLinkContainer#{clustersname}_links"]
711 toAOD = [f
"xAOD::CaloClusterContainer#{clustersname}",
712 f
"CaloClusterCellLinkContainer#{clustersname}_links"]
714 AODMoments.append(
"CellLink")
715 if flags.CaloRecGPU.ActiveConfig.addCalibrationHitDecoration:
716 AODMoments.append(flags.CaloRecGPU.ActiveConfig.CalibrationHitDecorationName)
718 if flags.CaloRecGPU.ActiveConfig.addCPData:
719 AODMoments += [
"ClusterWidthEta",
"ClusterWidthPhi"]
721 auxItems = f
"xAOD::CaloClusterAuxContainer#{clustersname}Aux."
722 auxItems+=
".".join(AODMoments)
724 toAOD.append(auxItems)
726 result.merge(addToESD(flags, toESD))
727 result.merge(addToAOD(flags, toAOD))