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 TrackToCalo.TrackToCaloConfig
import ParticleCaloExtensionToolCfg
90 from TrkConfig.TrkVertexFitterUtilsConfig
import AtlasTrackToVertexIPEstimatorCfg
91 from InDetConfig.InDetTrackSelectorToolConfig
import TauRecInDetTrackSelectorToolCfg
93 _LargeD0TrackInputContainer = (flags.Tau.ActiveConfig.LargeD0TrackCollection
if flags.Tau.associateLRT
else "")
96 if flags.Tau.ActiveConfig.inTauLRT:
97 _LargeD0TrackInputContainer = flags.Tau.ActiveConfig.LargeD0TrackCollection
99 TauTrackFinder = CompFactory.getComp(
"TauTrackFinder")
103 TrackSelectorToolTau = result.popToolsAndMerge(TauRecInDetTrackSelectorToolCfg(flags)),
104 TrackToVertexTool =
"",
105 ParticleCaloExtensionTool = result.popToolsAndMerge(ParticleCaloExtensionToolCfg(flags)),
107 removeDuplicateCoreTracks = flags.Tau.RemoveDupeCoreTracks,
108 useGhostTracks = flags.Tau.useGhostTracks,
109 ghostTrackDR = flags.Tau.ghostTrackDR,
110 Key_jetContainer = (flags.Tau.ActiveConfig.SeedJetCollection
if flags.Tau.useGhostTracks
else ""),
111 Key_trackPartInputContainer = flags.Tau.ActiveConfig.TrackCollection,
112 Key_LargeD0TrackInputContainer = _LargeD0TrackInputContainer,
113 TrackToVertexIPEstimator = result.popToolsAndMerge(AtlasTrackToVertexIPEstimatorCfg(flags)),
114 inEleRM = flags.Tau.ActiveConfig.inTauEleRM,
116 result.setPrivateTools(TauTrackFinder)
122 result = ComponentAccumulator()
123 _name = flags.Tau.ActiveConfig.prefix +
'TauClusterFinder'
126 TauClusterFinder = CompFactory.getComp(
"TauClusterFinder")
129 inEleRM = flags.Tau.ActiveConfig.inTauEleRM,
133 result.setPrivateTools(TauClusterFinder)
138 result = ComponentAccumulator()
139 _name = flags.Tau.ActiveConfig.prefix +
'TauVertexedClusterDecorator'
141 TauVertexedClusterDecorator = CompFactory.getComp(
"TauVertexedClusterDecorator")
143 SeedJet = flags.Tau.ActiveConfig.SeedJetCollection)
145 result.setPrivateTools(myTauVertexedClusterDecorator)
150 result = ComponentAccumulator()
151 _name = flags.Tau.ActiveConfig.prefix +
'TauTrackRNNClassifier'
153 TrackRNN = CompFactory.tauRecTools.TrackRNN
154 _RNN = TrackRNN(name = _name +
"_TrackRNN",
155 InputWeightsPath = flags.Tau.tauRNNTrackClassConfig,
156 calibFolder = flags.Tau.tauRecToolsCVMFSPath )
158 result.setPrivateTools(_RNN)
163 result = ComponentAccumulator()
164 _name = flags.Tau.ActiveConfig.prefix +
'TauTrackRNNClassifier'
167 TauTrackRNNClassifier = CompFactory.tauRecTools.TauTrackRNNClassifier
170 cppyy.load_library(
'libxAODTau_cDict')
173 _classifyLRTWithDedicated = flags.Tau.classifyLRTWithDedicated
174 if flags.Tau.associateLRT
and not flags.Tau.classifyLRT:
178 if flags.Tau.ActiveConfig.inTauLRT:
180 _classifyLRTWithDedicated =
True
183 myTauTrackClassifier = TauTrackRNNClassifier( name = _name,
185 classifyLRT = _classifyLRT,
186 classifyLRTWithDedicated = _classifyLRTWithDedicated)
188 result.setPrivateTools(myTauTrackClassifier)
194 result = ComponentAccumulator()
195 _name = flags.Tau.ActiveConfig.prefix +
'EnergyCalibrationLC'
197 TauCalibrateLC = CompFactory.getComp(
"TauCalibrateLC")
199 calibrationFile = flags.Tau.CalibrateLCConfig,
200 ForceZeroMass = force_zero_mass,
201 Key_vertexInputContainer = flags.Tau.ActiveConfig.VertexCollection)
203 result.setPrivateTools(TauCalibrateLC)
209 result = ComponentAccumulator()
210 _name = flags.Tau.ActiveConfig.prefix +
'CellVariables'
212 TauCellVariables = CompFactory.getComp(
"TauCellVariables")
214 VertexCorrection = flags.Tau.doVertexCorrection)
216 result.setPrivateTools(TauCellVariables)
222 result = ComponentAccumulator()
223 _name = flags.Tau.ActiveConfig.prefix +
'TauElectronVetoVars'
225 from TrackToCalo.TrackToCaloConfig
import ParticleCaloExtensionToolCfg
227 TauElectronVetoVariables = CompFactory.getComp(
"TauElectronVetoVariables")
229 VertexCorrection = flags.Tau.doVertexCorrection,
230 ParticleCaloExtensionTool = result.popToolsAndMerge(ParticleCaloExtensionToolCfg(flags)),
233 result.setPrivateTools(TauElectronVetoVariables)
239 result = ComponentAccumulator()
240 _name = flags.Tau.ActiveConfig.prefix +
'TauShotFinder'
242 shotPtCut_1Photon = flags.Tau.shotPtCut_1Photon
243 shotPtCut_2Photons = flags.Tau.shotPtCut_2Photons
246 from CaloClusterCorrection.StandardCellWeightCalib
import getCellWeightTool
247 CaloWeightTool = getCellWeightTool(flags=flags)
250 TauShotFinder = CompFactory.getComp(
"TauShotFinder")
253 CaloWeightTool = result.popToolsAndMerge(CaloWeightTool),
255 MinPtCut = shotPtCut_1Photon,
256 AutoDoubleShotCut = shotPtCut_2Photons,
257 Key_RemovedClusterInputContainer = flags.Tau.ActiveConfig.RemovedElectronClusters,
258 RemoveElectronCells = flags.Tau.ActiveConfig.RemoveElectronCells,
259 inEleRM = flags.Tau.ActiveConfig.inTauEleRM,
262 result.setPrivateTools(TauShotFinder)
269 result = ComponentAccumulator()
270 _name = flags.Tau.ActiveConfig.prefix +
'Pi0ClusterFinder'
272 TauPi0CreateROI = CompFactory.getComp(
"TauPi0CreateROI")
276 Key_caloCellInputContainer =
"AllCalo",
277 Key_RemovedClusterInputContainer = flags.Tau.ActiveConfig.RemovedElectronClusters,
278 inEleRM = flags.Tau.ActiveConfig.inTauEleRM,
279 RemoveElectronCells = flags.Tau.ActiveConfig.RemoveElectronCells,
282 result.setPrivateTools(myTauPi0CreateROI)
288 result = ComponentAccumulator()
289 _name = flags.Tau.ActiveConfig.prefix +
'tauPi0CellContainerFinalizer'
291 CaloCellContainerFinalizerTool = CompFactory.getComp(
"CaloCellContainerFinalizerTool")
294 result.setPrivateTools(TauCellContainerFinalizer)
302 result = ComponentAccumulator()
303 _name = flags.Tau.ActiveConfig.prefix +
'LCClassify'
305 CaloLCClassificationTool = CompFactory.getComp(
"CaloLCClassificationTool")
307 LCClassify.ClassificationKey =
"EMFracClassify"
308 LCClassify.UseSpread =
False
309 LCClassify.MaxProbability = 0.5
311 LCClassify.StoreClassificationProbabilityInAOD =
True
312 LCClassify.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
313 LCClassify.UseNormalizedEnergyDensity =
True
315 result.setPrivateTools(LCClassify)
319 result = ComponentAccumulator()
320 _name = flags.Tau.ActiveConfig.prefix +
'CaloLCWeightTool'
323 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
324 result.merge(CaloNoiseCondAlgCfg(flags,
"totalNoise"))
326 result.merge(CaloNoiseCondAlgCfg(flags,
"electronicNoise"))
328 CaloLCWeightTool = CompFactory.getComp(
"CaloLCWeightTool")
330 LCWeight.CorrectionKey =
"H1ClusterCellWeights"
331 LCWeight.SignalOverNoiseCut = 2.0
332 LCWeight.UseHadProbability =
True
334 result.setPrivateTools(LCWeight)
338 result = ComponentAccumulator()
339 _name = flags.Tau.ActiveConfig.prefix +
'CaloLCOutOfClusterTool'
341 CaloLCOutOfClusterTool = CompFactory.getComp(
"CaloLCOutOfClusterTool")
343 LCOut.CorrectionKey =
"OOCCorrection"
344 LCOut.UseEmProbability =
False
345 LCOut.UseHadProbability =
True
347 result.setPrivateTools(LCOut)
351 result = ComponentAccumulator()
352 _name = flags.Tau.ActiveConfig.prefix +
'LCOutPi0'
354 CaloLCOutOfClusterTool = CompFactory.getComp(
"CaloLCOutOfClusterTool")
356 LCOutPi0.CorrectionKey =
"OOCPi0Correction"
357 LCOutPi0.UseEmProbability =
True
358 LCOutPi0.UseHadProbability =
False
360 result.setPrivateTools(LCOutPi0)
364 result = ComponentAccumulator()
365 _name = flags.Tau.ActiveConfig.prefix +
'CaloLCDeadMaterialTool'
367 CaloLCDeadMaterialTool = CompFactory.getComp(
"CaloLCDeadMaterialTool")
369 LCDeadMaterial.HadDMCoeffKey =
"HadDMCoeff2"
370 LCDeadMaterial.ClusterRecoStatus = 0
371 LCDeadMaterial.WeightModeDM = 2
372 LCDeadMaterial.UseHadProbability =
True
373 LCDeadMaterial.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
375 result.setPrivateTools(LCDeadMaterial)
379 result = ComponentAccumulator()
380 _name = flags.Tau.ActiveConfig.prefix +
'CaloLocalCalib'
382 CaloClusterLocalCalib = CompFactory.getComp(
"CaloClusterLocalCalib")
385 LocalCalib.ClusterRecoStatus = [1,2]
387 LocalCalib.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
389 result.setPrivateTools(LocalCalib)
393 result = ComponentAccumulator()
394 _name = flags.Tau.ActiveConfig.prefix +
'OOCCalibTool'
396 CaloClusterLocalCalib = CompFactory.getComp(
"CaloClusterLocalCalib")
397 OOCCalib = CaloClusterLocalCalib (_name)
398 OOCCalib.ClusterRecoStatus = [1,2]
400 OOCCalib.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
402 result.setPrivateTools(OOCCalib)
406 result = ComponentAccumulator()
407 _name = flags.Tau.ActiveConfig.prefix +
'DMCalib'
409 CaloClusterLocalCalib = CompFactory.getComp(
"CaloClusterLocalCalib")
411 DMCalib.ClusterRecoStatus = [1,2]
413 DMCalib.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
415 result.setPrivateTools(DMCalib)
419 result = ComponentAccumulator()
420 _name = flags.Tau.ActiveConfig.prefix +
'OOCPi0CalibTool'
422 CaloClusterLocalCalib = CompFactory.getComp(
"CaloClusterLocalCalib")
423 OOCPi0Calib = CaloClusterLocalCalib (_name)
424 OOCPi0Calib.ClusterRecoStatus = [1,2]
426 OOCPi0Calib.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
428 result.setPrivateTools(OOCPi0Calib)
432 result = ComponentAccumulator()
433 _name = flags.Tau.ActiveConfig.prefix +
'Pi0TopoClusterMaker'
436 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
437 result.merge(CaloNoiseCondAlgCfg(flags,
"totalNoise"))
439 result.merge(CaloNoiseCondAlgCfg(flags,
"electronicNoise"))
441 CaloTopoClusterMaker = CompFactory.getComp(
"CaloTopoClusterMaker")
444 TopoClusterForTaus.CellsName = flags.Tau.ActiveConfig.TauCommonPi0Cells
445 TopoClusterForTaus.CalorimeterNames=[
"LAREM"]
446 TopoClusterForTaus.SeedSamplingNames = [
"PreSamplerB",
"EMB1",
"EMB2",
"PreSamplerE",
"EME1",
"EME2"]
447 TopoClusterForTaus.NeighborOption =
"super3D"
448 TopoClusterForTaus.RestrictHECIWandFCalNeighbors =
False
449 TopoClusterForTaus.RestrictPSNeighbors =
True
450 TopoClusterForTaus.CellThresholdOnEorAbsEinSigma = 0.0
451 TopoClusterForTaus.NeighborThresholdOnEorAbsEinSigma = 2.0
452 TopoClusterForTaus.SeedThresholdOnEorAbsEinSigma = 4.0
453 TopoClusterForTaus.SeedCutsInAbsE =
True
454 TopoClusterForTaus.ClusterCutsInAbsEt =
True
455 TopoClusterForTaus.ClusterEtorAbsEtCut = 0.5*GeV
456 TopoClusterForTaus.TwoGaussianNoise = flags.Calo.TopoCluster.doTwoGaussianNoise
458 TopoClusterForTaus.SeedCutsInT = flags.Calo.TopoCluster.doTimeCut
459 TopoClusterForTaus.CutOOTseed = flags.Calo.TopoCluster.extendTimeCut
and flags.Calo.TopoCluster.doTimeCut
460 TopoClusterForTaus.UseTimeCutUpperLimit = flags.Calo.TopoCluster.useUpperLimitForTimeCut
461 TopoClusterForTaus.TimeCutUpperLimit = flags.Calo.TopoCluster.timeCutUpperLimit
462 TopoClusterForTaus.XTalkEM2 = flags.Calo.TopoCluster.xtalkEM2
463 TopoClusterForTaus.XTalkEM2D = flags.Calo.TopoCluster.xtalkEM2D
464 TopoClusterForTaus.XTalkEM2n = flags.Calo.TopoCluster.xtalkEM2n
465 TopoClusterForTaus.XTalkEM3 = flags.Calo.TopoCluster.xtalkEM3
466 TopoClusterForTaus.XTalkEMEta = flags.Calo.TopoCluster.xtalkEMEta
467 TopoClusterForTaus.XTalkDeltaT = flags.Calo.TopoCluster.xtalkDeltaT
468 TopoClusterForTaus.XTalk2Eratio1 = flags.Calo.TopoCluster.xtalk2Eratio1
469 TopoClusterForTaus.XTalk2Eratio2 = flags.Calo.TopoCluster.xtalk2Eratio2
470 TopoClusterForTaus.XTalk3Eratio = flags.Calo.TopoCluster.xtalk3Eratio
471 TopoClusterForTaus.XTalkEtaEratio = flags.Calo.TopoCluster.xtalkEtaEratio
472 TopoClusterForTaus.XTalk2DEratio = flags.Calo.TopoCluster.xtalk2DEratio
474 result.setPrivateTools(TopoClusterForTaus)
479 result = ComponentAccumulator()
480 _name = flags.Tau.ActiveConfig.prefix +
'Pi0TopoClusterSplitter'
482 CaloTopoClusterSplitter = CompFactory.getComp(
"CaloTopoClusterSplitter")
489 TopoSplitterForTaus.SamplingNames = [
"EMB2",
"EME2"]
493 TopoSplitterForTaus.SecondarySamplingNames = [
"EMB1",
"EME1"]
494 TopoSplitterForTaus.ShareBorderCells =
True
495 TopoSplitterForTaus.RestrictHECIWandFCalNeighbors =
False
496 TopoSplitterForTaus.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
498 result.setPrivateTools(TopoSplitterForTaus)
502 result = ComponentAccumulator()
503 _name = flags.Tau.ActiveConfig.prefix +
'Pi0TopoMoments'
506 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
507 result.merge(CaloNoiseCondAlgCfg(flags,
"totalNoise"))
509 result.merge(CaloNoiseCondAlgCfg(flags,
"electronicNoise"))
511 CaloClusterMomentsMaker = CompFactory.getComp(
"CaloClusterMomentsMaker")
513 TopoMomentsForTaus.WeightingOfNegClusters = flags.Calo.TopoCluster.doTreatEnergyCutAsAbsolute
514 TopoMomentsForTaus.MaxAxisAngle = 20*deg
515 TopoMomentsForTaus.TwoGaussianNoise = flags.Calo.TopoCluster.doTwoGaussianNoise
516 TopoMomentsForTaus.MinBadLArQuality = 4000
517 TopoMomentsForTaus.MomentsNames = [
"FIRST_PHI"
538 result.setPrivateTools(TopoMomentsForTaus)
542 result = ComponentAccumulator()
543 _name = flags.Tau.ActiveConfig.prefix +
'CaloClusterBadChannelList'
545 CaloClusterBadChannelListCorr = CompFactory.getComp(
"CaloClusterBadChannelList")
548 result.setPrivateTools(BadChannelListCorrForTaus)
554 result = ComponentAccumulator()
555 _name = flags.Tau.ActiveConfig.prefix +
'Pi0ClusterCreator'
561 for typ, nam
in [i.split(
'#')
for i
in flags.Input.TypedCollections]:
562 if typ ==
'CaloCellContainer':
563 extraInputs += [(
'CaloCellContainer', nam)]
565 TauPi0ClusterCreator = CompFactory.getComp(
"TauPi0ClusterCreator")
567 ExtraInputs = extraInputs,
568 RecoFromAOD = flags.Common.ProductionStep
is ProductionStep.Derivation)
570 result.setPrivateTools(TauPi0ClusterCreator)
576 result = ComponentAccumulator()
577 _name = flags.Tau.ActiveConfig.prefix +
'Pi0ClusterScaler'
579 TauPi0ClusterScaler = CompFactory.getComp(
"TauPi0ClusterScaler")
581 MinNeutralPFOPt = flags.Tau.MinNeutralPFOPt)
583 result.setPrivateTools(TauPi0ClusterScaler)
589 result = ComponentAccumulator()
590 _name = flags.Tau.ActiveConfig.prefix +
'Pi0ScoreCalculator'
592 TauPi0ScoreCalculator = CompFactory.getComp(
"TauPi0ScoreCalculator")
594 BDTWeightFile = flags.Tau.Pi0ScoreConfig)
596 result.setPrivateTools(TauPi0ScoreCalculator)
602 result = ComponentAccumulator()
603 _name = flags.Tau.ActiveConfig.prefix +
'Pi0Selector'
605 TauPi0Selector = CompFactory.getComp(
"TauPi0Selector")
607 Pi0EtCut = flags.Tau.pi0EtCuts,
608 Pi0BDTCut_1prong = flags.Tau.pi0MVACuts_1prong,
609 Pi0BDTCut_mprong = flags.Tau.pi0MVACuts_mprong)
611 result.setPrivateTools(TauPi0Selector)
617 result = ComponentAccumulator()
618 _name = flags.Tau.ActiveConfig.prefix +
'TauVertexVariables'
620 from TrkConfig.TrkVertexFittersConfig
import TauAdaptiveVertexFitterCfg
621 from TrkConfig.TrkVertexSeedFinderToolsConfig
import (
622 CrossDistancesSeedFinderCfg)
624 TauVertexVariables = CompFactory.getComp(
"TauVertexVariables")
626 VertexFitter = result.popToolsAndMerge(TauAdaptiveVertexFitterCfg(flags)),
627 SeedFinder = result.popToolsAndMerge(CrossDistancesSeedFinderCfg(flags)) )
629 result.setPrivateTools(TauVertexVariables)
635 result = ComponentAccumulator()
636 _name = flags.Tau.ActiveConfig.prefix +
'TauCommonCalcVars'
638 TauCommonCalcVars = CompFactory.getComp(
"TauCommonCalcVars")
640 doRun4 = flags.GeoModel.Run > LHCPeriod.Run3)
642 result.setPrivateTools(TauCommonCalcVars)
648 result = ComponentAccumulator()
649 _name = flags.Tau.ActiveConfig.prefix +
'TauSubstructure'
651 TauSubstructureVariables = CompFactory.getComp(
"TauSubstructureVariables")
653 doRun4 = flags.GeoModel.Run > LHCPeriod.Run3)
655 result.setPrivateTools(TauSubstructureVariables)
661 result = ComponentAccumulator()
662 _name = flags.Tau.ActiveConfig.prefix +
'MvaTESVariableDecorator'
664 eventShapeCollection = flags.Tau.ActiveConfig.EventShapeCollection
665 if 'EMPFlow' in flags.Tau.ActiveConfig.SeedJetCollection:
666 eventShapeCollection =
"Kt4EMPFlowEventShape"
667 elif 'EMTopo' in flags.Tau.ActiveConfig.SeedJetCollection:
668 eventShapeCollection =
"Kt4EMTopoOriginEventShape"
670 MvaTESVariableDecorator = CompFactory.getComp(
"MvaTESVariableDecorator")
672 Key_vertexInputContainer = flags.Tau.ActiveConfig.VertexCollection,
673 EventShapeKey = eventShapeCollection,
674 VertexCorrection = flags.Tau.doVertexCorrection,
675 SeedJet = flags.Tau.ActiveConfig.SeedJetCollection)
676 result.setPrivateTools(MvaTESVariableDecorator)
682 result = ComponentAccumulator()
683 _name = flags.Tau.ActiveConfig.prefix +
'MvaTESEvaluator'
685 MvaTESEvaluator = CompFactory.getComp(
"MvaTESEvaluator")
687 WeightFileName = flags.Tau.MvaTESConfig,
688 WeightFileName0p = flags.Tau.MvaTESConfig0p )
690 result.setPrivateTools(MvaTESEvaluator)
694 result = ComponentAccumulator()
695 _name = flags.Tau.ActiveConfig.prefix +
'TauIDVarCalculator'
697 TauIDVarCalculator = CompFactory.getComp(
"TauIDVarCalculator")
699 VertexCorrection = flags.Tau.doVertexCorrection,
700 doRun4 = flags.GeoModel.Run > LHCPeriod.Run3)
702 result.setPrivateTools(myTauIDVarCalculator)
706 result = ComponentAccumulator()
707 _name = flags.Tau.ActiveConfig.prefix +
'TauJetRNN'
709 TauJetRNNEvaluator = CompFactory.getComp(
"TauJetRNNEvaluator")
710 RNNConf = flags.Tau.TauJetRNNConfig
713 NetworkFile1P = RNNConf[0],
714 NetworkFile2P = RNNConf[1],
715 NetworkFile3P = RNNConf[2],
716 OutputVarname =
"RNNJetScore",
720 ApplyLooseTrackSel = applyLooseTrackSel,
721 VertexCorrection = flags.Tau.doVertexCorrection,
722 InputLayerScalar =
"scalar",
723 InputLayerTracks =
"tracks",
724 InputLayerClusters =
"clusters",
725 OutputLayer =
"rnnid_output",
726 OutputNode =
"sig_prob")
728 result.setPrivateTools(myTauJetRNNEvaluator)
732 import PyUtils.RootUtils
as ru
733 ROOT = ru.import_root()
735 cppyy.load_library(
'libxAODTau_cDict')
737 result = ComponentAccumulator()
738 _name = flags.Tau.ActiveConfig.prefix +
'TauWPDecoratorJetRNN'
740 TauWPDecorator = CompFactory.getComp(
"TauWPDecorator")
741 WPConf = flags.Tau.TauJetRNNWPConfig
743 flatteningFile1Prong = WPConf[0],
744 flatteningFile2Prong = WPConf[1],
745 flatteningFile3Prong = WPConf[2],
747 [ ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigVeryLoose,
748 ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigLoose,
749 ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigMedium,
750 ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigTight ],
751 SigEff1P = [0.95, 0.85, 0.75, 0.60],
752 SigEff2P = [0.95, 0.75, 0.60, 0.45],
753 SigEff3P = [0.95, 0.75, 0.60, 0.45],
754 ScoreName =
"RNNJetScore",
755 NewScoreName =
"RNNJetScoreSigTrans",
758 result.setPrivateTools(myTauWPDecorator)
761def TauGNNEvaluatorCfg(flags, version=0, applyLooseTrackSel=False, applyTightTrackSel=False, tauContainerName=""):
762 result = ComponentAccumulator()
763 _name = flags.Tau.ActiveConfig.prefix +
'TauGNN_v' + str(version)
765 TauGNNEvaluator = CompFactory.getComp(
"TauGNNEvaluator")
766 GNNConf = flags.Tau.TauGNNConfig[version]
768 useTRT = flags.Detector.EnableTRT,
769 NetworkFileInclusive = GNNConf,
770 OutputVarname = flags.Tau.GNTauScoreName[version],
771 OutputPTau =
"GNTauProbTau",
772 OutputPJet =
"GNTauProbJet",
773 MaxTracks = flags.Tau.GNTauMaxTracks[version],
774 MaxClusters = flags.Tau.GNTauMaxClusters[version],
776 MinTauPt = flags.Tau.MinPtDAOD,
777 ApplyLooseTrackSel = applyLooseTrackSel,
778 ApplyTightTrackSel = applyTightTrackSel,
779 VertexCorrection = flags.Tau.doVertexCorrection,
780 InputLayerScalar =
'tau_vars',
781 InputLayerTracks =
'track_vars',
782 InputLayerClusters =
'cluster_vars',
783 NodeNameTau=flags.Tau.GNTauNodeNameTau,
784 NodeNameJet=flags.Tau.GNTauNodeNameJet,
785 TauContainerName = tauContainerName,
788 result.setPrivateTools(myTauGNNEvaluator)
792 """Names of the decorations TausRUs writes on the tau, all of them floats."""
795 "TausRUsEleRejScore",
800 names += [f
"TausRUsDecayModeScore{i}" for i
in range(5)]
801 names += [f
"TausRUs{particle}P4_{component}"
802 for particle
in (
"Tau",
"ChargedPion",
"NeutralPion")
803 for component
in (
"pt",
"eta",
"phi",
"m")]
804 names += [f
"TausRUsVertex_{coordinate}" for coordinate
in (
"x",
"y",
"z")]
808 """Decorations TausRUs writes on each of the tau's xAOD::TauTrack."""
809 return [
"TausRUsTrackClass"] + [f
"TausRUsTrackScore{i}" for i
in range(4)]
812 """TausRUs multi-output tau network."""
814 result = ComponentAccumulator()
815 _name = name
or flags.Tau.ActiveConfig.prefix +
'TausRUs'
817 if flags.Tau.TausRUsUseTriton:
818 from AthTritonComps.TritonToolConfig
import TritonToolCfg
819 inferenceTool = result.popToolsAndMerge(TritonToolCfg(
821 model_name = flags.Tau.TausRUsTritonModel,
822 url = flags.Tau.TausRUsTritonUrl,
823 port = flags.Tau.TausRUsTritonPort,
824 name = _name +
'_TritonTool'))
826 from AthOnnxComps.OnnxRuntimeInferenceConfig
import OnnxRuntimeInferenceToolCfg
827 inferenceTool = result.popToolsAndMerge(OnnxRuntimeInferenceToolCfg(
829 flags.Tau.TausRUsModelFile,
830 name = _name +
'_ORTTool'))
832 TausRUsEvaluator = CompFactory.getComp(
"TausRUsEvaluator")
835 InferenceTool = inferenceTool,
836 ModelFile = flags.Tau.TausRUsModelFile,
837 MinTauPt = flags.Tau.TausRUsMinPt,
838 TauContainerName = tauContainerName,
839 TauTrackContainerName = tauTrackContainerName))
843 result = ComponentAccumulator()
844 _name = flags.Tau.ActiveConfig.prefix +
'TauWPDecoratorGNN_v' + str(version)
846 TauWPDecorator = CompFactory.getComp(
"TauWPDecorator")
847 WPConf = flags.Tau.TauGNNWP[version]
849 flatteningFile1Prong = WPConf[0],
850 flatteningFile2Prong = WPConf[1],
851 flatteningFile3Prong = WPConf[2],
852 TauContainerName = tauContainerName,
853 DecorWPNames = flags.Tau.GNTauDecorWPNames[version],
854 DecorWPCutEffs1P = [0.95, 0.85, 0.75, 0.60],
855 DecorWPCutEffs2P = [0.95, 0.75, 0.60, 0.45],
856 DecorWPCutEffs3P = [0.95, 0.75, 0.60, 0.45],
857 ScoreName = flags.Tau.GNTauScoreName[version],
858 NewScoreName = flags.Tau.GNTauTransScoreName[version],
860 result.setPrivateTools(myTauWPDecorator)
864 result = ComponentAccumulator()
865 _name = flags.Tau.ActiveConfig.prefix +
'TauGNNeVeto'
867 TauGNNEvaluator = CompFactory.getComp(
"TauGNNEvaluator")
869 useTRT = flags.Detector.EnableTRT,
870 NetworkFileInclusive = flags.Tau.TauGNNeVetoConfig[0],
871 OutputDiscriminant = flags.Tau.TauGNNeVetoOutputDiscriminant_NeglogPJet_True,
872 OutputVarname = flags.Tau.TauGNNeVetoScoreName,
873 OutputPTau =
"GNNeVetoProbTau",
874 OutputPJet =
"GNNeVetoProbJet",
875 MaxTracks = flags.Tau.TauGNNeVetoMaxTracks[0],
876 MaxClusters = flags.Tau.TauGNNeVetoMaxClusters[0],
878 MinTauPt = flags.Tau.MinPtDAOD,
879 ApplyLooseTrackSel = applyLooseTrackSel,
880 ApplyTightTrackSel = applyTightTrackSel,
881 VertexCorrection = flags.Tau.doVertexCorrection,
882 InputLayerScalar =
'jet_var',
883 InputLayerTracks =
'tracks_r22default_sd0sort',
884 InputLayerClusters =
'cells_var',
885 NodeNameTau=flags.Tau.TauGNNeVetoNodeNameTau,
886 NodeNameJet=flags.Tau.TauGNNeVetoNodeNameJet,
887 TauContainerName = tauContainerName,
890 result.setPrivateTools(myTauGNNeVetoEvaluator)
895 result = ComponentAccumulator()
896 _name = flags.Tau.ActiveConfig.prefix +
'TauWPDecoratorGNNeVeto'
898 TauWPDecorator = CompFactory.getComp(
"TauWPDecorator")
899 WPConf = flags.Tau.TauGNNeVetoWP
901 flatteningFile1Prong = WPConf[0],
902 flatteningFile2Prong = WPConf[1],
903 flatteningFile3Prong = WPConf[2],
904 TauContainerName = tauContainerName,
905 DecorWPNames = flags.Tau.TauGNNeVetoDecorWPNames,
906 DecorWPCutEffs1P = [0.95, 0.90, 0.85],
907 DecorWPCutEffs2P = [0.95, 0.90, 0.85],
908 DecorWPCutEffs3P = [0.98, 0.95, 0.90],
910 ScoreBounds = [-0.01, 14.01],
911 ScoreName = flags.Tau.TauGNNeVetoScoreName,
912 NewScoreName = flags.Tau.TauGNNeVetoTransScoreName,
914 result.setPrivateTools(myTauWPDecorator)
919 result = ComponentAccumulator()
921 TauGNNEvaluator = CompFactory.TauGNNEvaluator(
922 name = flags.Tau.ActiveConfig.prefix +
'TauDisplacedGNN',
923 NetworkFileInclusive = flags.Tau.TauDisplacedGNNConfig[0],
924 OutputVarname =
"GNdTauScore",
925 OutputPTau =
"GNdTauProbTau",
926 OutputPJet =
"GNdTauProbJet",
928 MinTauPt = flags.Tau.MinPtDAOD,
929 VertexCorrection = flags.Tau.doVertexCorrection,
930 NodeNameTau=
"GNdTauv3_pb",
931 NodeNameJet=
"GNdTauv3_pu",
932 TauContainerName = tauContainerName,
934 result.setPrivateTools(TauGNNEvaluator)
938 result = ComponentAccumulator()
939 _name = flags.Tau.ActiveConfig.prefix +
'TauEleRNN'
941 TauJetRNNEvaluator = CompFactory.getComp(
"TauJetRNNEvaluator")
942 RNNConf = flags.Tau.TauEleRNNConfig
944 useTRT = flags.Detector.EnableTRT,
945 NetworkFile1P = RNNConf[0],
946 NetworkFile3P = RNNConf[1],
947 OutputVarname =
"RNNEleScore",
951 ApplyLooseTrackSel = applyLooseTrackSel,
952 VertexCorrection = flags.Tau.doVertexCorrection,
953 InputLayerScalar =
"scalar",
954 InputLayerTracks =
"tracks",
955 InputLayerClusters =
"clusters",
956 OutputLayer =
"rnneveto_output",
957 OutputNode =
"sig_prob")
959 result.setPrivateTools(myTauEleRNNEvaluator)
964 result = ComponentAccumulator()
966 WPConf = flags.Tau.TauEleRNNWPConfig
968 from AthenaConfiguration.Enums
import ProductionStep
970 if flags.Common.ProductionStep
is ProductionStep.Derivation:
971 _name = flags.Tau.ActiveConfig.prefix +
'TauWPDecoratorEleRNNFix_v1'
972 NewScoreName =
"RNNEleScoreSigTrans_v1"
976 DecorWPNames = [
"EleRNNLoose_v1",
"EleRNNMedium_v1",
"EleRNNTight_v1" ]
977 DecorWPCutEffs1P = [0.95, 0.90, 0.85]
978 DecorWPCutEffs3P = [0.98, 0.95, 0.90]
981 import PyUtils.RootUtils
as ru
982 ROOT = ru.import_root()
984 cppyy.load_library(
'libxAODTau_cDict')
986 _name = flags.Tau.ActiveConfig.prefix +
'TauWPDecoratorEleRNN'
987 NewScoreName =
"RNNEleScoreSigTrans"
988 SigEff1P = [0.95, 0.90, 0.85]
989 SigEff3P = [0.98, 0.95, 0.90]
990 CutEnumVals = [ ROOT.xAOD.TauJetParameters.IsTauFlag.EleRNNLoose,
991 ROOT.xAOD.TauJetParameters.IsTauFlag.EleRNNMedium,
992 ROOT.xAOD.TauJetParameters.IsTauFlag.EleRNNTight ]
994 DecorWPCutEffs1P = []
995 DecorWPCutEffs3P = []
997 TauWPDecorator = CompFactory.getComp(
"TauWPDecorator")
999 flatteningFile1Prong = WPConf[0],
1000 flatteningFile3Prong = WPConf[1],
1001 CutEnumVals = CutEnumVals,
1002 DecorWPNames = DecorWPNames,
1003 SigEff1P = SigEff1P,
1004 SigEff3P = SigEff3P,
1005 DecorWPCutEffs1P = DecorWPCutEffs1P,
1006 DecorWPCutEffs3P = DecorWPCutEffs3P,
1008 ScoreName =
"RNNEleScore",
1009 NewScoreName = NewScoreName,
1012 result.setPrivateTools(myTauEleWPDecorator)
1016 result = ComponentAccumulator()
1017 _name = flags.Tau.ActiveConfig.prefix +
'TauDecayModeNNClassifier'
1019 TauDecayModeNNClassifier = CompFactory.getComp(
"TauDecayModeNNClassifier")
1021 WeightFile=flags.Tau.DecayModeNNClassifierConfig)
1023 result.setPrivateTools(myTauDecayModeNNClassifier)
1027 result = ComponentAccumulator()
1028 _name = flags.Tau.ActiveConfig.prefix +
'TauAODSelector'
1030 TauAODSelector = CompFactory.getComp(
"TauAODSelector")
1032 Min0pTauPt = flags.Tau.MinPt0p,
1033 MinTauPt = flags.Tau.MinPt,
1034 doEarlyStopping = flags.Tau.doEarlyStopping
and not flags.Output.doWriteESD)
1036 result.setPrivateTools(myTauAODSelector)
1042 result = ComponentAccumulator()
1043 _name = flags.Tau.ActiveConfig.prefix +
'TauCombinedTES'
1044 kwargs.setdefault(
"WeightFileName", flags.Tau.CombinedTESConfig)
1046 TauCombinedTES = CompFactory.getComp(
"TauCombinedTES")
1049 result.setPrivateTools(myTauCombinedTES)
1055 result = ComponentAccumulator()
1056 _name = flags.Tau.ActiveConfig.prefix +
'MuonRemoval'
1057 TauAODMuonRemovalTool = CompFactory.getComp(
"TauAODMuonRemovalTool")
1059 Key_MuonInputContainer =
'Muons',
1064 result.setPrivateTools(myMuonRemoval)
1069 result = ComponentAccumulator()
1070 _name = flags.Tau.ActiveConfig.prefix +
'TauEleOverlapChecker'
1071 TauEleOverlapChecker = CompFactory.getComp(
"TauEleOverlapChecker")
1074 Key_RemovedClustersContainer = flags.Tau.ActiveConfig.RemovedElectronClusters,
1075 Key_RemovedTracksContainer = flags.Tau.ActiveConfig.RemovedElectronTracks,
1076 CheckingCone = flags.Tau.ActiveConfig.EleRM_CheckingConeSize,
1078 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.