3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory
import CompFactory
5 from AthenaConfiguration.Enums
import BeamType, LHCPeriod
13 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
19 import tauRec.TauToolHolder
as tauTools
22 tools.append( result.popToolsAndMerge(tauTools.JetSeedBuilderCfg(flags)) )
25 if getattr(flags.Tau.ActiveConfig,
'inTauEleRM',
False):
26 tools.append( result.popToolsAndMerge(tauTools.TauEleOverlapChecker(flags)) )
29 if flags.Tau.isStandalone
or flags.Tracking.doVertexFinding:
30 tools.append( result.popToolsAndMerge(tauTools.TauVertexFinderCfg(flags)) )
32 tools.append( result.popToolsAndMerge(tauTools.TauAxisCfg(flags)) )
35 tools.append( result.popToolsAndMerge(tauTools.TauTrackFinderCfg(flags)) )
36 if flags.Beam.Type
is not BeamType.Cosmics
and flags.Tau.doRNNTrackClass:
37 tools.append( result.popToolsAndMerge(tauTools.TauTrackRNNClassifierCfg(flags)) )
40 tools.append( result.popToolsAndMerge(tauTools.TauClusterFinderCfg(flags)) )
41 tools.append( result.popToolsAndMerge(tauTools.TauVertexedClusterDecoratorCfg(flags)) )
44 if flags.Tau.doPi0Clus:
45 tools.append( result.popToolsAndMerge(tauTools.Pi0ClusterFinderCfg(flags)) )
48 TauProcessorAlg = CompFactory.getComp(
"TauProcessorAlg")
49 BuildAlg =
TauProcessorAlg(name = flags.Tau.ActiveConfig.prefix+
"TauCoreBuilderAlg",
50 Key_jetInputContainer = flags.Tau.ActiveConfig.SeedJetCollection,
51 Key_tauOutputContainer = flags.Tau.ActiveConfig.TauJets_tmp,
52 Key_tauTrackOutputContainer = flags.Tau.ActiveConfig.TauTracks,
53 Key_tauPi0CellOutputContainer = flags.Tau.ActiveConfig.TauCommonPi0Cells,
54 MaxEta = flags.Tau.SeedMaxEta,
55 MinPt = flags.Tau.SeedMinPt,
56 MaxNTracks = flags.Tau.MaxNTracks,
58 CellMakerTool = result.popToolsAndMerge(tauTools.TauCellFinalizerCfg(flags)))
60 if flags.GeoModel.Run
is LHCPeriod.Run4:
61 BuildAlg.PixelDetEleCollKey=
"ITkPixelDetectorElementCollection"
62 BuildAlg.SCTDetEleCollKey=
"ITkStripDetectorElementCollection"
63 BuildAlg.TRTDetEleContKey=
""
65 result.addEventAlgo(BuildAlg)
74 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
79 from CaloRec.CaloTopoClusterConfig
import caloTopoCoolFolderCfg
82 from LArBadChannelTool.LArBadChannelConfig
import LArBadChannelCfg
85 from TileConditions.TileBadChannelsConfig
import TileBadChannelsCondAlgCfg
89 import tauRec.TauToolHolder
as tauTools
91 CaloClusterMaker = CompFactory.getComp(
"CaloClusterMaker")
92 CaloTopoForTausMaker = CaloClusterMaker (flags.Tau.ActiveConfig.prefix+
"TauPi0SubtractedClusterMaker")
93 CaloTopoForTausMaker.ClustersOutputName = flags.Tau.ActiveConfig.TauPi0Clusters_tmp
94 CaloTopoForTausMaker.ClusterMakerTools = [result.popToolsAndMerge(tauTools.TauCaloTopoClusterMakerCfg(flags)),
95 result.popToolsAndMerge(tauTools.TauCaloTopoClusterSplitterCfg(flags))]
97 CaloTopoForTausMaker.ClusterCorrectionTools += [result.popToolsAndMerge(tauTools.TauCaloClusterBadChannelCfg(flags))]
98 CaloTopoForTausMaker.ClusterCorrectionTools += [result.popToolsAndMerge(tauTools.TauCaloClusterMomentsMakerCfg(flags))]
100 if flags.Calo.TopoCluster.doTopoClusterLocalCalib:
101 CaloTopoForTausMaker.ClusterCorrectionTools += [result.popToolsAndMerge(tauTools.TauCaloClusterLocalCalibCfg(flags)),
102 result.popToolsAndMerge(tauTools.TauCaloOOCCalibCfg(flags)),
103 result.popToolsAndMerge(tauTools.TauCaloOOCPi0CalibCfg(flags)),
104 result.popToolsAndMerge(tauTools.TauCaloDMCalibCfg(flags))]
106 result.addEventAlgo(CaloTopoForTausMaker)
108 relinkAlg = CompFactory.ClusterCellRelinkAlg(name = flags.Tau.ActiveConfig.prefix+
'ClusterCellRelinkAlg',
110 ClustersInput = flags.Tau.ActiveConfig.TauPi0Clusters_tmp,
111 ClustersOutput = flags.Tau.ActiveConfig.TauPi0Clusters,
112 CellLinksOutput = flags.Tau.ActiveConfig.TauPi0ClustersLinks)
113 result.addEventAlgo(relinkAlg)
122 import tauRec.TauToolHolder
as tauTools
125 tools.append( result.popToolsAndMerge(tauTools.TauShotFinderCfg(flags)) )
126 tools.append( result.popToolsAndMerge(tauTools.Pi0ClusterCreatorCfg(flags)) )
127 tools.append( result.popToolsAndMerge(tauTools.Pi0ClusterScalerCfg(flags)) )
128 tools.append( result.popToolsAndMerge(tauTools.Pi0ScoreCalculatorCfg(flags)) )
129 tools.append( result.popToolsAndMerge(tauTools.Pi0SelectorCfg(flags)) )
131 if flags.Beam.Type
is not BeamType.Cosmics:
132 tools.append( result.popToolsAndMerge(tauTools.EnergyCalibrationLCCfg(flags)) )
134 if flags.Tau.doPanTau:
135 import PanTauAlgs.JobOptions_Main_PanTau
as pantau
136 tools.append( result.popToolsAndMerge(pantau.PanTauCfg(flags)) )
138 tools.append(result.popToolsAndMerge(tauTools.TauCombinedTESCfg(flags)) )
141 tools.append( result.popToolsAndMerge(tauTools.CellVariablesCfg(flags)) )
143 if flags.Beam.Type
is not BeamType.Cosmics:
144 tools.append( result.popToolsAndMerge(tauTools.MvaTESVariableDecoratorCfg(flags)) )
145 tools.append( result.popToolsAndMerge(tauTools.MvaTESEvaluatorCfg(flags)) )
148 tools.append( result.popToolsAndMerge(tauTools.TauAODSelectorCfg(flags)) )
151 if flags.Tau.isStandalone
or flags.Tracking.doVertexFinding:
152 tools.append(result.popToolsAndMerge(tauTools.TauVertexVariablesCfg(flags)) )
153 tools.append( result.popToolsAndMerge(tauTools.ElectronVetoVarsCfg(flags)) )
154 tools.append( result.popToolsAndMerge(tauTools.TauCommonCalcVarsCfg(flags)) )
155 tools.append( result.popToolsAndMerge(tauTools.TauSubstructureCfg(flags)) )
157 if flags.Tau.doTauDiscriminant:
158 tools.append( result.popToolsAndMerge(tauTools.TauIDVarCalculatorCfg(flags)) )
160 if flags.GeoModel.Run <= LHCPeriod.Run3:
161 tools.append( result.popToolsAndMerge(tauTools.TauJetRNNEvaluatorCfg(flags)) )
162 tools.append( result.popToolsAndMerge(tauTools.TauWPDecoratorJetRNNCfg(flags)) )
163 tools.append( result.popToolsAndMerge(tauTools.TauEleRNNEvaluatorCfg(flags)) )
164 tools.append( result.popToolsAndMerge(tauTools.TauWPDecoratorEleRNNCfg(flags)) )
165 tools.append( result.popToolsAndMerge(tauTools.TauDecayModeNNClassifierCfg(flags)) )
167 if not flags.Tau.ActiveConfig.inTauEleRM:
169 tools.append( result.popToolsAndMerge(tauTools.TauGNNEvaluatorCfg(flags, version=0, applyTightTrackSel=
True)) )
170 tools.append( result.popToolsAndMerge(tauTools.TauWPDecoratorGNNCfg(flags, version=0, tauContainerName=flags.Tau.ActiveConfig.TauJets)) )
172 TauRunnerAlg = CompFactory.getComp(
"TauRunnerAlg")
173 RunnerAlg =
TauRunnerAlg(name = flags.Tau.ActiveConfig.prefix+
"TauRecRunnerAlg",
174 Key_tauInputContainer = flags.Tau.ActiveConfig.TauJets_tmp,
175 Key_Pi0ClusterInputContainer = flags.Tau.ActiveConfig.TauPi0Clusters,
176 Key_tauOutputContainer = flags.Tau.ActiveConfig.TauJets,
177 Key_neutralPFOOutputContainer = flags.Tau.ActiveConfig.TauNeutralPFOs,
178 Key_hadronicPFOOutputContainer = flags.Tau.ActiveConfig.TauHadronicPFOs,
179 Key_chargedPFOOutputContainer = flags.Tau.ActiveConfig.TauChargedPFOs,
180 Key_vertexOutputContainer = flags.Tau.ActiveConfig.TauSecondaryVertices,
181 Key_pi0Container = flags.Tau.ActiveConfig.TauFinalPi0s,
182 Key_tauShotClusOutputContainer = flags.Tau.ActiveConfig.TauShotClusters,
183 Key_tauShotClusLinkContainer = flags.Tau.ActiveConfig.TauShotClustersLinks,
184 Key_tauShotPFOOutputContainer = flags.Tau.ActiveConfig.TauShotPFOs,
187 result.addEventAlgo(RunnerAlg)
193 from OutputStreamAthenaPool.OutputStreamConfig
import addToESD,addToAOD
198 TauAODList += [ f
"xAOD::TauJetContainer#{flags.Tau.ActiveConfig.TauJets}" ]
199 TauAODList += [ f
"xAOD::TauTrackContainer#{flags.Tau.ActiveConfig.TauTracks}" ]
200 TauAODList += [ f
"xAOD::TauTrackAuxContainer#{flags.Tau.ActiveConfig.TauTracks}Aux." ]
201 TauAODList += [ f
"xAOD::VertexContainer#{flags.Tau.ActiveConfig.TauSecondaryVertices}" ]
202 TauAODList += [ f
"xAOD::VertexAuxContainer#{flags.Tau.ActiveConfig.TauSecondaryVertices}Aux.-vxTrackAtVertex" ]
203 TauAODList += [ f
"xAOD::CaloClusterContainer#{flags.Tau.ActiveConfig.TauPi0Clusters}" ]
204 TauAODList += [ f
"xAOD::CaloClusterAuxContainer#{flags.Tau.ActiveConfig.TauPi0Clusters}Aux." ]
205 TauAODList += [ f
"CaloClusterCellLinkContainer#{flags.Tau.ActiveConfig.TauPi0Clusters}_links" ]
206 TauAODList += [ f
"xAOD::CaloClusterContainer#{flags.Tau.ActiveConfig.TauShotClusters}" ]
207 TauAODList += [ f
"xAOD::CaloClusterAuxContainer#{flags.Tau.ActiveConfig.TauShotClusters}Aux." ]
208 TauAODList += [ f
"CaloClusterCellLinkContainer#{flags.Tau.ActiveConfig.TauShotClusters}_links" ]
209 TauAODList += [ f
"xAOD::ParticleContainer#{flags.Tau.ActiveConfig.TauFinalPi0s}" ]
210 TauAODList += [ f
"xAOD::ParticleAuxContainer#{flags.Tau.ActiveConfig.TauFinalPi0s}Aux." ]
211 TauAODList += [ f
"xAOD::PFOContainer#{flags.Tau.ActiveConfig.TauShotPFOs}" ]
212 TauAODList += [ f
"xAOD::PFOAuxContainer#{flags.Tau.ActiveConfig.TauShotPFOs}Aux." ]
213 TauAODList += [ f
"xAOD::PFOContainer#{flags.Tau.ActiveConfig.TauNeutralPFOs}" ]
214 TauAODList += [ f
"xAOD::PFOAuxContainer#{flags.Tau.ActiveConfig.TauNeutralPFOs}Aux." ]
215 TauAODList += [ f
"xAOD::PFOContainer#{flags.Tau.ActiveConfig.TauHadronicPFOs}" ]
216 TauAODList += [ f
"xAOD::PFOAuxContainer#{flags.Tau.ActiveConfig.TauHadronicPFOs}Aux." ]
219 TauESDList =
list(TauAODList)
223 removeAODvars =
"-VertexedClusters.-mu.-nVtxPU.-ABS_ETA_LEAD_TRACK.-TAU_ABSDELTAPHI.-TAU_ABSDELTAETA.-absipSigLeadTrk.-passThinning.-chargedGlobalFELinks.-neutralGlobalFELinks"
224 if not flags.Tau.ActiveConfig.inTauEleRM:
225 removeAODvars += f
".-{flags.Tau.GNTauScoreName[0]}.-{flags.Tau.GNTauTransScoreName[0]}.-{flags.Tau.GNTauDecorWPNames[0][0]}.-{flags.Tau.GNTauDecorWPNames[0][1]}.-{flags.Tau.GNTauDecorWPNames[0][2]}.-{flags.Tau.GNTauDecorWPNames[0][3]}.-GNTauProbTau.-GNTauProbJet"
226 TauAODList += [
"xAOD::TauJetAuxContainer#{}Aux.{}".
format(flags.Tau.ActiveConfig.TauJets, removeAODvars) ]
229 removeESDvars =
"-VertexedClusters.-chargedGlobalFELinks.-neutralGlobalFELinks"
230 if not flags.Tau.ActiveConfig.inTauEleRM:
231 removeESDvars += f
".-{flags.Tau.GNTauScoreName[0]}.-{flags.Tau.GNTauTransScoreName[0]}.-{flags.Tau.GNTauDecorWPNames[0][0]}.-{flags.Tau.GNTauDecorWPNames[0][1]}.-{flags.Tau.GNTauDecorWPNames[0][2]}.-{flags.Tau.GNTauDecorWPNames[0][3]}.-GNTauProbTau.-GNTauProbJet"
232 TauESDList += [
"xAOD::TauJetAuxContainer#{}Aux.{}".
format(flags.Tau.ActiveConfig.TauJets, removeESDvars) ]
233 TauESDList += [
"xAOD::PFOContainer#{}" .
format(flags.Tau.ActiveConfig.TauChargedPFOs) ]
234 TauESDList += [
"xAOD::PFOAuxContainer#{}Aux." .
format(flags.Tau.ActiveConfig.TauChargedPFOs) ]
236 result.merge(
addToESD(flags,TauESDList))
237 result.merge(
addToAOD(flags,TauAODList))
243 from OutputStreamAthenaPool.OutputStreamConfig
import addToESD,addToAOD
246 DiTauOutputList = [
"xAOD::DiTauJetContainer#DiTauJets" ]
247 DiTauOutputList += [
"xAOD::DiTauJetAuxContainer#DiTauJetsAux." ]
249 result.merge(
addToESD(flags,DiTauOutputList))
250 result.merge(
addToAOD(flags,DiTauOutputList))
258 tauThinAlg = CompFactory.TauThinningAlg(name = flags.Tau.ActiveConfig.prefix+
"TauThinningAlg",
259 Taus = flags.Tau.ActiveConfig.TauJets,
260 TauTracks = flags.Tau.ActiveConfig.TauTracks,
261 TauNeutralPFOs = flags.Tau.ActiveConfig.TauNeutralPFOs,
262 TauPi0Clusters = flags.Tau.ActiveConfig.TauPi0Clusters,
263 TauPi0CellLinks = flags.Tau.ActiveConfig.TauPi0ClustersLinks,
264 TauFinalPi0s = flags.Tau.ActiveConfig.TauFinalPi0s,
265 TauShotPFOs = flags.Tau.ActiveConfig.TauShotPFOs,
266 TauShotClusters = flags.Tau.ActiveConfig.TauShotClusters,
267 TauShotCellLinks = flags.Tau.ActiveConfig.TauShotClustersLinks,
268 TauHadronicPFOs = flags.Tau.ActiveConfig.TauHadronicPFOs,
269 TauSecondaryVertices = flags.Tau.ActiveConfig.TauSecondaryVertices)
270 result.addEventAlgo(tauThinAlg)
279 from JetRecConfig.JetRecConfig
import JetRecCfg
280 from JetRecConfig.StandardJetConstits
import stdConstitDic
as cst
281 from JetRecConfig.JetDefinition
import JetDefinition
282 from JetRecConfig.StandardSmallRJets
import flavourghosts, calibmods_noCut, standardmods, truthmods
283 minimalghosts = [
"Track",
"MuonSegment",
"Truth"]
286 if flags.Tau.TauRec.SeedJetCollection ==
"AntiKt4EMPFlowMLJets":
287 from JetRecConfig.StandardSmallRJets
import AntiKt4EMPFlowML
288 result.merge(
JetRecCfg(flags, AntiKt4EMPFlowML))
289 if flags.Tau.TauRec.SeedJetCollection ==
"AntiKt4EMPFlow10GeVCutTauSeedJets":
290 AntiKt4EMPFlow10GeVCutTauSeed = JetDefinition(
"AntiKt",0.4,cst.GPFlow,
291 infix =
"10GeVCutTauSeed",
292 ghostdefs = minimalghosts+flavourghosts,
293 modifiers = calibmods_noCut+(
"Filter:1",)+truthmods+standardmods+(
"JetPtAssociation",
"CaloEnergiesClus"),
296 result.merge(
JetRecCfg(flags, AntiKt4EMPFlow10GeVCutTauSeed))
297 if flags.Tau.TauRec.SeedJetCollection ==
"AntiKt4EMPFlow5GeVCutTauSeedJets":
298 AntiKt4EMPFlow5GeVCutTauSeed = JetDefinition(
"AntiKt",0.4,cst.GPFlow,
299 infix =
"5GeVCutTauSeed",
300 ghostdefs = minimalghosts+flavourghosts,
301 modifiers = calibmods_noCut+(
"Filter:1",)+truthmods+standardmods+(
"JetPtAssociation",
"CaloEnergiesClus"),
304 result.merge(
JetRecCfg(flags, AntiKt4EMPFlow5GeVCutTauSeed))
305 if flags.Tau.TauRec.SeedJetCollection ==
"AntiKt4EMPFlowNoPtCutTauSeedJets":
306 AntiKt4EMPFlowNoPtCutTauSeed = JetDefinition(
"AntiKt",0.4,cst.GPFlow,
307 infix =
"NoPtCutTauSeed",
308 ghostdefs = minimalghosts+flavourghosts,
309 modifiers = calibmods_noCut+(
"Filter:1",)+truthmods+standardmods+(
"JetPtAssociation",
"CaloEnergiesClus"),
312 result.merge(
JetRecCfg(flags, AntiKt4EMPFlowNoPtCutTauSeed))
317 flags_TauRec = flags.cloneAndReplace(
"Tau.ActiveConfig",
"Tau.TauRec")
325 if (flags.Output.doWriteESD
or flags.Output.doWriteAOD):
328 if (flags.Output.doWriteAOD
and flags.Tau.ThinTaus):
332 if flags.Tau.doTauEleRMRec:
334 flags_TauEleRM = flags.cloneAndReplace(
"Tau.ActiveConfig",
"Tau.TauEleRM")
339 from JetRecConfig.JetRecConfig
import JetRecCfg
340 if 'PFlow' in flags.Tau.TauRec.SeedJetCollection:
341 from JetRecConfig.JetRecConfig
import JetRecCfg
342 from JetRecConfig.StandardSmallRJets
import AntiKt4EMPFlow_tauSeedEleRM
343 result.merge(
JetRecCfg(flags_TauEleRM,AntiKt4EMPFlow_tauSeedEleRM ))
345 from JetRecConfig.StandardSmallRJets
import AntiKt4LCTopo
346 AntiKt4LCTopo_EleRM = AntiKt4LCTopo.clone(suffix=
"_EleRM")
347 AntiKt4LCTopo_EleRM.inputdef.name = flags_TauEleRM.Tau.ActiveConfig.LCTopoOrigin_EleRM
348 AntiKt4LCTopo_EleRM.inputdef.inputname = flags_TauEleRM.Tau.ActiveConfig.CaloCalTopoClusters_EleRM
349 AntiKt4LCTopo_EleRM.inputdef.containername = flags_TauEleRM.Tau.ActiveConfig.LCOriginTopoClusters_EleRM
350 AntiKt4LCTopo_EleRM.standardRecoMode =
True
351 AntiKt4LCTopo_EleRM.context =
"EleRM"
352 result.merge(
JetRecCfg(flags_TauEleRM, AntiKt4LCTopo_EleRM))
360 if (flags.Output.doWriteESD
or flags.Output.doWriteAOD):
363 if (flags.Output.doWriteAOD
and flags.Tau.ThinTaus):
367 if flags.DiTau.doDiTauRec:
368 from DiTauRec.DiTauBuilderConfig
import DiTauBuilderCfg
371 if (flags.Output.doWriteESD
or flags.Output.doWriteAOD):
381 from ElectronPhotonSelectorTools.AsgElectronLikelihoodToolsConfig
import AsgElectronLikelihoodToolCfg
382 from ElectronPhotonSelectorTools.LikelihoodEnums
import LikeEnum
383 from ElectronPhotonSelectorTools.ElectronLikelihoodToolMapping
import electronLHmenu
384 ElectronLHSelectorEleRM = result.popToolsAndMerge(
387 name = flags.Tau.ActiveConfig.prefix+
"ElectronLHSelector",
388 quality = getattr(LikeEnum, flags.Tau.ActiveConfig.EleRM_ElectronWorkingPoint),
389 menu = electronLHmenu.offlineMC21,
393 tauElecSubtractAlg = CompFactory.TauElecSubtractAlg(
394 name = flags.Tau.ActiveConfig.prefix+
"TauElecSubtractAlg",
395 Key_ElectronsInput =
'Electrons',
396 Key_ClustersInput =
'CaloCalTopoClusters',
397 Key_ClustersOutput = flags.Tau.ActiveConfig.CaloCalTopoClusters_EleRM,
398 Key_IDTracksInput =
'InDetTrackParticles',
399 Key_IDTracksOutput = flags.Tau.ActiveConfig.TrackCollection,
400 Key_RemovedClustersOutput = flags.Tau.ActiveConfig.RemovedElectronClusters,
401 Key_RemovedTracksOutput = flags.Tau.ActiveConfig.RemovedElectronTracks,
402 ElectronLHTool = ElectronLHSelectorEleRM,
405 result.addEventAlgo(tauElecSubtractAlg)
412 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
413 from AthenaConfiguration.TestDefaults
import defaultTestFiles, defaultConditionsTags
417 flags.Input.Files = defaultTestFiles.RDO_RUN3
418 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_MC
420 flags.Output.AODFileName =
"AOD.pool.root"
421 flags.Exec.MaxEvents = 50
423 flags.Scheduler.ShowDataDeps =
True
424 flags.Scheduler.ShowDataFlow =
True
425 flags.Scheduler.ShowControlFlow =
True
427 flags.Concurrency.NumThreads = 1
428 flags.Concurrency.NumConcurrentEvents = 1
430 from tauRec.ConfigurationHelpers
import StandaloneTauRecoFlags
435 from RecJobTransforms.RecoSteering
import RecoSteering
438 from RecJobTransforms.RecoConfigFlags
import printRecoFlags
444 if __name__==
"__main__":