11from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
12from AthenaConfiguration.ComponentFactory
import CompFactory
13from AthenaConfiguration.AccumulatorCache
import AccumulatorCache
14from AthenaConfiguration.Enums
import ProductionStep, LHCPeriod
15from AthenaCommon.SystemOfUnits
import GeV, deg
21 result = ComponentAccumulator()
22 _name = flags.Tau.ActiveConfig.prefix +
'JetSeedBuilder'
24 JetSeedBuilder = CompFactory.getComp(
"JetSeedBuilder")
27 result.setPrivateTools(JetSeedBuilder)
32 result = ComponentAccumulator()
33 _name = flags.Tau.ActiveConfig.prefix +
'TauVertexFinder'
35 from InDetTrackSelectionTool.InDetTrackSelectionToolConfig
import (
36 Tau_InDetTrackSelectionToolForTJVACfg)
37 from TrackVertexAssociationTool.TrackVertexAssociationToolConfig
import TauTTVAToolCfg
41 TauVertexFinder = CompFactory.getComp(
"TauVertexFinder")
43 UseTJVA = flags.Tau.doTJVA,
44 AssociatedTracks=
"GhostTrack",
45 InDetTrackSelectionToolForTJVA = result.popToolsAndMerge(Tau_InDetTrackSelectionToolForTJVACfg(flags)),
46 Key_vertexInputContainer = flags.Tau.ActiveConfig.VertexCollection,
47 TVATool = result.popToolsAndMerge(TauTTVAToolCfg(flags)),
48 inEleRM = flags.Tau.ActiveConfig.inTauEleRM,
51 result.setPrivateTools(TauVertexFinder)
57 result = ComponentAccumulator()
58 _name = flags.Tau.ActiveConfig.prefix +
'TauAxis'
60 TauAxisSetter = CompFactory.getComp(
"TauAxisSetter")
63 VertexCorrection = flags.Tau.doVertexCorrection )
65 result.setPrivateTools(TauAxisSetter)
72 if flags.Common.ProductionStep
is ProductionStep.Reconstruction:
73 ParticleCache =
"ParticleCaloExtension"
82 result = ComponentAccumulator()
83 _name = flags.Tau.ActiveConfig.prefix +
'TauTrackFinder'
86 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
87 result.merge(BeamSpotCondAlgCfg(flags))
89 from TrkConfig.TrkVertexFitterUtilsConfig
import AtlasTrackToVertexIPEstimatorCfg
90 from InDetConfig.InDetTrackSelectorToolConfig
import TauRecInDetTrackSelectorToolCfg
92 _LargeD0TrackInputContainer = (flags.Tau.ActiveConfig.LargeD0TrackCollection
if flags.Tau.associateLRT
else "")
95 if flags.Tau.ActiveConfig.inTauLRT:
96 _LargeD0TrackInputContainer = flags.Tau.ActiveConfig.LargeD0TrackCollection
98 TauTrackFinder = CompFactory.getComp(
"TauTrackFinder")
102 TrackSelectorToolTau = result.popToolsAndMerge(TauRecInDetTrackSelectorToolCfg(flags)),
103 TrackToVertexTool =
"",
104 removeDuplicateCoreTracks = flags.Tau.RemoveDupeCoreTracks,
105 useGhostTracks = flags.Tau.useGhostTracks,
106 ghostTrackDR = flags.Tau.ghostTrackDR,
107 Key_jetContainer = (flags.Tau.ActiveConfig.SeedJetCollection
if flags.Tau.useGhostTracks
else ""),
108 Key_trackPartInputContainer = flags.Tau.ActiveConfig.TrackCollection,
109 Key_LargeD0TrackInputContainer = _LargeD0TrackInputContainer,
110 TrackToVertexIPEstimator = result.popToolsAndMerge(AtlasTrackToVertexIPEstimatorCfg(flags)),
111 inEleRM = flags.Tau.ActiveConfig.inTauEleRM,
113 result.setPrivateTools(TauTrackFinder)
119 result = ComponentAccumulator()
120 _name = flags.Tau.ActiveConfig.prefix +
'TauTrackCaloExtrapolator'
122 from TrackToCalo.TrackToCaloConfig
import ParticleCaloExtensionToolCfg
124 from ActsConfig.ActsGeometryConfig
import ActsExtrapolationToolCfg
125 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometrySvcCfg
127 TauTrackCaloExtrapolator = CompFactory.getComp(
"TauTrackCaloExtrapolator")
129 ParticleCaloExtensionTool = result.popToolsAndMerge(ParticleCaloExtensionToolCfg(flags)),
131 ExtrapOnlyChargedTracks =
False if flags.GeoModel.Run <= LHCPeriod.Run3
else True,
132 ExtrapolationTool = result.popToolsAndMerge(ActsExtrapolationToolCfg(flags,MaxSteps=10000)),
133 useACTSExtrapolator =
True if (flags.Tau.useACTSExtrapolator
and flags.GeoModel.Run > LHCPeriod.Run3)
else False,
135 result.merge(ActsTrackingGeometrySvcCfg(flags))
136 result.setPrivateTools(TauTrackCaloExtrapolator)
144 result = ComponentAccumulator()
145 _name = flags.Tau.ActiveConfig.prefix +
'TauClusterFinder'
148 TauClusterFinder = CompFactory.getComp(
"TauClusterFinder")
151 inEleRM = flags.Tau.ActiveConfig.inTauEleRM,
155 result.setPrivateTools(TauClusterFinder)
160 result = ComponentAccumulator()
161 _name = flags.Tau.ActiveConfig.prefix +
'TauVertexedClusterDecorator'
163 TauVertexedClusterDecorator = CompFactory.getComp(
"TauVertexedClusterDecorator")
165 SeedJet = flags.Tau.ActiveConfig.SeedJetCollection)
167 result.setPrivateTools(myTauVertexedClusterDecorator)
172 result = ComponentAccumulator()
173 _name = flags.Tau.ActiveConfig.prefix +
'TauTrackRNNClassifier'
175 TrackRNN = CompFactory.tauRecTools.TrackRNN
176 _RNN = TrackRNN(name = _name +
"_TrackRNN",
177 InputWeightsPath = flags.Tau.tauRNNTrackClassConfig,
178 calibFolder = flags.Tau.tauRecToolsCVMFSPath,
179 removeDuplicateChargedTracks = flags.Tau.removeDuplicateChargedTracks)
181 result.setPrivateTools(_RNN)
186 result = ComponentAccumulator()
187 _name = flags.Tau.ActiveConfig.prefix +
'TauTrackRNNClassifier'
190 TauTrackRNNClassifier = CompFactory.tauRecTools.TauTrackRNNClassifier
193 cppyy.load_library(
'libxAODTau_cDict')
196 _classifyLRTWithDedicated = flags.Tau.classifyLRTWithDedicated
197 if flags.Tau.associateLRT
and not flags.Tau.classifyLRT:
201 if flags.Tau.ActiveConfig.inTauLRT:
203 _classifyLRTWithDedicated =
True
206 myTauTrackClassifier = TauTrackRNNClassifier( name = _name,
208 classifyLRT = _classifyLRT,
209 classifyLRTWithDedicated = _classifyLRTWithDedicated)
211 result.setPrivateTools(myTauTrackClassifier)
217 result = ComponentAccumulator()
218 _name = flags.Tau.ActiveConfig.prefix +
'EnergyCalibrationLC'
220 TauCalibrateLC = CompFactory.getComp(
"TauCalibrateLC")
222 calibrationFile = flags.Tau.CalibrateLCConfig,
223 ForceZeroMass = force_zero_mass,
224 Key_vertexInputContainer = flags.Tau.ActiveConfig.VertexCollection)
226 result.setPrivateTools(TauCalibrateLC)
232 result = ComponentAccumulator()
233 _name = flags.Tau.ActiveConfig.prefix +
'CellVariables'
235 TauCellVariables = CompFactory.getComp(
"TauCellVariables")
237 VertexCorrection = flags.Tau.doVertexCorrection)
239 result.setPrivateTools(TauCellVariables)
245 result = ComponentAccumulator()
246 _name = flags.Tau.ActiveConfig.prefix +
'TauElectronVetoVars'
248 from TrackToCalo.TrackToCaloConfig
import ParticleCaloExtensionToolCfg
250 from ActsConfig.ActsGeometryConfig
import ActsExtrapolationToolCfg
251 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometrySvcCfg
253 TauElectronVetoVariables = CompFactory.getComp(
"TauElectronVetoVariables")
255 VertexCorrection = flags.Tau.doVertexCorrection,
256 ParticleCaloExtensionTool = result.popToolsAndMerge(ParticleCaloExtensionToolCfg(flags)),
258 ExtrapolationTool = result.popToolsAndMerge(ActsExtrapolationToolCfg(flags,MaxSteps=10000)),
259 useACTSExtrapolator =
False,)
260 result.merge(ActsTrackingGeometrySvcCfg(flags))
261 result.setPrivateTools(TauElectronVetoVariables)
267 result = ComponentAccumulator()
268 _name = flags.Tau.ActiveConfig.prefix +
'TauShotFinder'
270 shotPtCut_1Photon = flags.Tau.shotPtCut_1Photon
271 shotPtCut_2Photons = flags.Tau.shotPtCut_2Photons
274 from CaloClusterCorrection.StandardCellWeightCalib
import getCellWeightTool
275 CaloWeightTool = getCellWeightTool(flags=flags)
278 TauShotFinder = CompFactory.getComp(
"TauShotFinder")
281 CaloWeightTool = result.popToolsAndMerge(CaloWeightTool),
283 MinPtCut = shotPtCut_1Photon,
284 AutoDoubleShotCut = shotPtCut_2Photons,
285 Key_RemovedClusterInputContainer = flags.Tau.ActiveConfig.RemovedElectronClusters,
286 RemoveElectronCells = flags.Tau.ActiveConfig.RemoveElectronCells,
287 inEleRM = flags.Tau.ActiveConfig.inTauEleRM,
290 result.setPrivateTools(TauShotFinder)
297 result = ComponentAccumulator()
298 _name = flags.Tau.ActiveConfig.prefix +
'Pi0ClusterFinder'
300 TauPi0CreateROI = CompFactory.getComp(
"TauPi0CreateROI")
304 Key_caloCellInputContainer =
"AllCalo",
305 Key_RemovedClusterInputContainer = flags.Tau.ActiveConfig.RemovedElectronClusters,
306 inEleRM = flags.Tau.ActiveConfig.inTauEleRM,
307 RemoveElectronCells = flags.Tau.ActiveConfig.RemoveElectronCells,
310 result.setPrivateTools(myTauPi0CreateROI)
316 result = ComponentAccumulator()
317 _name = flags.Tau.ActiveConfig.prefix +
'tauPi0CellContainerFinalizer'
319 CaloCellContainerFinalizerTool = CompFactory.getComp(
"CaloCellContainerFinalizerTool")
322 result.setPrivateTools(TauCellContainerFinalizer)
330 result = ComponentAccumulator()
331 _name = flags.Tau.ActiveConfig.prefix +
'LCClassify'
333 CaloLCClassificationTool = CompFactory.getComp(
"CaloLCClassificationTool")
335 LCClassify.ClassificationKey =
"EMFracClassify"
336 LCClassify.UseSpread =
False
337 LCClassify.MaxProbability = 0.5
339 LCClassify.StoreClassificationProbabilityInAOD =
True
340 LCClassify.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
341 LCClassify.UseNormalizedEnergyDensity =
True
343 result.setPrivateTools(LCClassify)
347 result = ComponentAccumulator()
348 _name = flags.Tau.ActiveConfig.prefix +
'CaloLCWeightTool'
351 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
352 result.merge(CaloNoiseCondAlgCfg(flags,
"totalNoise"))
354 result.merge(CaloNoiseCondAlgCfg(flags,
"electronicNoise"))
356 CaloLCWeightTool = CompFactory.getComp(
"CaloLCWeightTool")
358 LCWeight.CorrectionKey =
"H1ClusterCellWeights"
359 LCWeight.SignalOverNoiseCut = 2.0
360 LCWeight.UseHadProbability =
True
362 result.setPrivateTools(LCWeight)
366 result = ComponentAccumulator()
367 _name = flags.Tau.ActiveConfig.prefix +
'CaloLCOutOfClusterTool'
369 CaloLCOutOfClusterTool = CompFactory.getComp(
"CaloLCOutOfClusterTool")
371 LCOut.CorrectionKey =
"OOCCorrection"
372 LCOut.UseEmProbability =
False
373 LCOut.UseHadProbability =
True
375 result.setPrivateTools(LCOut)
379 result = ComponentAccumulator()
380 _name = flags.Tau.ActiveConfig.prefix +
'LCOutPi0'
382 CaloLCOutOfClusterTool = CompFactory.getComp(
"CaloLCOutOfClusterTool")
384 LCOutPi0.CorrectionKey =
"OOCPi0Correction"
385 LCOutPi0.UseEmProbability =
True
386 LCOutPi0.UseHadProbability =
False
388 result.setPrivateTools(LCOutPi0)
392 result = ComponentAccumulator()
393 _name = flags.Tau.ActiveConfig.prefix +
'CaloLCDeadMaterialTool'
395 CaloLCDeadMaterialTool = CompFactory.getComp(
"CaloLCDeadMaterialTool")
397 LCDeadMaterial.HadDMCoeffKey =
"HadDMCoeff2"
398 LCDeadMaterial.ClusterRecoStatus = 0
399 LCDeadMaterial.WeightModeDM = 2
400 LCDeadMaterial.UseHadProbability =
True
401 LCDeadMaterial.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
403 result.setPrivateTools(LCDeadMaterial)
407 result = ComponentAccumulator()
408 _name = flags.Tau.ActiveConfig.prefix +
'CaloLocalCalib'
410 CaloClusterLocalCalib = CompFactory.getComp(
"CaloClusterLocalCalib")
413 LocalCalib.ClusterRecoStatus = [1,2]
415 LocalCalib.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
417 result.setPrivateTools(LocalCalib)
421 result = ComponentAccumulator()
422 _name = flags.Tau.ActiveConfig.prefix +
'OOCCalibTool'
424 CaloClusterLocalCalib = CompFactory.getComp(
"CaloClusterLocalCalib")
425 OOCCalib = CaloClusterLocalCalib (_name)
426 OOCCalib.ClusterRecoStatus = [1,2]
428 OOCCalib.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
430 result.setPrivateTools(OOCCalib)
434 result = ComponentAccumulator()
435 _name = flags.Tau.ActiveConfig.prefix +
'DMCalib'
437 CaloClusterLocalCalib = CompFactory.getComp(
"CaloClusterLocalCalib")
439 DMCalib.ClusterRecoStatus = [1,2]
441 DMCalib.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
443 result.setPrivateTools(DMCalib)
447 result = ComponentAccumulator()
448 _name = flags.Tau.ActiveConfig.prefix +
'OOCPi0CalibTool'
450 CaloClusterLocalCalib = CompFactory.getComp(
"CaloClusterLocalCalib")
451 OOCPi0Calib = CaloClusterLocalCalib (_name)
452 OOCPi0Calib.ClusterRecoStatus = [1,2]
454 OOCPi0Calib.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
456 result.setPrivateTools(OOCPi0Calib)
460 result = ComponentAccumulator()
461 _name = flags.Tau.ActiveConfig.prefix +
'Pi0TopoClusterMaker'
464 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
465 result.merge(CaloNoiseCondAlgCfg(flags,
"totalNoise"))
467 result.merge(CaloNoiseCondAlgCfg(flags,
"electronicNoise"))
469 CaloTopoClusterMaker = CompFactory.getComp(
"CaloTopoClusterMaker")
472 TopoClusterForTaus.CellsName = flags.Tau.ActiveConfig.TauCommonPi0Cells
473 TopoClusterForTaus.CalorimeterNames=[
"LAREM"]
474 TopoClusterForTaus.SeedSamplingNames = [
"PreSamplerB",
"EMB1",
"EMB2",
"PreSamplerE",
"EME1",
"EME2"]
475 TopoClusterForTaus.NeighborOption =
"super3D"
476 TopoClusterForTaus.RestrictHECIWandFCalNeighbors =
False
477 TopoClusterForTaus.RestrictPSNeighbors =
True
478 TopoClusterForTaus.CellThresholdOnEorAbsEinSigma = 0.0
479 TopoClusterForTaus.NeighborThresholdOnEorAbsEinSigma = 2.0
480 TopoClusterForTaus.SeedThresholdOnEorAbsEinSigma = 4.0
481 TopoClusterForTaus.SeedCutsInAbsE =
True
482 TopoClusterForTaus.ClusterCutsInAbsEt =
True
483 TopoClusterForTaus.ClusterEtorAbsEtCut = 0.5*GeV
484 TopoClusterForTaus.TwoGaussianNoise = flags.Calo.TopoCluster.doTwoGaussianNoise
486 TopoClusterForTaus.SeedCutsInT = flags.Calo.TopoCluster.doTimeCut
487 TopoClusterForTaus.CutOOTseed = flags.Calo.TopoCluster.extendTimeCut
and flags.Calo.TopoCluster.doTimeCut
488 TopoClusterForTaus.UseTimeCutUpperLimit = flags.Calo.TopoCluster.useUpperLimitForTimeCut
489 TopoClusterForTaus.TimeCutUpperLimit = flags.Calo.TopoCluster.timeCutUpperLimit
490 TopoClusterForTaus.XTalkEM2 = flags.Calo.TopoCluster.xtalkEM2
491 TopoClusterForTaus.XTalkEM2D = flags.Calo.TopoCluster.xtalkEM2D
492 TopoClusterForTaus.XTalkEM2n = flags.Calo.TopoCluster.xtalkEM2n
493 TopoClusterForTaus.XTalkEM3 = flags.Calo.TopoCluster.xtalkEM3
494 TopoClusterForTaus.XTalkEMEta = flags.Calo.TopoCluster.xtalkEMEta
495 TopoClusterForTaus.XTalkDeltaT = flags.Calo.TopoCluster.xtalkDeltaT
496 TopoClusterForTaus.XTalk2Eratio1 = flags.Calo.TopoCluster.xtalk2Eratio1
497 TopoClusterForTaus.XTalk2Eratio2 = flags.Calo.TopoCluster.xtalk2Eratio2
498 TopoClusterForTaus.XTalk3Eratio = flags.Calo.TopoCluster.xtalk3Eratio
499 TopoClusterForTaus.XTalkEtaEratio = flags.Calo.TopoCluster.xtalkEtaEratio
500 TopoClusterForTaus.XTalk2DEratio = flags.Calo.TopoCluster.xtalk2DEratio
502 result.setPrivateTools(TopoClusterForTaus)
507 result = ComponentAccumulator()
508 _name = flags.Tau.ActiveConfig.prefix +
'Pi0TopoClusterSplitter'
510 CaloTopoClusterSplitter = CompFactory.getComp(
"CaloTopoClusterSplitter")
517 TopoSplitterForTaus.SamplingNames = [
"EMB2",
"EME2"]
521 TopoSplitterForTaus.SecondarySamplingNames = [
"EMB1",
"EME1"]
522 TopoSplitterForTaus.ShareBorderCells =
True
523 TopoSplitterForTaus.RestrictHECIWandFCalNeighbors =
False
524 TopoSplitterForTaus.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
526 result.setPrivateTools(TopoSplitterForTaus)
530 result = ComponentAccumulator()
531 _name = flags.Tau.ActiveConfig.prefix +
'Pi0TopoMoments'
534 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
535 result.merge(CaloNoiseCondAlgCfg(flags,
"totalNoise"))
537 result.merge(CaloNoiseCondAlgCfg(flags,
"electronicNoise"))
539 CaloClusterMomentsMaker = CompFactory.getComp(
"CaloClusterMomentsMaker")
541 TopoMomentsForTaus.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
542 TopoMomentsForTaus.MaxAxisAngle = 20*deg
543 TopoMomentsForTaus.TwoGaussianNoise = flags.Calo.TopoCluster.doTwoGaussianNoise
544 TopoMomentsForTaus.MinBadLArQuality = 4000
545 TopoMomentsForTaus.MomentsNames = [
"FIRST_PHI"
566 result.setPrivateTools(TopoMomentsForTaus)
570 result = ComponentAccumulator()
571 _name = flags.Tau.ActiveConfig.prefix +
'CaloClusterBadChannelList'
573 CaloClusterBadChannelListCorr = CompFactory.getComp(
"CaloClusterBadChannelList")
576 result.setPrivateTools(BadChannelListCorrForTaus)
582 result = ComponentAccumulator()
583 _name = flags.Tau.ActiveConfig.prefix +
'Pi0ClusterCreator'
589 for typ, nam
in [i.split(
'#')
for i
in flags.Input.TypedCollections]:
590 if typ ==
'CaloCellContainer':
591 extraInputs += [(
'CaloCellContainer', nam)]
593 TauPi0ClusterCreator = CompFactory.getComp(
"TauPi0ClusterCreator")
595 ExtraInputs = extraInputs,
596 RecoFromAOD = flags.Common.ProductionStep
is ProductionStep.Derivation)
598 result.setPrivateTools(TauPi0ClusterCreator)
604 result = ComponentAccumulator()
605 _name = flags.Tau.ActiveConfig.prefix +
'Pi0ClusterScaler'
607 TauPi0ClusterScaler = CompFactory.getComp(
"TauPi0ClusterScaler")
609 MinNeutralPFOPt = flags.Tau.MinNeutralPFOPt)
611 result.setPrivateTools(TauPi0ClusterScaler)
617 result = ComponentAccumulator()
618 _name = flags.Tau.ActiveConfig.prefix +
'Pi0ScoreCalculator'
620 TauPi0ScoreCalculator = CompFactory.getComp(
"TauPi0ScoreCalculator")
622 BDTWeightFile = flags.Tau.Pi0ScoreConfig)
624 result.setPrivateTools(TauPi0ScoreCalculator)
630 result = ComponentAccumulator()
631 _name = flags.Tau.ActiveConfig.prefix +
'Pi0Selector'
633 TauPi0Selector = CompFactory.getComp(
"TauPi0Selector")
635 Pi0EtCut = flags.Tau.pi0EtCuts,
636 Pi0BDTCut_1prong = flags.Tau.pi0MVACuts_1prong,
637 Pi0BDTCut_mprong = flags.Tau.pi0MVACuts_mprong)
639 result.setPrivateTools(TauPi0Selector)
645 result = ComponentAccumulator()
646 _name = flags.Tau.ActiveConfig.prefix +
'TauVertexVariables'
648 from TrkConfig.TrkVertexFittersConfig
import TauAdaptiveVertexFitterCfg
649 from TrkConfig.TrkVertexSeedFinderToolsConfig
import (
650 CrossDistancesSeedFinderCfg)
652 TauVertexVariables = CompFactory.getComp(
"TauVertexVariables")
654 VertexFitter = result.popToolsAndMerge(TauAdaptiveVertexFitterCfg(flags)),
655 SeedFinder = result.popToolsAndMerge(CrossDistancesSeedFinderCfg(flags)) )
657 result.setPrivateTools(TauVertexVariables)
663 result = ComponentAccumulator()
664 _name = flags.Tau.ActiveConfig.prefix +
'TauCommonCalcVars'
666 TauCommonCalcVars = CompFactory.getComp(
"TauCommonCalcVars")
668 doRun4 = flags.GeoModel.Run > LHCPeriod.Run3)
670 result.setPrivateTools(TauCommonCalcVars)
676 result = ComponentAccumulator()
677 _name = flags.Tau.ActiveConfig.prefix +
'TauSubstructure'
679 TauSubstructureVariables = CompFactory.getComp(
"TauSubstructureVariables")
681 doRun4 = flags.GeoModel.Run > LHCPeriod.Run3)
683 result.setPrivateTools(TauSubstructureVariables)
689 result = ComponentAccumulator()
690 _name = flags.Tau.ActiveConfig.prefix +
'MvaTESVariableDecorator'
692 eventShapeCollection = flags.Tau.ActiveConfig.EventShapeCollection
693 if 'EMPFlow' in flags.Tau.ActiveConfig.SeedJetCollection:
694 eventShapeCollection =
"Kt4EMPFlowEventShape"
695 elif 'EMTopo' in flags.Tau.ActiveConfig.SeedJetCollection:
696 eventShapeCollection =
"Kt4EMTopoOriginEventShape"
698 MvaTESVariableDecorator = CompFactory.getComp(
"MvaTESVariableDecorator")
700 Key_vertexInputContainer = flags.Tau.ActiveConfig.VertexCollection,
701 EventShapeKey = eventShapeCollection,
702 VertexCorrection = flags.Tau.doVertexCorrection,
703 SeedJet = flags.Tau.ActiveConfig.SeedJetCollection)
704 result.setPrivateTools(MvaTESVariableDecorator)
710 result = ComponentAccumulator()
711 _name = flags.Tau.ActiveConfig.prefix +
'MvaTESEvaluator'
713 MvaTESEvaluator = CompFactory.getComp(
"MvaTESEvaluator")
715 WeightFileName = flags.Tau.MvaTESConfig,
716 WeightFileName0p = flags.Tau.MvaTESConfig0p )
718 result.setPrivateTools(MvaTESEvaluator)
722 result = ComponentAccumulator()
723 _name = flags.Tau.ActiveConfig.prefix +
'TauIDVarCalculator'
725 TauIDVarCalculator = CompFactory.getComp(
"TauIDVarCalculator")
727 VertexCorrection = flags.Tau.doVertexCorrection,
728 doRun4 = flags.GeoModel.Run > LHCPeriod.Run3)
730 result.setPrivateTools(myTauIDVarCalculator)
734 result = ComponentAccumulator()
735 _name = flags.Tau.ActiveConfig.prefix +
'TauJetRNN'
737 TauJetRNNEvaluator = CompFactory.getComp(
"TauJetRNNEvaluator")
738 RNNConf = flags.Tau.TauJetRNNConfig
741 NetworkFile1P = RNNConf[0],
742 NetworkFile2P = RNNConf[1],
743 NetworkFile3P = RNNConf[2],
744 OutputVarname =
"RNNJetScore",
748 ApplyLooseTrackSel = applyLooseTrackSel,
749 VertexCorrection = flags.Tau.doVertexCorrection,
750 InputLayerScalar =
"scalar",
751 InputLayerTracks =
"tracks",
752 InputLayerClusters =
"clusters",
753 OutputLayer =
"rnnid_output",
754 OutputNode =
"sig_prob")
756 result.setPrivateTools(myTauJetRNNEvaluator)
760 import PyUtils.RootUtils
as ru
761 ROOT = ru.import_root()
763 cppyy.load_library(
'libxAODTau_cDict')
765 result = ComponentAccumulator()
766 _name = flags.Tau.ActiveConfig.prefix +
'TauWPDecoratorJetRNN'
768 TauWPDecorator = CompFactory.getComp(
"TauWPDecorator")
769 WPConf = flags.Tau.TauJetRNNWPConfig
771 flatteningFile1Prong = WPConf[0],
772 flatteningFile2Prong = WPConf[1],
773 flatteningFile3Prong = WPConf[2],
775 [ ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigVeryLoose,
776 ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigLoose,
777 ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigMedium,
778 ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigTight ],
779 SigEff1P = [0.95, 0.85, 0.75, 0.60],
780 SigEff2P = [0.95, 0.75, 0.60, 0.45],
781 SigEff3P = [0.95, 0.75, 0.60, 0.45],
782 ScoreName =
"RNNJetScore",
783 NewScoreName =
"RNNJetScoreSigTrans",
786 result.setPrivateTools(myTauWPDecorator)
789def TauGNNEvaluatorCfg(flags, version=0, applyLooseTrackSel=False, applyTightTrackSel=False, tauContainerName=""):
790 result = ComponentAccumulator()
791 _name = flags.Tau.ActiveConfig.prefix +
'TauGNN_v' + str(version)
793 TauGNNEvaluator = CompFactory.getComp(
"TauGNNEvaluator")
794 GNNConf = flags.Tau.TauGNNConfig[version]
796 useTRT = flags.Detector.EnableTRT,
797 NetworkFileInclusive = GNNConf,
798 OutputVarname = flags.Tau.GNTauScoreName[version],
799 OutputPTau =
"GNTauProbTau",
800 OutputPJet =
"GNTauProbJet",
801 MaxTracks = flags.Tau.GNTauMaxTracks[version],
802 MaxClusters = flags.Tau.GNTauMaxClusters[version],
804 MinTauPt = flags.Tau.MinPtDAOD,
805 ApplyLooseTrackSel = applyLooseTrackSel,
806 ApplyTightTrackSel = applyTightTrackSel,
807 VertexCorrection = flags.Tau.doVertexCorrection,
808 InputLayerScalar =
'tau_vars',
809 InputLayerTracks =
'track_vars',
810 InputLayerClusters =
'cluster_vars',
811 NodeNameTau=flags.Tau.GNTauNodeNameTau,
812 NodeNameJet=flags.Tau.GNTauNodeNameJet,
813 TauContainerName = tauContainerName,
816 result.setPrivateTools(myTauGNNEvaluator)
820 """Names of the decorations TausRUs writes on the tau, all of them floats."""
823 "TausRUsEleRejScore",
828 names += [f
"TausRUsDecayModeScore{i}" for i
in range(5)]
829 names += [f
"TausRUs{particle}P4_{component}"
830 for particle
in (
"Tau",
"ChargedPion",
"NeutralPion")
831 for component
in (
"pt",
"eta",
"phi",
"m")]
832 names += [f
"TausRUsVertex_{coordinate}" for coordinate
in (
"x",
"y",
"z")]
836 """Decorations TausRUs writes on each of the tau's xAOD::TauTrack."""
837 return [
"TausRUsTrackClass"] + [f
"TausRUsTrackScore{i}" for i
in range(4)]
840 """TausRUs multi-output tau network."""
842 result = ComponentAccumulator()
843 _name = name
or flags.Tau.ActiveConfig.prefix +
'TausRUs'
845 if flags.Tau.TausRUsUseTriton:
846 from AthTritonComps.TritonToolConfig
import TritonToolCfg
847 inferenceTool = result.popToolsAndMerge(TritonToolCfg(
849 model_name = flags.Tau.TausRUsTritonModel,
850 url = flags.Tau.TausRUsTritonUrl,
851 port = flags.Tau.TausRUsTritonPort,
852 name = _name +
'_TritonTool'))
854 from AthOnnxComps.OnnxRuntimeInferenceConfig
import OnnxRuntimeInferenceToolCfg
855 inferenceTool = result.popToolsAndMerge(OnnxRuntimeInferenceToolCfg(
857 flags.Tau.TausRUsModelFile,
858 name = _name +
'_ORTTool'))
860 TausRUsEvaluator = CompFactory.getComp(
"TausRUsEvaluator")
863 InferenceTool = inferenceTool,
864 ModelFile = flags.Tau.TausRUsModelFile,
865 MinTauPt = flags.Tau.TausRUsMinPt,
866 TauContainerName = tauContainerName,
867 TauTrackContainerName = tauTrackContainerName))
871 result = ComponentAccumulator()
872 _name = flags.Tau.ActiveConfig.prefix +
'TauWPDecoratorGNN_v' + str(version)
874 TauWPDecorator = CompFactory.getComp(
"TauWPDecorator")
875 WPConf = flags.Tau.TauGNNWP[version]
877 flatteningFile1Prong = WPConf[0],
878 flatteningFile2Prong = WPConf[1],
879 flatteningFile3Prong = WPConf[2],
880 TauContainerName = tauContainerName,
881 DecorWPNames = flags.Tau.GNTauDecorWPNames[version],
882 DecorWPCutEffs1P = [0.95, 0.85, 0.75, 0.60],
883 DecorWPCutEffs2P = [0.95, 0.75, 0.60, 0.45],
884 DecorWPCutEffs3P = [0.95, 0.75, 0.60, 0.45],
885 ScoreName = flags.Tau.GNTauScoreName[version],
886 NewScoreName = flags.Tau.GNTauTransScoreName[version],
888 result.setPrivateTools(myTauWPDecorator)
892 result = ComponentAccumulator()
893 _name = flags.Tau.ActiveConfig.prefix +
'TauGNNeVeto'
895 TauGNNEvaluator = CompFactory.getComp(
"TauGNNEvaluator")
897 useTRT = flags.Detector.EnableTRT,
898 NetworkFileInclusive = flags.Tau.TauGNNeVetoConfig[0],
899 OutputDiscriminant = flags.Tau.TauGNNeVetoOutputDiscriminant_NeglogPJet_True,
900 OutputVarname = flags.Tau.TauGNNeVetoScoreName,
901 OutputPTau =
"GNNeVetoProbTau",
902 OutputPJet =
"GNNeVetoProbJet",
903 MaxTracks = flags.Tau.TauGNNeVetoMaxTracks[0],
904 MaxClusters = flags.Tau.TauGNNeVetoMaxClusters[0],
906 MinTauPt = flags.Tau.MinPtDAOD,
907 ApplyLooseTrackSel = applyLooseTrackSel,
908 ApplyTightTrackSel = applyTightTrackSel,
909 VertexCorrection = flags.Tau.doVertexCorrection,
910 InputLayerScalar =
'jet_var',
911 InputLayerTracks =
'tracks_r22default_sd0sort',
912 InputLayerClusters =
'cells_var',
913 NodeNameTau=flags.Tau.TauGNNeVetoNodeNameTau,
914 NodeNameJet=flags.Tau.TauGNNeVetoNodeNameJet,
915 TauContainerName = tauContainerName,
918 result.setPrivateTools(myTauGNNeVetoEvaluator)
923 result = ComponentAccumulator()
924 _name = flags.Tau.ActiveConfig.prefix +
'TauWPDecoratorGNNeVeto'
926 TauWPDecorator = CompFactory.getComp(
"TauWPDecorator")
927 WPConf = flags.Tau.TauGNNeVetoWP
929 flatteningFile1Prong = WPConf[0],
930 flatteningFile2Prong = WPConf[1],
931 flatteningFile3Prong = WPConf[2],
932 TauContainerName = tauContainerName,
933 DecorWPNames = flags.Tau.TauGNNeVetoDecorWPNames,
934 DecorWPCutEffs1P = [0.95, 0.90, 0.85],
935 DecorWPCutEffs2P = [0.95, 0.90, 0.85],
936 DecorWPCutEffs3P = [0.98, 0.95, 0.90],
938 ScoreBounds = [-0.01, 14.01],
939 ScoreName = flags.Tau.TauGNNeVetoScoreName,
940 NewScoreName = flags.Tau.TauGNNeVetoTransScoreName,
942 result.setPrivateTools(myTauWPDecorator)
947 result = ComponentAccumulator()
949 TauGNNEvaluator = CompFactory.TauGNNEvaluator(
950 name = flags.Tau.ActiveConfig.prefix +
'TauDisplacedGNN',
951 NetworkFileInclusive = flags.Tau.TauDisplacedGNNConfig[0],
952 OutputVarname =
"GNdTauScore",
953 OutputPTau =
"GNdTauProbTau",
954 OutputPJet =
"GNdTauProbJet",
956 MinTauPt = flags.Tau.MinPtDAOD,
957 VertexCorrection = flags.Tau.doVertexCorrection,
958 NodeNameTau=
"GNdTauv3_pb",
959 NodeNameJet=
"GNdTauv3_pu",
960 TauContainerName = tauContainerName,
962 result.setPrivateTools(TauGNNEvaluator)
966 result = ComponentAccumulator()
967 _name = flags.Tau.ActiveConfig.prefix +
'TauEleRNN'
969 TauJetRNNEvaluator = CompFactory.getComp(
"TauJetRNNEvaluator")
970 RNNConf = flags.Tau.TauEleRNNConfig
972 useTRT = flags.Detector.EnableTRT,
973 NetworkFile1P = RNNConf[0],
974 NetworkFile3P = RNNConf[1],
975 OutputVarname =
"RNNEleScore",
979 ApplyLooseTrackSel = applyLooseTrackSel,
980 VertexCorrection = flags.Tau.doVertexCorrection,
981 InputLayerScalar =
"scalar",
982 InputLayerTracks =
"tracks",
983 InputLayerClusters =
"clusters",
984 OutputLayer =
"rnneveto_output",
985 OutputNode =
"sig_prob")
987 result.setPrivateTools(myTauEleRNNEvaluator)
992 result = ComponentAccumulator()
994 WPConf = flags.Tau.TauEleRNNWPConfig
996 from AthenaConfiguration.Enums
import ProductionStep
998 if flags.Common.ProductionStep
is ProductionStep.Derivation:
999 _name = flags.Tau.ActiveConfig.prefix +
'TauWPDecoratorEleRNNFix_v1'
1000 NewScoreName =
"RNNEleScoreSigTrans_v1"
1004 DecorWPNames = [
"EleRNNLoose_v1",
"EleRNNMedium_v1",
"EleRNNTight_v1" ]
1005 DecorWPCutEffs1P = [0.95, 0.90, 0.85]
1006 DecorWPCutEffs3P = [0.98, 0.95, 0.90]
1009 import PyUtils.RootUtils
as ru
1010 ROOT = ru.import_root()
1012 cppyy.load_library(
'libxAODTau_cDict')
1014 _name = flags.Tau.ActiveConfig.prefix +
'TauWPDecoratorEleRNN'
1015 NewScoreName =
"RNNEleScoreSigTrans"
1016 SigEff1P = [0.95, 0.90, 0.85]
1017 SigEff3P = [0.98, 0.95, 0.90]
1018 CutEnumVals = [ ROOT.xAOD.TauJetParameters.IsTauFlag.EleRNNLoose,
1019 ROOT.xAOD.TauJetParameters.IsTauFlag.EleRNNMedium,
1020 ROOT.xAOD.TauJetParameters.IsTauFlag.EleRNNTight ]
1022 DecorWPCutEffs1P = []
1023 DecorWPCutEffs3P = []
1025 TauWPDecorator = CompFactory.getComp(
"TauWPDecorator")
1027 flatteningFile1Prong = WPConf[0],
1028 flatteningFile3Prong = WPConf[1],
1029 CutEnumVals = CutEnumVals,
1030 DecorWPNames = DecorWPNames,
1031 SigEff1P = SigEff1P,
1032 SigEff3P = SigEff3P,
1033 DecorWPCutEffs1P = DecorWPCutEffs1P,
1034 DecorWPCutEffs3P = DecorWPCutEffs3P,
1036 ScoreName =
"RNNEleScore",
1037 NewScoreName = NewScoreName,
1040 result.setPrivateTools(myTauEleWPDecorator)
1044 result = ComponentAccumulator()
1045 _name = flags.Tau.ActiveConfig.prefix +
'TauDecayModeNNClassifier'
1047 TauDecayModeNNClassifier = CompFactory.getComp(
"TauDecayModeNNClassifier")
1049 WeightFile=flags.Tau.DecayModeNNClassifierConfig)
1051 result.setPrivateTools(myTauDecayModeNNClassifier)
1055 result = ComponentAccumulator()
1056 _name = flags.Tau.ActiveConfig.prefix +
'TauAODSelector'
1058 TauAODSelector = CompFactory.getComp(
"TauAODSelector")
1060 Min0pTauPt = flags.Tau.MinPt0p,
1061 MinTauPt = flags.Tau.MinPt,
1062 doEarlyStopping = flags.Tau.doEarlyStopping
and not flags.Output.doWriteESD)
1064 result.setPrivateTools(myTauAODSelector)
1070 result = ComponentAccumulator()
1071 _name = flags.Tau.ActiveConfig.prefix +
'TauCombinedTES'
1072 kwargs.setdefault(
"WeightFileName", flags.Tau.CombinedTESConfig)
1074 TauCombinedTES = CompFactory.getComp(
"TauCombinedTES")
1077 result.setPrivateTools(myTauCombinedTES)
1083 result = ComponentAccumulator()
1084 _name = flags.Tau.ActiveConfig.prefix +
'MuonRemoval'
1085 TauAODMuonRemovalTool = CompFactory.getComp(
"TauAODMuonRemovalTool")
1087 Key_MuonInputContainer =
'Muons',
1092 result.setPrivateTools(myMuonRemoval)
1097 result = ComponentAccumulator()
1098 _name = flags.Tau.ActiveConfig.prefix +
'TauEleOverlapChecker'
1099 TauEleOverlapChecker = CompFactory.getComp(
"TauEleOverlapChecker")
1102 Key_RemovedClustersContainer = flags.Tau.ActiveConfig.RemovedElectronClusters,
1103 Key_RemovedTracksContainer = flags.Tau.ActiveConfig.RemovedElectronTracks,
1104 CheckingCone = flags.Tau.ActiveConfig.EleRM_CheckingConeSize,
1106 result.setPrivateTools(myTauEleOverlapChecker)
Cluster correction tool which applies local hadronic calibration w eights to the cells.
Calculate moments for CaloCluster objects.
topological cluster maker.
topological cluster splitter.
Class to build tau jet seed.
Set Tau "Detector Axis" and "Intermediate Axis".
Implementation of tau energy scale (TES) with eta and pile-up correction.
Calculate tau calorimeter variables from cell information.
Associate the clusters used in the seed jet to the tau candidate.
Calculate variables which rely on tracks and precalculated cell/cluster information.
Tau decay mode classifier using a neural network.
Select only the tau within the removal direction.
Calculate variables sensitive on electrons.
Tool to calculate tau identification score from .onnx inputs.
This class implements a tool to calculate ID input variables and add them to the tau aux store.
Tool to calculate a tau identification score based on neural networks.
Creates Pi0 clusters (Pi0 Finder).
scale cluster energy to take care of charged pion energy
Find the cells used to create pi0 cluster.
Selectes pi0Candidates (Pi0 Finder).
Apply Et and BDT score cut to pi0s.
Calculate variables from the tau substructure.
Associate tracks to the tau candidate.
Associate a vertex (origin) to the tau candidate.
Class for calculating vertex variables.
Decorate CaloVertexedTopoCluster to the tau candidate.
Implementation of tool to decorate flattened BDT score and working points.
Evaluates the TausRUs network and decorates its predictions on the tau and on its tracks.