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))