diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagRun3Config.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagRun3Config.py index e521529a86bcfd13671436d79f0d51b0be6f6f82..d57793cabf3d2ca3ce1577b54e21f8f5f9c048f8 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagRun3Config.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagRun3Config.py @@ -149,17 +149,49 @@ def PrepareStandAloneBTagCfg(inputFlags): return result +def BTagRecoSplitCfg(inputFlags, JetCollection = ['AntiKt4EMTopo'], **kwargs): + + result=ComponentAccumulator() + + taggerList = inputFlags.BTagging.run2TaggersList + result.merge(JetTagCalibCfg(inputFlags, TaggerList = taggerList, **kwargs)) + + secVertexingAndAssociators = {'JetFitter':'BTagTrackToJetAssociator','SV1':'BTagTrackToJetAssociator'} + result.merge(JetBTaggerSplitAlgsCfg(inputFlags, JetCollection = JetCollection[0], TaggerList = taggerList, SecVertexingAndAssociators = secVertexingAndAssociators, **kwargs)) + + from AthenaCommon.ConcurrencyFlags import jobproperties + if jobproperties.ConcurrencyFlags.NumThreads() == 0 : + for el in result._allSequences: + el.name = "TopAlg" + + return result + +def BTagRecoCfg(inputFlags, JetCollection = ['AntiKt4EMTopo'], **kwargs): + + result=ComponentAccumulator() + + taggerList = inputFlags.BTagging.run2TaggersList + result.merge(JetTagCalibCfg(inputFlags, TaggerList = taggerList, **kwargs)) + + result.merge(JetBTaggerAlgCfg(inputFlags, JetCollection = JetCollection[0], PrimaryVertexCollectionName="PrimaryVertices", TaggerList = taggerList, **kwargs)) + + from AthenaCommon.ConcurrencyFlags import jobproperties + if jobproperties.ConcurrencyFlags.NumThreads() == 0 : + for el in result._allSequences: + el.name = "TopAlg" + + return result + def BTagCfg(inputFlags, JetCollection = [], **kwargs): #This is monolithic for now. #Once a first complete example runs, this will be split into small modular chunks. - #Some such items may be best placed elsewehere (e.g. put magnetic field setup in magnetic field git folder etc) result=ComponentAccumulator() + timestamp = kwargs.get('TimeStamp', None) if timestamp: del kwargs['TimeStamp'] splitAlg = kwargs.get('SplitAlg', None) - del kwargs['SplitAlg'] - + if splitAlg: del kwargs['SplitAlg'] TrainedTaggers = inputFlags.BTagging.run2TaggersList + ['MultiSVbb1','MultiSVbb2'] result.merge(JetTagCalibCfg(inputFlags, TaggerList = TrainedTaggers, **kwargs)) @@ -203,6 +235,8 @@ def BTagCfg(inputFlags, JetCollection = [], **kwargs): result.merge(JetBTaggerSplitAlgsCfg(inputFlags, JetCollection = jet, TaggerList = taggerList, SecVertexingAndAssociators = secVertexingAndAssociators, **kwargs)) else: + if kwargs.get('Release', None): + del kwargs['Release'] result.merge(JetBTaggerAlgCfg(inputFlags, JetCollection = jet, PrimaryVertexCollectionName="PrimaryVertices", TaggerList = taggerList, **kwargs)) return result @@ -225,6 +259,13 @@ def JetBTaggerSplitAlgsCfg(inputFlags, JetCollection="", TaggerList=[], SecVerte 'BTagging/201903/dl1r/antikt4empflow/network.json', 'BTagging/201903/dl1/antikt4empflow/network.json', #'BTagging/201903/dl1rmu/antikt4empflow/network.json', + ], + 'AntiKt4EMTopo': [ + #'BTagging/201903/smt/antikt4empflow/network.json', + 'BTagging/201903/rnnip/antikt4empflow/network.json', + 'BTagging/201903/dl1r/antikt4empflow/network.json', + 'BTagging/201903/dl1/antikt4empflow/network.json', + #'BTagging/201903/dl1rmu/antikt4empflow/network.json', ] } @@ -238,8 +279,9 @@ def JetBTaggerSplitAlgsCfg(inputFlags, JetCollection="", TaggerList=[], SecVerte for assoc in TrackToJetAssociators: result.merge(JetParticleAssociationAlgCfg(inputFlags, jet, "InDetTrackParticles", assoc, **kwargs)) - - del kwargs['Release'] + + if kwargs.get('Release', None): + del kwargs['Release'] #Sec vertex finding for k, v in SecVertexingAndAssociators.items(): @@ -266,6 +308,7 @@ def JetBTaggerSplitAlgsCfg(inputFlags, JetCollection="", TaggerList=[], SecVerte if ts == "": result.merge(RunHighLevelTaggersCfg(inputFlags, jet, 'BTagTrackToJetAssociator', postTagDL2JetToTrainingMap[jet], ts)) + return result def RunHighLevelTaggersCfg(inputFlags, JetCollection, Associator, TrainingMaps, TimeStamp): @@ -344,7 +387,6 @@ if __name__=="__main__": from AthenaConfiguration.AllConfigFlags import ConfigFlags as cfgFlags - cfgFlags.Input.isMC=True cfgFlags.Input.Files= args.filesIn.split(",") #cfgFlags.Input.isMC=False #cfgFlags.Input.Files=["/atlas/guirriec/git-athena/q431_2019-03-02T2147/myESD_2019.pool.root"] @@ -378,7 +420,8 @@ if __name__=="__main__": if args.release == "21.2": kwargs["TimeStamp"] = ['201810','201903'] kwargs['Release'] = '21' - kwargs["SplitAlg"] = args.splitAlg + if args.splitAlg: + kwargs["SplitAlg"] = args.splitAlg acc.merge(BTagCfg(cfgFlags, JetCollection = JetCollection, **kwargs)) diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetBTaggerAlgConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetBTaggerAlgConfig.py index df5f1f4e7e6e0e15a32c1b52353a8836284c4ebc..c83f80f922493dcec826355f3b098541f673fa57 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetBTaggerAlgConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetBTaggerAlgConfig.py @@ -14,11 +14,9 @@ def JetBTaggerAlgCfg(ConfigFlags, JetCollection="", PrimaryVertexCollectionName= acc=ComponentAccumulator() jetcol = JetCollection - del options['Release'] - # setup the Analysis__BTagTrackAssociation tool options.setdefault('BTagTrackAssocTool', acc.popToolsAndMerge(BTagTrackAssociationCfg(ConfigFlags, 'TrackAssociation'+ ConfigFlags.BTagging.GeneralToolSuffix, jetcol, TaggerList ))) - + options.setdefault('BTagTool', acc.popToolsAndMerge(BTagToolCfg(ConfigFlags, TaggerList, PrimaryVertexCollectionName, SetupScheme))) timestamp = options.get('TimeStamp', None) @@ -26,7 +24,7 @@ def JetBTaggerAlgCfg(ConfigFlags, JetCollection="", PrimaryVertexCollectionName= timestamp = [''] else: del options['TimeStamp'] - + for ts in timestamp: # setup the secondary vertexing tool options['BTagSecVertexing'] = acc.popToolsAndMerge(BTagSecVtxToolCfg(ConfigFlags, 'SecVx'+ConfigFlags.BTagging.GeneralToolSuffix, jetcol, TimeStamp = ts, **options)) @@ -43,5 +41,5 @@ def JetBTaggerAlgCfg(ConfigFlags, JetCollection="", PrimaryVertexCollectionName= # -- create main BTagging algorithm acc.addEventAlgo(JetBTaggerAlg(**options)) - + return acc diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetParticleAssociationAlgConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetParticleAssociationAlgConfig.py index 0b0d35e81730685523ecafd7c3f9d425eecaf4af..c9e7c44ffd9f12ec7e183c9fd838caf9d0819627 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetParticleAssociationAlgConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetParticleAssociationAlgConfig.py @@ -14,8 +14,7 @@ def JetParticleAssociationAlgCfg(ConfigFlags, JetCollection="", ParticleCollecti jetcol = JetCollection partcol = ParticleCollection - - release = options.get('Release', None) + release = options.get('Release', '21') optionAssoc = {} if release == '21': diff --git a/Reconstruction/RecExample/RecExCommon/share/CombinedRec_config.py b/Reconstruction/RecExample/RecExCommon/share/CombinedRec_config.py index de94e226c5f13d9d9d59b2d46b5147942341ecdf..942de70be185bdd6d03b7f7f67cb08e5dfedc460 100755 --- a/Reconstruction/RecExample/RecExCommon/share/CombinedRec_config.py +++ b/Reconstruction/RecExample/RecExCommon/share/CombinedRec_config.py @@ -5,6 +5,7 @@ mlog = logging.getLogger( 'CombinedRec_config' ) from AthenaCommon.GlobalFlags import globalflags +from AthenaConfiguration.ComponentAccumulator import CAtoGlobalWrapper from RecExConfig.RecFlags import rec from RecExConfig.RecAlgsFlags import recAlgs from RecExConfig.ObjKeyStore import objKeyStore @@ -125,12 +126,21 @@ pdr.flag_domain('btagging') btaggingOK = False if jetOK and rec.doBTagging() and DetFlags.ID_on() and DetFlags.Muon_on(): try: - from BTagging.BTaggingFlags import BTaggingFlags - protectedInclude( "BTagging/BTagging_jobOptions.py") + from AthenaCommon.Configurable import Configurable + Configurable.configurableRun3Behavior=1 + from AthenaConfiguration.AllConfigFlags import ConfigFlags + # Translate all needed flags from old jobProperties to a new AthConfigFlag Container + from AthenaCommon.AthenaCommonFlags import jobproperties as jps + ConfigFlags.Input.Files = jps.AthenaCommonFlags.FilesInput.get_Value() + ConfigFlags.IOVDb.GlobalTag=globalflags.ConditionsTag() + # Configure BTagging algorithm + from BTagging.BTagRun3Config import BTagRecoSplitCfg + CAtoGlobalWrapper(BTagRecoSplitCfg, ConfigFlags) except Exception: treatException("Could not set up btagging reconstruction") btaggingOK=False - pass + finally: + Configurable.configurableRun3Behavior=0 pass # @@ -182,3 +192,6 @@ else: pdr.flag_domain('caloringer') if rec.doCaloRinger: include('CaloRingerAlgs/CaloRinger_jobOptions.py') + + +