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)) )
33 tools.append( result.popToolsAndMerge(tauTools.TauTrackFinderCfg(flags)) )
35 tools.append( result.popToolsAndMerge(tauTools.TauClusterFinderCfg(flags)) )
36 tools.append( result.popToolsAndMerge(tauTools.TauVertexedClusterDecoratorCfg(flags)) )
38 if flags.Beam.Type
is not BeamType.Cosmics:
39 if flags.Tau.doRNNTrackClass:
40 tools.append( result.popToolsAndMerge(tauTools.TauTrackRNNClassifierCfg(flags)) )
41 tools.append( result.popToolsAndMerge(tauTools.EnergyCalibrationLCCfg(flags)) )
43 tools.append( result.popToolsAndMerge(tauTools.CellVariablesCfg(flags)) )
44 tools.append( result.popToolsAndMerge(tauTools.ElectronVetoVarsCfg(flags)) )
45 tools.append( result.popToolsAndMerge(tauTools.TauShotFinderCfg(flags)) )
47 if flags.Tau.doPi0Clus:
48 tools.append( result.popToolsAndMerge(tauTools.Pi0ClusterFinderCfg(flags)) )
51 TauProcessorAlg = CompFactory.getComp(
"TauProcessorAlg")
52 BuildAlg =
TauProcessorAlg(name = flags.Tau.ActiveConfig.prefix+
"TauCoreBuilderAlg",
53 Key_jetInputContainer = flags.Tau.ActiveConfig.SeedJetCollection,
54 Key_tauOutputContainer = flags.Tau.ActiveConfig.TauJets_tmp,
55 Key_tauTrackOutputContainer = flags.Tau.ActiveConfig.TauTracks,
56 Key_tauShotClusOutputContainer = flags.Tau.ActiveConfig.TauShotClusters,
57 Key_tauShotClusLinkContainer = flags.Tau.ActiveConfig.TauShotClustersLinks,
58 Key_tauShotPFOOutputContainer = flags.Tau.ActiveConfig.TauShotPFOs,
59 Key_tauPi0CellOutputContainer = flags.Tau.ActiveConfig.TauCommonPi0Cells,
60 MaxEta = flags.Tau.SeedMaxEta,
61 MinPt = flags.Tau.SeedMinPt,
62 MaxNTracks = flags.Tau.MaxNTracks,
64 CellMakerTool = result.popToolsAndMerge(tauTools.TauCellFinalizerCfg(flags)))
66 if flags.GeoModel.Run
is LHCPeriod.Run4:
67 BuildAlg.PixelDetEleCollKey=
"ITkPixelDetectorElementCollection"
68 BuildAlg.SCTDetEleCollKey=
"ITkStripDetectorElementCollection"
69 BuildAlg.TRTDetEleContKey=
""
71 result.addEventAlgo(BuildAlg)
80 from CaloTools.CaloNoiseCondAlgConfig
import CaloNoiseCondAlgCfg
85 from CaloRec.CaloTopoClusterConfig
import caloTopoCoolFolderCfg
88 from LArBadChannelTool.LArBadChannelConfig
import LArBadChannelCfg
91 from TileConditions.TileBadChannelsConfig
import TileBadChannelsCondAlgCfg
95 import tauRec.TauToolHolder
as tauTools
97 CaloClusterMaker = CompFactory.getComp(
"CaloClusterMaker")
98 CaloTopoForTausMaker = CaloClusterMaker (flags.Tau.ActiveConfig.prefix+
"TauPi0SubtractedClusterMaker")
99 CaloTopoForTausMaker.ClustersOutputName = flags.Tau.ActiveConfig.TauPi0Clusters_tmp
100 CaloTopoForTausMaker.ClusterMakerTools = [result.popToolsAndMerge(tauTools.TauCaloTopoClusterMakerCfg(flags)),
101 result.popToolsAndMerge(tauTools.TauCaloTopoClusterSplitterCfg(flags))]
103 CaloTopoForTausMaker.ClusterCorrectionTools += [result.popToolsAndMerge(tauTools.TauCaloClusterBadChannelCfg(flags))]
104 CaloTopoForTausMaker.ClusterCorrectionTools += [result.popToolsAndMerge(tauTools.TauCaloClusterMomentsMakerCfg(flags))]
106 if flags.Calo.TopoCluster.doTopoClusterLocalCalib:
107 CaloTopoForTausMaker.ClusterCorrectionTools += [result.popToolsAndMerge(tauTools.TauCaloClusterLocalCalibCfg(flags)),
108 result.popToolsAndMerge(tauTools.TauCaloOOCCalibCfg(flags)),
109 result.popToolsAndMerge(tauTools.TauCaloOOCPi0CalibCfg(flags)),
110 result.popToolsAndMerge(tauTools.TauCaloDMCalibCfg(flags))]
112 result.addEventAlgo(CaloTopoForTausMaker)
114 relinkAlg = CompFactory.ClusterCellRelinkAlg(name = flags.Tau.ActiveConfig.prefix+
'ClusterCellRelinkAlg',
116 ClustersInput = flags.Tau.ActiveConfig.TauPi0Clusters_tmp,
117 ClustersOutput = flags.Tau.ActiveConfig.TauPi0Clusters,
118 CellLinksOutput = flags.Tau.ActiveConfig.TauPi0ClustersLinks)
119 result.addEventAlgo(relinkAlg)
128 import tauRec.TauToolHolder
as tauTools
132 tools.append( result.popToolsAndMerge(tauTools.Pi0ClusterCreatorCfg(flags)) )
133 tools.append( result.popToolsAndMerge(tauTools.Pi0ClusterScalerCfg(flags)) )
134 tools.append( result.popToolsAndMerge(tauTools.Pi0ScoreCalculatorCfg(flags)) )
135 tools.append( result.popToolsAndMerge(tauTools.Pi0SelectorCfg(flags)) )
137 if flags.Tau.isStandalone
or flags.Tracking.doVertexFinding:
138 tools.append(result.popToolsAndMerge(tauTools.TauVertexVariablesCfg(flags)) )
140 tools.append( result.popToolsAndMerge(tauTools.TauCommonCalcVarsCfg(flags)) )
141 tools.append( result.popToolsAndMerge(tauTools.TauSubstructureCfg(flags)) )
143 if flags.Tau.doPanTau:
144 import PanTauAlgs.JobOptions_Main_PanTau
as pantau
145 tools.append( result.popToolsAndMerge(pantau.PanTauCfg(flags)) )
147 tools.append(result.popToolsAndMerge(tauTools.TauCombinedTESCfg(flags)) )
149 if flags.Beam.Type
is not BeamType.Cosmics:
150 tools.append( result.popToolsAndMerge(tauTools.MvaTESVariableDecoratorCfg(flags)) )
151 tools.append( result.popToolsAndMerge(tauTools.MvaTESEvaluatorCfg(flags)) )
153 tools.append( result.popToolsAndMerge(tauTools.TauAODSelectorCfg(flags)) )
155 if flags.Tau.doTauDiscriminant:
156 tools.append( result.popToolsAndMerge(tauTools.TauIDVarCalculatorCfg(flags)) )
157 tools.append( result.popToolsAndMerge(tauTools.TauJetRNNEvaluatorCfg(flags)) )
158 tools.append( result.popToolsAndMerge(tauTools.TauWPDecoratorJetRNNCfg(flags)) )
159 tools.append( result.popToolsAndMerge(tauTools.TauEleRNNEvaluatorCfg(flags)) )
160 tools.append( result.popToolsAndMerge(tauTools.TauWPDecoratorEleRNNCfg(flags)) )
161 tools.append( result.popToolsAndMerge(tauTools.TauDecayModeNNClassifierCfg(flags)) )
163 TauRunnerAlg = CompFactory.getComp(
"TauRunnerAlg")
164 RunnerAlg =
TauRunnerAlg(name = flags.Tau.ActiveConfig.prefix+
"TauRecRunnerAlg",
165 Key_tauInputContainer = flags.Tau.ActiveConfig.TauJets_tmp,
166 Key_Pi0ClusterInputContainer = flags.Tau.ActiveConfig.TauPi0Clusters,
167 Key_tauOutputContainer = flags.Tau.ActiveConfig.TauJets,
168 Key_neutralPFOOutputContainer = flags.Tau.ActiveConfig.TauNeutralPFOs,
169 Key_hadronicPFOOutputContainer = flags.Tau.ActiveConfig.TauHadronicPFOs,
170 Key_chargedPFOOutputContainer = flags.Tau.ActiveConfig.TauChargedPFOs,
171 Key_vertexOutputContainer = flags.Tau.ActiveConfig.TauSecondaryVertices,
172 Key_pi0Container = flags.Tau.ActiveConfig.TauFinalPi0s,
175 result.addEventAlgo(RunnerAlg)
181 from OutputStreamAthenaPool.OutputStreamConfig
import addToESD,addToAOD
186 TauAODList += [ f
"xAOD::TauJetContainer#{flags.Tau.ActiveConfig.TauJets}" ]
187 TauAODList += [ f
"xAOD::TauTrackContainer#{flags.Tau.ActiveConfig.TauTracks}" ]
188 TauAODList += [ f
"xAOD::TauTrackAuxContainer#{flags.Tau.ActiveConfig.TauTracks}Aux." ]
189 TauAODList += [ f
"xAOD::VertexContainer#{flags.Tau.ActiveConfig.TauSecondaryVertices}" ]
190 TauAODList += [ f
"xAOD::VertexAuxContainer#{flags.Tau.ActiveConfig.TauSecondaryVertices}Aux.-vxTrackAtVertex" ]
191 TauAODList += [ f
"xAOD::CaloClusterContainer#{flags.Tau.ActiveConfig.TauPi0Clusters}" ]
192 TauAODList += [ f
"xAOD::CaloClusterAuxContainer#{flags.Tau.ActiveConfig.TauPi0Clusters}Aux." ]
193 TauAODList += [ f
"CaloClusterCellLinkContainer#{flags.Tau.ActiveConfig.TauPi0Clusters}_links" ]
194 TauAODList += [ f
"xAOD::CaloClusterContainer#{flags.Tau.ActiveConfig.TauShotClusters}" ]
195 TauAODList += [ f
"xAOD::CaloClusterAuxContainer#{flags.Tau.ActiveConfig.TauShotClusters}Aux." ]
196 TauAODList += [ f
"CaloClusterCellLinkContainer#{flags.Tau.ActiveConfig.TauShotClusters}_links" ]
197 TauAODList += [ f
"xAOD::ParticleContainer#{flags.Tau.ActiveConfig.TauFinalPi0s}" ]
198 TauAODList += [ f
"xAOD::ParticleAuxContainer#{flags.Tau.ActiveConfig.TauFinalPi0s}Aux." ]
199 TauAODList += [ f
"xAOD::PFOContainer#{flags.Tau.ActiveConfig.TauShotPFOs}" ]
200 TauAODList += [ f
"xAOD::PFOAuxContainer#{flags.Tau.ActiveConfig.TauShotPFOs}Aux." ]
201 TauAODList += [ f
"xAOD::PFOContainer#{flags.Tau.ActiveConfig.TauNeutralPFOs}" ]
202 TauAODList += [ f
"xAOD::PFOAuxContainer#{flags.Tau.ActiveConfig.TauNeutralPFOs}Aux." ]
203 TauAODList += [ f
"xAOD::PFOContainer#{flags.Tau.ActiveConfig.TauHadronicPFOs}" ]
204 TauAODList += [ f
"xAOD::PFOAuxContainer#{flags.Tau.ActiveConfig.TauHadronicPFOs}Aux." ]
207 TauESDList =
list(TauAODList)
211 TauAODList += [ f
"xAOD::TauJetAuxContainer#{flags.Tau.ActiveConfig.TauJets}Aux.-VertexedClusters.-mu.-nVtxPU.-ABS_ETA_LEAD_TRACK.-TAU_ABSDELTAPHI.-TAU_ABSDELTAETA.-absipSigLeadTrk.-passThinning.-chargedGlobalFELinks.-neutralGlobalFELinks" ]
215 TauESDList += [ f
"xAOD::TauJetAuxContainer#{flags.Tau.ActiveConfig.TauJets}Aux.-VertexedClusters.-chargedGlobalFELinks.-neutralGlobalFELinks" ]
216 TauESDList += [ f
"xAOD::PFOContainer#{flags.Tau.ActiveConfig.TauChargedPFOs}" ]
217 TauESDList += [ f
"xAOD::PFOAuxContainer#{flags.Tau.ActiveConfig.TauChargedPFOs}Aux." ]
219 result.merge(
addToESD(flags,TauESDList))
220 result.merge(
addToAOD(flags,TauAODList))
226 from OutputStreamAthenaPool.OutputStreamConfig
import addToESD,addToAOD
229 DiTauOutputList = [
"xAOD::DiTauJetContainer#DiTauJets" ]
230 DiTauOutputList += [
"xAOD::DiTauJetAuxContainer#DiTauJetsAux." ]
232 result.merge(
addToESD(flags,DiTauOutputList))
233 result.merge(
addToAOD(flags,DiTauOutputList))
241 tauThinAlg = CompFactory.TauThinningAlg(name = flags.Tau.ActiveConfig.prefix+
"TauThinningAlg",
242 Taus = flags.Tau.ActiveConfig.TauJets,
243 TauTracks = flags.Tau.ActiveConfig.TauTracks,
244 TauNeutralPFOs = flags.Tau.ActiveConfig.TauNeutralPFOs,
245 TauPi0Clusters = flags.Tau.ActiveConfig.TauPi0Clusters,
246 TauPi0CellLinks = flags.Tau.ActiveConfig.TauPi0ClustersLinks,
247 TauFinalPi0s = flags.Tau.ActiveConfig.TauFinalPi0s,
248 TauShotPFOs = flags.Tau.ActiveConfig.TauShotPFOs,
249 TauShotClusters = flags.Tau.ActiveConfig.TauShotClusters,
250 TauShotCellLinks = flags.Tau.ActiveConfig.TauShotClustersLinks,
251 TauHadronicPFOs = flags.Tau.ActiveConfig.TauHadronicPFOs,
252 TauSecondaryVertices = flags.Tau.ActiveConfig.TauSecondaryVertices)
253 result.addEventAlgo(tauThinAlg)
262 from JetRecConfig.JetRecConfig
import JetRecCfg
263 from JetRecConfig.StandardJetConstits
import stdConstitDic
as cst
264 from JetRecConfig.JetDefinition
import JetDefinition
265 from JetRecConfig.StandardSmallRJets
import flavourghosts, calibmods_noCut, standardmods, truthmods
266 minimalghosts = [
"Track",
"MuonSegment",
"Truth"]
269 if flags.Tau.TauRec.SeedJetCollection ==
"AntiKt4EMPFlow10GeVCutTauSeedJets":
270 AntiKt4EMPFlow10GeVCutTauSeed = JetDefinition(
"AntiKt",0.4,cst.GPFlow,
271 infix =
"10GeVCutTauSeed",
272 ghostdefs = minimalghosts+flavourghosts,
273 modifiers = calibmods_noCut+(
"Filter:1",)+truthmods+standardmods+(
"JetPtAssociation",
"CaloEnergiesClus"),
276 result.merge(
JetRecCfg(flags, AntiKt4EMPFlow10GeVCutTauSeed))
277 if flags.Tau.TauRec.SeedJetCollection ==
"AntiKt4EMPFlow5GeVCutTauSeedJets":
278 AntiKt4EMPFlow5GeVCutTauSeed = JetDefinition(
"AntiKt",0.4,cst.GPFlow,
279 infix =
"5GeVCutTauSeed",
280 ghostdefs = minimalghosts+flavourghosts,
281 modifiers = calibmods_noCut+(
"Filter:1",)+truthmods+standardmods+(
"JetPtAssociation",
"CaloEnergiesClus"),
284 result.merge(
JetRecCfg(flags, AntiKt4EMPFlow5GeVCutTauSeed))
285 if flags.Tau.TauRec.SeedJetCollection ==
"AntiKt4EMPFlowNoPtCutTauSeedJets":
286 AntiKt4EMPFlowNoPtCutTauSeed = JetDefinition(
"AntiKt",0.4,cst.GPFlow,
287 infix =
"NoPtCutTauSeed",
288 ghostdefs = minimalghosts+flavourghosts,
289 modifiers = calibmods_noCut+(
"Filter:1",)+truthmods+standardmods+(
"JetPtAssociation",
"CaloEnergiesClus"),
292 result.merge(
JetRecCfg(flags, AntiKt4EMPFlowNoPtCutTauSeed))
297 flags_TauRec = flags.cloneAndReplace(
"Tau.ActiveConfig",
"Tau.TauRec")
305 if (flags.Output.doWriteESD
or flags.Output.doWriteAOD):
308 if (flags.Output.doWriteAOD
and flags.Tau.ThinTaus):
312 if flags.Tau.doTauEleRMRec:
314 flags_TauEleRM = flags.cloneAndReplace(
"Tau.ActiveConfig",
"Tau.TauEleRM")
319 from JetRecConfig.JetRecConfig
import JetRecCfg
320 from JetRecConfig.StandardSmallRJets
import AntiKt4LCTopo
321 AntiKt4LCTopo_EleRM = AntiKt4LCTopo.clone(suffix=
"_EleRM")
322 AntiKt4LCTopo_EleRM.inputdef.name = flags_TauEleRM.Tau.ActiveConfig.LCTopoOrigin_EleRM
323 AntiKt4LCTopo_EleRM.inputdef.inputname = flags_TauEleRM.Tau.ActiveConfig.CaloCalTopoClusters_EleRM
324 AntiKt4LCTopo_EleRM.inputdef.containername = flags_TauEleRM.Tau.ActiveConfig.LCOriginTopoClusters_EleRM
325 AntiKt4LCTopo_EleRM.standardRecoMode =
True
326 AntiKt4LCTopo_EleRM.context =
"EleRM"
328 result.merge(
JetRecCfg(flags_TauEleRM, AntiKt4LCTopo_EleRM))
336 if (flags.Output.doWriteESD
or flags.Output.doWriteAOD):
339 if (flags.Output.doWriteAOD
and flags.Tau.ThinTaus):
343 if flags.Tau.doDiTauRec:
344 from DiTauRec.DiTauBuilderConfig
import DiTauBuilderCfg
347 if (flags.Output.doWriteESD
or flags.Output.doWriteAOD):
357 from ElectronPhotonSelectorTools.AsgElectronLikelihoodToolsConfig
import AsgElectronLikelihoodToolCfg
358 from ElectronPhotonSelectorTools.LikelihoodEnums
import LikeEnum
359 from ElectronPhotonSelectorTools.ElectronLikelihoodToolMapping
import electronLHmenu
360 ElectronLHSelectorEleRM = result.popToolsAndMerge(
363 name = flags.Tau.ActiveConfig.prefix+
"ElectronLHSelector",
364 quality = getattr(LikeEnum, flags.Tau.ActiveConfig.EleRM_ElectronWorkingPoint),
365 menu = electronLHmenu.offlineMC21,
369 tauElecSubtractAlg = CompFactory.TauElecSubtractAlg(
370 name = flags.Tau.ActiveConfig.prefix+
"TauElecSubtractAlg",
371 Key_ElectronsInput =
'Electrons',
372 Key_ClustersInput =
'CaloCalTopoClusters',
373 Key_ClustersOutput = flags.Tau.ActiveConfig.CaloCalTopoClusters_EleRM,
374 Key_IDTracksInput =
'InDetTrackParticles',
375 Key_IDTracksOutput = flags.Tau.ActiveConfig.TrackCollection,
376 Key_RemovedClustersOutput = flags.Tau.ActiveConfig.RemovedElectronClusters,
377 Key_RemovedTracksOutput = flags.Tau.ActiveConfig.RemovedElectronTracks,
378 ElectronLHTool = ElectronLHSelectorEleRM,
381 result.addEventAlgo(tauElecSubtractAlg)
388 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
389 from AthenaConfiguration.TestDefaults
import defaultTestFiles, defaultConditionsTags
393 flags.Input.Files = defaultTestFiles.RDO_RUN3
394 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_MC
396 flags.Output.AODFileName =
"AOD.pool.root"
397 flags.Exec.MaxEvents = 50
399 flags.Scheduler.ShowDataDeps =
True
400 flags.Scheduler.ShowDataFlow =
True
401 flags.Scheduler.ShowControlFlow =
True
403 flags.Concurrency.NumThreads = 1
404 flags.Concurrency.NumConcurrentEvents = 1
406 from tauRec.ConfigurationHelpers
import StandaloneTauRecoFlags
411 from RecJobTransforms.RecoSteering
import RecoSteering
414 from RecJobTransforms.RecoConfigFlags
import printRecoFlags
420 if __name__==
"__main__":