diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/BTagging/BTagHighLevelAugmenterAlg.h b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/BTagging/BTagHighLevelAugmenterAlg.h index d8cf5562a438311deed3c0f0c66a98f91879ceda..ed7eacd49dd40d90ad74dbcb7bae29e346a0b7d7 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/BTagging/BTagHighLevelAugmenterAlg.h +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/BTagging/BTagHighLevelAugmenterAlg.h @@ -7,7 +7,7 @@ // ATLAS things #include "AthenaBaseComps/AthAlgorithm.h" -#include "xAODJet/Jet.h" +#include "xAODJet/JetContainer.h" #include "xAODBTagging/BTagging.h" #include "xAODEventInfo/EventInfo.h" #include "StoreGate/ReadDecorHandle.h" @@ -29,6 +29,7 @@ namespace Analysis { private: // Input Containers + SG::ReadHandleKey<xAOD::JetContainer > m_JetCollectionName {this, "JetCollectionName", "", "Input jet container"}; SG::ReadHandleKey<xAOD::BTaggingContainer > m_BTagCollectionName {this, "BTaggingCollectionName", "", "Input BTagging container"}; SG::ReadDecorHandleKey<xAOD::BTaggingContainer> m_bTagJetDecorLinkName {this, "JetLinkName", "", "Element Link from BTagging to Jet container"}; std::string m_flipTagConfig; diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/BTagging/JetBTaggerAlg.h b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/BTagging/JetBTaggerAlg.h index 61ee38e22928796ebfb13d4a38d38424c0873660..ef1a6f2417212de8b62fbc3ce8c9909756485325 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/BTagging/JetBTaggerAlg.h +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/BTagging/JetBTaggerAlg.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef BTAGGING_JETBTAGGERALG_HH @@ -45,8 +45,9 @@ class JetBTaggerAlg: private: SG::ReadHandleKey<xAOD::JetContainer > m_JetCollectionName {this, "JetCollectionName", "", "Input jet container"}; - Gaudi::Property<SG::WriteDecorHandleKey<xAOD::JetContainer> >m_jetBTaggingLinkName{this,"JetContainerName","","Element link form jet to BTagging container"}; + SG::WriteDecorHandleKey<xAOD::JetContainer> m_jetBTaggingLinkName{this, "BTaggingLinkName","","Element link form jet to BTagging container"}; SG::WriteHandleKey<xAOD::BTaggingContainer> m_BTaggingCollectionName {this, "BTaggingCollectionName", "", "Output BTagging container"}; + SG::WriteDecorHandleKey<xAOD::BTaggingContainer> m_bTagJetDecorLinkName {this, "JetLinkName", "", "Element Link from BTagging to Jet container"}; std::string m_JetName; std::string m_BTagLink; diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagHighLevelAugmenterAlgConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagHighLevelAugmenterAlgConfig.py index 4dfca4ee3f4f7eedd8cbc6422a3fd8684bea2375..4a10f594b8ba36dd9bd831a0e561b1acf6b03028 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagHighLevelAugmenterAlgConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagHighLevelAugmenterAlgConfig.py @@ -5,7 +5,7 @@ from AthenaConfiguration.ComponentFactory import CompFactory Analysis__BTagHighLevelAugmenterAlg=CompFactory.Analysis.BTagHighLevelAugmenterAlg -def BTagHighLevelAugmenterAlgCfg(ConfigFlags, sequenceName, BTagCollection, Associator, doFlipTagger=False, **options): +def BTagHighLevelAugmenterAlgCfg(ConfigFlags, sequenceName, JetCollection, BTagCollection, Associator, doFlipTagger=False, **options): """Adds a SecVtxTool instance and registers it. input: name: The algorithm's name. @@ -16,6 +16,7 @@ def BTagHighLevelAugmenterAlgCfg(ConfigFlags, sequenceName, BTagCollection, Asso acc = ComponentAccumulator(sequenceName) options = {} + options['JetCollectionName'] = JetCollection.replace('Track', 'PV0Track') + 'Jets' options['BTaggingCollectionName'] = BTagCollection options['JetLinkName'] = options['BTaggingCollectionName'] + '.jetLink' options['BTagTrackToJetAssociatorName'] = Associator diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagLightSecVertexingConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagLightSecVertexingConfig.py index e87c04895a862dda1df484b580b3335de65358ac..c9b3f11742d936b36957563c71b84921d237985d 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagLightSecVertexingConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagLightSecVertexingConfig.py @@ -2,7 +2,6 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from JetTagTools.JetFitterVariablesFactoryConfig import JetFitterVariablesFactoryCfg #from BTagging.MSVVariablesFactoryConfig import MSVVariablesFactoryCfg @@ -46,8 +45,8 @@ def BTagLightSecVtxToolCfg(flags, Name, JetCollection, SVandAssoc = {""}, TimeSt options.setdefault('SecVtxFinderTrackNameList', secVtxFinderTrackNameList) options.setdefault('SecVtxFinderxAODBaseNameList', secVtxFinderxAODBaseNameList) options['BTagVxSecVertexInfoNames'] = VxSecVertexInfoNameList - options.setdefault('PrimaryVertexName', BTaggingFlags.PrimaryVertexCollectionName) - options.setdefault('vxPrimaryCollectionName', BTaggingFlags.PrimaryVertexCollectionName) + options.setdefault('PrimaryVertexName', flags.BTagging.PrimaryVertexCollectionName) + options.setdefault('vxPrimaryCollectionName', flags.BTagging.PrimaryVertexCollectionName) options.setdefault('JetFitterVariableFactory', jetFitterVF) options['JetSecVtxLinkName'] = jetcol + '.' + OutputFilesSVname options['JetJFVtxLinkName'] = jetcol + '.' + OutputFilesJFVxname diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagRun3Config.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagRun3Config.py index 3d31adb660c47af3344a673e714768616e160c3b..fe5c1fcfe6f00919a8f10d8cf01dec3b52ac2da3 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagRun3Config.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagRun3Config.py @@ -3,7 +3,6 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from IOVDbSvc.IOVDbSvcConfig import addFolders -from BTagging.BTaggingFlags import BTaggingFlags from BTagging.JetBTaggerAlgConfig import JetBTaggerAlgCfg from BTagging.JetParticleAssociationAlgConfig import JetParticleAssociationAlgCfg from BTagging.JetBTaggingAlgConfig import JetBTaggingAlgCfg @@ -13,22 +12,49 @@ from BTagging.BTagTrackAugmenterAlgConfig import BTagTrackAugmenterAlgCfg from BTagging.BTagHighLevelAugmenterAlgConfig import BTagHighLevelAugmenterAlgCfg from BTagging.HighLevelBTagAlgConfig import HighLevelBTagAlgCfg -def JetTagCalibCfg(ConfigFlags, scheme="", TaggerList = []): +def JetTagCalibCfg(ConfigFlags, scheme="", TaggerList = [], useBTagFlagsDefaults = True, **kwargs): result=ComponentAccumulator() - #if ConfInstance.checkFlagsUsingBTaggingFlags(): - if True: + CalibrationChannelAliases = [ "myOwnCollection->AntiKt4TopoEM,AntiKt4EMTopo", + "AntiKt4Tower->AntiKt4Tower,AntiKt4H1Tower,AntiKt4TopoEM,AntiKt4EMTopo", + "AntiKt4Topo->AntiKt4Topo,AntiKt4TopoEM,AntiKt4EMTopo,AntiKt4H1Topo", + "AntiKt4LCTopo->AntiKt4LCTopo,AntiKt4TopoEM,AntiKt4EMTopo,AntiKt4Topo,AntiKt4H1Topo", + "AntiKt6Tower->AntiKt6Tower,AntiKt6H1Tower,AntiKt4TopoEM,AntiKt4EMTopo", + "AntiKt6Topo->AntiKt6Topo,AntiKt6TopoEM,AntiKt6H1Topo,AntiKt6H1Tower,AntiKt4TopoEM,AntiKt4EMTopo", + "AntiKt6LCTopo->AntiKt6LCTopo,AntiKt6TopoEM,AntiKt6Topo,AntiKt6H1Topo,AntiKt6H1Tower,AntiKt4TopoEM,AntiKt4EMTopo", + "AntiKt4TopoEM->AntiKt4TopoEM,AntiKt4EMTopo,AntiKt4H1Topo,AntiKt4LCTopo", + "AntiKt6TopoEM->AntiKt6TopoEM,AntiKt6H1Topo,AntiKt6H1Tower,AntiKt4TopoEM,AntiKt4EMTopo", + #WOUTER: I added some more aliases here that were previously set up at ./python/BTagging_jobOptions.py. But it cannot + #stay there if we want support for JetRec to setup b-tagging from their end. + "AntiKt4EMTopo->AntiKt4EMTopo,AntiKt4TopoEM,AntiKt4LCTopo", + "AntiKt4LCTopo->AntiKt4LCTopo,AntiKt4TopoEM,AntiKt4EMTopo", + "AntiKt4EMTopoOrigin->AntiKt4EMTopoOrigin,AntiKt4EMTopo,AntiKt4TopoEM,AntiKt4LCTopo", + "AntiKt4LCTopoOrigin->AntiKt4LCTopoOrigin,AntiKt4LCTopo,AntiKt4TopoEM,AntiKt4EMTopo", + "AntiKt10LCTopo->AntiKt10LCTopo,AntiKt6LCTopo,AntiKt6TopoEM,AntiKt4LCTopo,AntiKt4TopoEM,AntiKt4EMTopo", + "AntiKt10Truth->AntiKt6TopoEM,AntiKt4TopoEM,AntiKt4EMTopo,AntiKt4LCTopo", + "AntiKt10TruthWZ->AntiKt10TruthWZ,AntiKt6TopoEM,AntiKt4TopoEM,AntiKt4EMTopo,AntiKt4LCTopo", + "AntiKt4Truth->AntiKt4TopoEM,AntiKt4EMTopo,AntiKt4LCTopo", + "AntiKt4TruthWZ->AntiKt4TruthWZ,AntiKt4TopoEM,AntiKt4EMTopo,AntiKt4LCTopo", + "AntiKt4Track->AntiKt4Track,AntiKt4TopoEM,AntiKt4EMTopo,AntiKt4LCTopo", + "AntiKt3Track->AntiKt3Track,AntiKt4Track,AntiKt4TopoEM,AntiKt4EMTopo,AntiKt4LCTopo", + "AntiKt2Track->AntiKt2Track,AntiKt4Track,AntiKt4TopoEM,AntiKt4EMTopo,AntiKt4LCTopo", + "AntiKt4EMPFlow->AntiKt4EMPFlow,AntiKt4EMTopo,AntiKt4TopoEM,AntiKt4LCTopo", + "AntiKt4HI->AntiKt4HI,AntiKt4EMTopo,AntiKt4TopoEM,AntiKt4LCTopo"] + + newChannel = kwargs.get("NewChannel") + if newChannel: + CalibrationChannelAliases.append(newChannel) + + if useBTagFlagsDefaults: #IP2D - grades= [ "0HitIn0HitNInExp2","0HitIn0HitNInExpIn","0HitIn0HitNInExpNIn","0HitIn0HitNIn", - "0HitInExp", "0HitIn", - "0HitNInExp", "0HitNIn", - "InANDNInShared", "PixShared", "SctShared", - "InANDNInSplit", "PixSplit", - "Good"] + grades= ConfigFlags.BTagging.Grades #IP3D #Same as IP2D. Revisit JetTagCalibCondAlg.cxx if not. + #RNNIP + RNNIPConfig = {'rnnip':''} + JetTagCalibCondAlg=CompFactory.Analysis.JetTagCalibCondAlg jettagcalibcondalg = "JetTagCalibCondAlg" readkeycalibpath = "/GLOBAL/BTagCalib/RUN12" @@ -38,7 +64,7 @@ def JetTagCalibCfg(ConfigFlags, scheme="", TaggerList = []): connSchema = "GLOBAL" histoskey = "JetTagCalibHistosKey" result.merge(addFolders(ConfigFlags,[readkeycalibpath], connSchema, className='CondAttrListCollection')) - JetTagCalib = JetTagCalibCondAlg(jettagcalibcondalg, ReadKeyCalibPath=readkeycalibpath, HistosKey = histoskey, taggers = TaggerList, channelAliases = BTaggingFlags.CalibrationChannelAliases, IP2D_TrackGradePartitions = grades, RNNIP_NetworkConfig = BTaggingFlags.RNNIPConfig) + JetTagCalib = JetTagCalibCondAlg(jettagcalibcondalg, ReadKeyCalibPath=readkeycalibpath, HistosKey = histoskey, taggers = TaggerList, channelAliases = CalibrationChannelAliases, IP2D_TrackGradePartitions = grades, RNNIP_NetworkConfig = RNNIPConfig) # Maybe needed for trigger use #from IOVDbSvc.CondDB import conddb #if conddb.dbdata == 'COMP200': @@ -57,7 +83,7 @@ def registerJetCollectionEL(flags, JetCollection, TimeStamp): ItemList = [] # btaggingLink suffix = ".".join(['btaggingLink'+ ts for ts in TimeStamp]) - ItemList.append('xAOD::JetContainer#'+JetCollection+'Jets.' + suffix) + ItemList.append('xAOD::JetContainer#'+JetCollection+'Jets') ItemList.append('xAOD::JetAuxContainer#'+JetCollection+'JetsAux.'+ suffix) return ItemList @@ -91,12 +117,8 @@ def registerOutputBTaggingContainers(flags, JetCollection, suffix = ''): author += '_' + suffix ItemList.append(OutputFilesBaseName + author) - # jetLink - jetLink = '.jetLink' - ItemList.append(OutputFilesBaseName+author+jetLink) - ItemList.append(OutputFilesBaseAuxName+author+jetLink) - - ItemList.append(OutputFilesBaseAuxName + author + 'Aux.-BTagTrackToJetAssociatorBB') + ItemList.append(OutputFilesBaseAuxName + author + 'Aux.*') + #ItemList.append(OutputFilesBaseAuxName + author + 'Aux.-BTagTrackToJetAssociatorBB') return ItemList @@ -107,6 +129,8 @@ def BTagRedoESDCfg(flags, jet, extraContainers=[]): #Register input ESD container in output ESDItemList = registerOutputBTaggingContainers(flags, jet) + ESDItemList += registerJetCollectionEL(flags, jet, ['']) + print(ESDItemList) from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg acc.merge(OutputStreamCfg(flags,"ESD", ItemList=ESDItemList+extraContainers)) @@ -145,18 +169,23 @@ def RenameInputContainerCfg(suffix): return acc -def BTagCfg(inputFlags,**kwargs): +def RenameHLTaggerCfg(JetCollection, Tagger, suffix): + acc=ComponentAccumulator() + AddressRemappingSvc, ProxyProviderSvc=CompFactory.getComps("AddressRemappingSvc","ProxyProviderSvc",) + AddressRemappingSvc = AddressRemappingSvc("AddressRemappingSvc") + AddressRemappingSvc.TypeKeyRenameMaps += ['xAOD::BTaggingAuxContainer#BTagging_' + JetCollection + '.' + Tagger + '_pu->BTagging_' + JetCollection + '.'+ Tagger + '_pu' + suffix] + AddressRemappingSvc.TypeKeyRenameMaps += ['xAOD::BTaggingAuxContainer#BTagging_' + JetCollection + '.' + Tagger + '_pc->BTagging_' + JetCollection + '.'+ Tagger + '_pc' + suffix] + AddressRemappingSvc.TypeKeyRenameMaps += ['xAOD::BTaggingAuxContainer#BTagging_' + JetCollection + '.' + Tagger + '_pb->BTagging_' + JetCollection + '.'+ Tagger + '_pb' + suffix] + AddressRemappingSvc.TypeKeyRenameMaps += ['xAOD::BTaggingAuxContainer#BTagging_' + JetCollection + '.' + Tagger + '_ptau->BTagging_' + JetCollection + '.'+ Tagger + '_ptau' + suffix] + acc.addService(AddressRemappingSvc) + acc.addService(ProxyProviderSvc(ProviderNames = [ "AddressRemappingSvc" ])) - #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) + return acc +def PrepareStandAloneBTagCfg(inputFlags): result=ComponentAccumulator() - timestamp = kwargs.get('TimeStamp', None) - if timestamp: del kwargs['TimeStamp'] - splitAlg = kwargs.get('SplitAlg', None) - del kwargs['SplitAlg'] - release = kwargs.get('Release', None) - if release: del kwargs['Release'] + + from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg + result.merge(PoolReadCfg(inputFlags)) from TrkConfig.AtlasTrackingGeometrySvcConfig import TrackingGeometrySvcCfg acc = TrackingGeometrySvcCfg(inputFlags) @@ -184,11 +213,22 @@ def BTagCfg(inputFlags,**kwargs): #load folders needed for IBL result.merge(addFolders(inputFlags,['/Indet/IBLDist'],'INDET_OFL')) - #Should be parameters - JetCollection = ['AntiKt4EMTopo','AntiKt4EMPFlow'] + 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'] + TrainedTaggers = inputFlags.BTagging.run2TaggersList + ['MultiSVbb1','MultiSVbb2'] - result.merge(JetTagCalibCfg(inputFlags, TaggerList = TrainedTaggers)) + result.merge(JetTagCalibCfg(inputFlags, TaggerList = TrainedTaggers, **kwargs)) for jet in JetCollection: taggerList = inputFlags.BTagging.run2TaggersList @@ -200,6 +240,10 @@ def BTagCfg(inputFlags,**kwargs): result.merge(RenameInputContainerCfg("old")) else: extraCont = [] + extraCont.append("xAOD::VertexContainer#PrimaryVertices") + extraCont.append("xAOD::VertexAuxContainer#PrimaryVerticesAux.") + extraCont.append("xAOD::TrackParticleContainer#InDetTrackParticles") + extraCont.append("xAOD::TrackParticleAuxContainer#InDetTrackParticlesAux.") if splitAlg: JFSecVtx = "xAOD::BTagVertexContainer#" AuxJFSecVtx= "xAOD::BTagVertexAuxContainer#" @@ -217,64 +261,74 @@ def BTagCfg(inputFlags,**kwargs): result.merge(BTagRedoESDCfg(inputFlags, jet, extraCont)) if splitAlg: - timestamp = kwargs.get('TimeStamp', None) - if not timestamp: - timestamp = [''] - else: - del kwargs['TimeStamp'] - - postTagDL2JetToTrainingMap={ - 'AntiKt4EMPFlow': [ - #'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', - ] - } - - if jet in postTagDL2JetToTrainingMap: - #Remove DL1 and RNNIP from taggers list, those taggers are run with HighLevelBTagAlg - taggerList.remove('RNNIP') - taggerList.remove('DL1') - - #Track Association - TrackToJetAssociators = ['BTagTrackToJetAssociator', 'BTagTrackToJetAssociatorBB'] - - kwargs['Release'] = '22' - result.merge(JetParticleAssociationAlgCfg(inputFlags, jet, "InDetTrackParticles", 'BTagTrackToJetAssociator', **kwargs)) - kwargs['Release'] = '21' - #result.merge(JetParticleAssociationAlgCfg(inputFlags, jet, "InDetTrackParticles", 'BTagTrackToJetAssociator', **kwargs)) - result.merge(JetParticleAssociationAlgCfg(inputFlags, jet, "InDetTrackParticles", 'BTagTrackToJetAssociatorBB', **kwargs)) - del kwargs['Release'] + secVertexingAndAssociators = {'JetFitter':'BTagTrackToJetAssociator','SV1':'BTagTrackToJetAssociator', 'MSV':'BTagTrackToJetAssociatorBB'} + result.merge(JetBTaggerSplitAlgsCfg(inputFlags, JetCollection = jet, TaggerList = taggerList, SecVertexingAndAssociators = secVertexingAndAssociators, **kwargs)) + else: + result.merge(JetBTaggerAlgCfg(inputFlags, JetCollection = jet, TaggerList = taggerList, **kwargs)) - #Sec vertex finding - SecVertexingAndAssociators = {'JetFitter':'BTagTrackToJetAssociator','SV1':'BTagTrackToJetAssociator'} - for k, v in SecVertexingAndAssociators.items(): - if v not in TrackToJetAssociators: - raise RuntimeError( v + ' is not configured') - result.merge(JetSecVtxFindingAlgCfg(inputFlags, jet, "InDetTrackParticles", k, v)) + return result - #Sec vertexing - result.merge(JetSecVertexingAlgCfg(inputFlags, jet, "InDetTrackParticles", k, v)) +def JetBTaggerSplitAlgsCfg(inputFlags, JetCollection="", TaggerList=[], SecVertexingAndAssociators = {}, SetupScheme="", **kwargs): - #result.merge(JetSecVertexingAlgCfg(inputFlags, jet, "InDetTrackParticles", 'MSV', 'BTagTrackToJetAssociatorBB')) + result=ComponentAccumulator() + jet = JetCollection - #BTagging - for ts in timestamp: - result.merge(JetBTaggingAlgCfg(inputFlags, JetCollection = jet, TaggerList = taggerList, SVandAssoc = SecVertexingAndAssociators, TimeStamp = ts, **kwargs)) + timestamp = kwargs.get('TimeStamp', None) + if not timestamp: + timestamp = [''] + else: + del kwargs['TimeStamp'] + + postTagDL2JetToTrainingMap={ + 'AntiKt4EMPFlow': [ + #'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', + ] + } + + if jet in postTagDL2JetToTrainingMap: + #Remove DL1 and RNNIP from taggers list, those taggers are run with HighLevelBTagAlg + TaggerList.remove('RNNIP') + TaggerList.remove('DL1') + + #Track Association + TrackToJetAssociators = list(set(SecVertexingAndAssociators.values())) + if kwargs.get('Release', None) == '22': + #JetParticleAssociationAlg not implemented for BTagTrackToJetAssociatorBB in rel 22 + TrackToJetAssociators.remove('BTagTrackToJetAssociatorBB') + + for assoc in TrackToJetAssociators: + result.merge(JetParticleAssociationAlgCfg(inputFlags, jet, "InDetTrackParticles", assoc, **kwargs)) + + del kwargs['Release'] + + #Sec vertex finding + for k, v in SecVertexingAndAssociators.items(): + if v not in TrackToJetAssociators: + print( v + ' is not configured, Sec vertex finding skipped') + del SecVertexingAndAssociators[k] + else: + result.merge(JetSecVtxFindingAlgCfg(inputFlags, jet, "InDetTrackParticles", k, v)) + #Sec vertexing + result.merge(JetSecVertexingAlgCfg(inputFlags, jet, "InDetTrackParticles", k, v)) - if jet in postTagDL2JetToTrainingMap: - #Track Augmenter - result.merge(BTagTrackAugmenterAlgCfg(inputFlags)) + #result.merge(JetSecVertexingAlgCfg(inputFlags, jet, "InDetTrackParticles", 'MSV', 'BTagTrackToJetAssociatorBB')) - for ts in timestamp: - #HighLevel taggers can not be run with time stamped containers - if ts == "": - result.merge(RunHighLevelTaggersCfg(inputFlags, jet, 'BTagTrackToJetAssociator', postTagDL2JetToTrainingMap[jet], ts)) + #BTagging + for ts in timestamp: + result.merge(JetBTaggingAlgCfg(inputFlags, JetCollection = jet, TaggerList = TaggerList, SVandAssoc = SecVertexingAndAssociators, TimeStamp = ts, **kwargs)) - else: - result.merge(JetBTaggerAlgCfg(inputFlags, JetCollection = jet, TaggerList = taggerList, **kwargs)) + if jet in postTagDL2JetToTrainingMap: + #Track Augmenter + result.merge(BTagTrackAugmenterAlgCfg(inputFlags)) + + for ts in timestamp: + #HighLevel taggers can not be run with time stamped containers + if ts == "": + result.merge(RunHighLevelTaggersCfg(inputFlags, jet, 'BTagTrackToJetAssociator', postTagDL2JetToTrainingMap[jet], ts)) return result @@ -292,12 +346,41 @@ def RunHighLevelTaggersCfg(inputFlags, JetCollection, Associator, TrainingMaps, HLBTagSeq = AthSequencer(sequenceName, Sequential = True) result.addSequence(HLBTagSeq) - result.merge(BTagHighLevelAugmenterAlgCfg(inputFlags, sequenceName, BTagCollection = BTagCollection, Associator = Associator, **kwargs) ) + result.merge(BTagHighLevelAugmenterAlgCfg(inputFlags, sequenceName, JetCollection = JetCollection, BTagCollection = BTagCollection, Associator = Associator) ) for dl2 in TrainingMaps: result.merge(HighLevelBTagAlgCfg(inputFlags, sequenceName, BTagCollection, dl2) ) return result +def BTagHLTaggersCfg(inputFlags, JetCollection = []): + acc = ComponentAccumulator() + + # Nothing written out + from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg + acc.merge(OutputStreamCfg(cfgFlags,"ESD", ItemList=[])) + + DeprecatedHLTaggers = ['rnnip', 'DL1'] + postTagDL2JetToTrainingMap={ + 'AntiKt4EMPFlow': [ + #'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', + ] + } + for jet in JetCollection: + if jet in postTagDL2JetToTrainingMap: + for tagger in DeprecatedHLTaggers: + acc.merge(RenameHLTaggerCfg(jet, tagger, '_old')) + #Track Augmenter + acc.merge(BTagTrackAugmenterAlgCfg(cfgFlags)) + + #HighLevel taggers can not be run with time stamped containers + acc.merge(RunHighLevelTaggersCfg(cfgFlags, jet, 'BTagTrackToJetAssociator', postTagDL2JetToTrainingMap[jet], "")) + + return acc + def str2bool(v): if v.lower() in ('yes', 'true', 't', 'y', '1'): return True @@ -315,6 +398,7 @@ if __name__=="__main__": parser.add_argument("-f", "--filesIn", default = inputESD, type=str, help="Comma-separated list of input files") parser.add_argument("-t", "--nThreads", default=1, type=int, help="The number of concurrent threads to run. 0 uses serial Athena.") parser.add_argument("-r", "--release", default="22", type=str, help="Release number to test different scenarii.") + parser.add_argument("-l", "--highlevel", type=str2bool, default=False, help="Run only high level taggers.") parser.add_argument('-s', '--splitAlg', type=str2bool, default=False, help="Split JetBTaggerAlg.") args = parser.parse_args() @@ -346,15 +430,21 @@ if __name__=="__main__": # Prevent the flags from being modified cfgFlags.lock() - from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg - acc.merge(PoolReadCfg(cfgFlags)) + acc.merge(PrepareStandAloneBTagCfg(cfgFlags)) - kwargs = {} - if args.release == "21.2": - kwargs["TimeStamp"] = ['201810','201903'] - kwargs["SplitAlg"] = args.splitAlg + JetCollection = ['AntiKt4EMTopo', 'AntiKt4EMPFlow'] + + if args.highlevel: + acc.merge(BTagHLTaggersCfg(cfgFlags, JetCollection = JetCollection)) + else: + kwargs = {} + kwargs['Release'] = args.release + if args.release == "21.2": + kwargs["TimeStamp"] = ['201810','201903'] + kwargs['Release'] = '21' + kwargs["SplitAlg"] = args.splitAlg - acc.merge(BTagCfg(cfgFlags, **kwargs)) + acc.merge(BTagCfg(cfgFlags, JetCollection = JetCollection, **kwargs)) acc.setAppProperty("EvtMax",-1) diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagSecVertexingConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagSecVertexingConfig.py index 55f5e6d4e707285347795d384061c91e17e18066..d5a24bec5980b51ee95dad940462d48666296814 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagSecVertexingConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagSecVertexingConfig.py @@ -1,8 +1,7 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from BTagging.NewJetFitterVxFinderConfig import NewJetFitterVxFinderCfg from BTagging.InDetVKalVxInJetToolConfig import InDetVKalVxInJetToolCfg from JetTagTools.JetFitterVariablesFactoryConfig import JetFitterVariablesFactoryCfg @@ -56,8 +55,8 @@ def BTagSecVtxToolCfg(flags, Name, JetCollection, TimeStamp = "", **options): options.setdefault('SecVtxFinderList', secVtxFinderList) options.setdefault('SecVtxFinderTrackNameList', secVtxFinderTrackNameList) options.setdefault('SecVtxFinderxAODBaseNameList', secVtxFinderxAODBaseNameList) - options.setdefault('PrimaryVertexName', BTaggingFlags.PrimaryVertexCollectionName) - options.setdefault('vxPrimaryCollectionName', BTaggingFlags.PrimaryVertexCollectionName) + options.setdefault('PrimaryVertexName', flags.BTagging.PrimaryVertexCollectionName) + options.setdefault('vxPrimaryCollectionName', flags.BTagging.PrimaryVertexCollectionName) options['BTagJFVtxCollectionName'] = btagname + OutputFilesJFVxname options['BTagSVCollectionName'] = btagname + OutputFilesSVname options.setdefault('JetFitterVariableFactory', jetFitterVF) diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagToolConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagToolConfig.py index dcdc51780c0b6cbcf2c89af6666cbd20457e1cc9..91c0011f6cac26dae266288e5a6c7ec2b8607589 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagToolConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagToolConfig.py @@ -3,7 +3,6 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory Analysis__BTagTool=CompFactory.Analysis.BTagTool -from BTagging.BTaggingFlags import BTaggingFlags def BTagToolCfg(ConfigFlags, TaggerList, useBTagFlagsDefaults = True): """Adds a new myBTagTool instance and registers it. @@ -84,10 +83,9 @@ def BTagToolCfg(ConfigFlags, TaggerList, useBTagFlagsDefaults = True): options = {} if useBTagFlagsDefaults: - defaults = { 'Runmodus' : BTaggingFlags.Runmodus, - 'PrimaryVertexName' : BTaggingFlags.PrimaryVertexCollectionName, - 'BaselineTagger' : BTaggingFlags.BaselineTagger, - 'vxPrimaryCollectionName' : BTaggingFlags.PrimaryVertexCollectionName, + defaults = { 'Runmodus' : ConfigFlags.BTagging.RunModus, + 'PrimaryVertexName' : ConfigFlags.BTagging.PrimaryVertexCollectionName, + 'vxPrimaryCollectionName' : ConfigFlags.BTagging.PrimaryVertexCollectionName, 'TagToolList' : tagToolList, } for option in defaults: diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagTrackAssociationConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagTrackAssociationConfig.py index 365be08f78b6f88b30abf93c7c3a86eeec85af1c..01be1345c61ee259028cc44dacaae702300ac76e 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagTrackAssociationConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTagTrackAssociationConfig.py @@ -1,10 +1,9 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from BTagging.BTagTrackToJetAssociatorConfig import BTagTrackToJetAssociatorCfg from BTagging.BTagMuonToJetAssociatorConfig import BTagMuonToJetAssociatorCfg -from BTagging.BTaggingFlags import BTaggingFlags Analysis__BTagTrackAssociation=CompFactory.Analysis.BTagTrackAssociation @@ -13,6 +12,7 @@ def BTagTrackAssociationCfg(flags, name, JetCollection, TaggerList, options={}): acc=ComponentAccumulator() # Setup associators + doStandardAssoc = True BTagTrackToJetAssociatorList = [] BTagTrackToJetAssocNameList = [] if 'IP2D' in TaggerList or 'IP3D' in TaggerList: @@ -49,7 +49,7 @@ def BTagTrackAssociationCfg(flags, name, JetCollection, TaggerList, options={}): options.setdefault('MuonToJetAssociatorList', MuonToJetAssociatorList) options.setdefault('MuonToJetAssocNameList', MuonToJetAssocNameList) options.setdefault('MuonContainerNameList', MuonContainerNameList) - options.setdefault('BTagAssociation', BTaggingFlags.doStandardAssoc) + options.setdefault('BTagAssociation', doStandardAssoc) options['name'] = name tool = Analysis__BTagTrackAssociation(**options) diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTaggingConfigFlags.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTaggingConfigFlags.py index d7ccc2101d3a2a4aa4685d6f9d60fb63fd50de8c..ffec4236d933177b27dff634b3b156979fc13e9a 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTaggingConfigFlags.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/BTaggingConfigFlags.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AthConfigFlags import AthConfigFlags @@ -8,7 +8,15 @@ def createBTaggingConfigFlags(): btagcf.addFlag("BTagging.run2TaggersList", ['IP2D','IP3D','SV1','SoftMu','JetFitterNN','MV2c10','MV2c10mu','MV2c10rnn','MV2c100','MV2cl100','RNNIP','DL1','DL1mu','DL1rnn']) # Disable JetVertexCharge ATLASRECTS-4506 btagcf.addFlag("BTagging.RunModus", "analysis") # reference mode used in FlavourTagPerformanceFramework (RetagFragment.py) + btagcf.addFlag("BTagging.ReferenceType", "ALL") # reference type for IP and SV taggers (B, UDSG, ALL) btagcf.addFlag("BTagging.JetPtMinRef", 15e3) # in MeV for uncalibrated pt + btagcf.addFlag("BTagging.PrimaryVertexCollectionName", "PrimaryVertices") + btagcf.addFlag("BTagging.Grades", [ "0HitIn0HitNInExp2","0HitIn0HitNInExpIn","0HitIn0HitNInExpNIn","0HitIn0HitNIn", + "0HitInExp", "0HitIn", + "0HitNInExp", "0HitNIn", + "InANDNInShared", "PixShared", "SctShared", + "InANDNInSplit", "PixSplit", + "Good"]) #Do we really need this in AthConfigFlags? #Comments in BTaggingConfiguration.py btagcf.addFlag("BTagging.OutputFiles.Prefix", "BTagging_") diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetBTaggerAlgConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetBTaggerAlgConfig.py index 7149c93345f8e321586f9c81a18794cfd8187cf6..11aa16f2a8d7ff0b771ef055ff107604cc4c4cd1 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetBTaggerAlgConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetBTaggerAlgConfig.py @@ -14,6 +14,8 @@ def JetBTaggerAlgCfg(ConfigFlags, JetCollection="", TaggerList=[], SetupScheme=" 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 ))) diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetSecVertexingAlgConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetSecVertexingAlgConfig.py index f53a0f5a2b1371ff626dd3568ff475c9980b152c..0b4f8e68aba47fd47038f4c2490321102e2c165f 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetSecVertexingAlgConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetSecVertexingAlgConfig.py @@ -2,7 +2,6 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from BTagging.MSVVariablesFactoryConfig import MSVVariablesFactoryCfg Analysis__JetSecVertexingAlg=CompFactory.Analysis.JetSecVertexingAlg @@ -24,14 +23,16 @@ def JetSecVertexingAlgCfg(ConfigFlags, JetCollection, ParticleCollection="", SVF JetSVLink = 'JFVtx' if SVFinder == 'SV1': JetSVLink = 'SecVtx' + if SVFinder == 'MSV': + JetSVLink = 'MSecVtx' # Maybe no used varFactory = acc.popToolsAndMerge(MSVVariablesFactoryCfg("MSVVarFactory")) btagname = ConfigFlags.BTagging.OutputFiles.Prefix + jetcol options = {} options.setdefault('SecVtxFinderxAODBaseName', SVFinder) - options.setdefault('PrimaryVertexName', BTaggingFlags.PrimaryVertexCollectionName) - options.setdefault('vxPrimaryCollectionName', BTaggingFlags.PrimaryVertexCollectionName) + options.setdefault('PrimaryVertexName', ConfigFlags.BTagging.PrimaryVertexCollectionName) + options.setdefault('vxPrimaryCollectionName', ConfigFlags.BTagging.PrimaryVertexCollectionName) options['JetCollectionName'] = jetcol.replace('Track', 'PV0Track') + 'Jets' options['BTagVxSecVertexInfoName'] = SVFinder + 'VxSecVertexInfo_' + JetCollection options['TrackToJetAssociatorName'] = options['JetCollectionName'] + '.' + Associator diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetSecVtxFindingAlgConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetSecVtxFindingAlgConfig.py index e01ff70a90776484864f47a96226fc29162908f0..b6521171463ab3dc527d5be04a59f4d874696dc3 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetSecVtxFindingAlgConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetSecVtxFindingAlgConfig.py @@ -2,7 +2,6 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from BTagging.NewJetFitterVxFinderConfig import NewJetFitterVxFinderCfg from BTagging.InDetVKalVxInJetToolConfig import InDetVKalVxInJetToolCfg @@ -32,8 +31,8 @@ def JetSecVtxFindingAlgCfg(ConfigFlags, JetCollection, ParticleCollection="", SV options = {} options.setdefault('SecVtxFinder', secVtxFinder) - options.setdefault('PrimaryVertexName', BTaggingFlags.PrimaryVertexCollectionName) - options.setdefault('vxPrimaryCollectionName', BTaggingFlags.PrimaryVertexCollectionName) + options.setdefault('PrimaryVertexName', ConfigFlags.BTagging.PrimaryVertexCollectionName) + options.setdefault('vxPrimaryCollectionName', ConfigFlags.BTagging.PrimaryVertexCollectionName) options['JetCollectionName'] = jetcol.replace('Track', 'PV0Track') + 'Jets' options['TrackToJetAssociatorName'] = options['JetCollectionName'] + '.' + Associator options['BTagVxSecVertexInfoName'] = SVFinder + 'VxSecVertexInfo_' + JetCollection diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/NewJetFitterVxFinderConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/NewJetFitterVxFinderConfig.py index 5f07c8bb4e7592d269bd9deac0c06e008831825e..b0c4b4d96d1f962a03de1bbd124922bbb023d2fe 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/NewJetFitterVxFinderConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/NewJetFitterVxFinderConfig.py @@ -1,8 +1,7 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from BTagging.InDetJetFitterUtilsConfig import InDetJetFitterUtilsCfg from BTagging.JetFitterSequentialVertexFitterConfig import JetFitterSequentialVertexFitterCfg from BTagging.VxInternalEdmFactoryConfig import VxInternalEdmFactoryCfg @@ -41,7 +40,7 @@ def NewJetFitterVxFinderCfg(flags, name = 'JFVxFinder', suffix = "", useBTagFlag jetFitterExtrapolator = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags, 'JFExtrapolator'+suffix)) improvedJetFitterInitializationHelper = acc.popToolsAndMerge(ImprovedJetFitterInitializationHelperCfg('ImprovedJFInitHelper'+suffix)) vertexEdmFactory = acc.popToolsAndMerge(VxInternalEdmFactoryCfg('VxInternalEdmFactory'+suffix)) - defaults = { 'VxPrimaryContainer' : BTaggingFlags.PrimaryVertexCollectionName, + defaults = { 'VxPrimaryContainer' : flags.BTagging.PrimaryVertexCollectionName, 'MaxNumDeleteIterations' : 30, 'VertexProbCut' : 0.001, 'MaxClusteringIterations' : 30, diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/BTagHighLevelAugmenterAlg.cxx b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/BTagHighLevelAugmenterAlg.cxx index 10be070149b4bbd728b5e49897943beec0a889de..bfa4efa4afdb754551bbcddfa9cfd306d359a1b0 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/BTagHighLevelAugmenterAlg.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/BTagHighLevelAugmenterAlg.cxx @@ -29,6 +29,7 @@ namespace Analysis { ATH_MSG_DEBUG( "Inizializing containers:" ); ATH_MSG_DEBUG( " ** " << m_BTagCollectionName ); + ATH_CHECK( m_JetCollectionName.initialize() ); ATH_CHECK( m_BTagCollectionName.initialize() ); ATH_CHECK( m_bTagJetDecorLinkName.initialize() ); @@ -119,7 +120,16 @@ namespace Analysis { StatusCode BTagHighLevelAugmenterAlg::execute() { ATH_MSG_DEBUG( "Executing " << name() << "... " ); - SG::ReadHandle< xAOD::BTaggingContainer > h_bTagContainer( m_BTagCollectionName); + EventContext ctx = Gaudi::Hive::currentContext(); + + //retrieve the Jet container + SG::ReadHandle<xAOD::JetContainer> h_JetCollectionName (m_JetCollectionName, ctx); + if (!h_JetCollectionName.isValid()) { + ATH_MSG_ERROR( " cannot retrieve jet container with key " << m_JetCollectionName.key() ); + return StatusCode::FAILURE; + } + + SG::ReadHandle< xAOD::BTaggingContainer > h_bTagContainer( m_BTagCollectionName, ctx); CHECK( h_bTagContainer.isValid() ); const xAOD::BTaggingContainer* btags = h_bTagContainer.get(); ATH_MSG_DEBUG( "Retrieved " << btags->size() << " input btagging..." ); diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/JetBTaggerAlg.cxx b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/JetBTaggerAlg.cxx index dbb0b874d6f4d7e17c0fd5004286800c9df4e862..6ac9c34fa9f6f1dca0490eb5884006790c646954 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/JetBTaggerAlg.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/JetBTaggerAlg.cxx @@ -51,6 +51,8 @@ namespace Analysis { ATH_CHECK( m_BTaggingCollectionName.initialize() ); m_jetBTaggingLinkName = m_JetCollectionName.key() + m_BTagLink; ATH_CHECK( m_jetBTaggingLinkName.initialize() ); + m_bTagJetDecorLinkName = m_BTaggingCollectionName.key() + ".jetLink"; + ATH_CHECK( m_bTagJetDecorLinkName.initialize() ); /// retrieve the main BTagTool if ( m_bTagTool.retrieve().isFailure() ) { @@ -108,6 +110,8 @@ namespace Analysis { //Decor Jet with element link to the BTagging SG::WriteDecorHandle<xAOD::JetContainer,ElementLink< xAOD::BTaggingContainer > > h_jetBTaggingLinkName(m_jetBTaggingLinkName, ctx); + //Decor BTagging with element link to the Jet + SG::WriteDecorHandle<xAOD::BTaggingContainer, ElementLink< xAOD::JetContainer > > h_bTagJetLinkName(m_bTagJetDecorLinkName, ctx); //Create a xAOD::BTaggingContainer in any case (must be done) std::string bTaggingContName = m_BTaggingCollectionName.key(); @@ -171,13 +175,16 @@ namespace Analysis { ATH_MSG_WARNING("#BTAG# Failed in taggers call"); } - //Create the element link from the jet to the btagging + //Create the element link from the jet to the btagging and reverse link for (size_t jetIndex=0; jetIndex < h_JetCollectionName->size() ; ++jetIndex) { const xAOD::Jet * jetToTag = h_JetCollectionName->at(jetIndex); xAOD::BTagging * itBTag = h_BTaggingCollectionName->at(jetIndex); ElementLink< xAOD::BTaggingContainer> linkBTagger; linkBTagger.toContainedElement(*h_BTaggingCollectionName.ptr(), itBTag); h_jetBTaggingLinkName(*jetToTag) = linkBTagger; + ElementLink< xAOD::JetContainer> linkJet; + linkJet.toContainedElement(*h_JetCollectionName.ptr(), jetToTag); + h_bTagJetLinkName(*itBTag) = linkJet; } return StatusCode::SUCCESS; diff --git a/PhysicsAnalysis/JetTagging/JetTagTools/python/DL1TagConfig.py b/PhysicsAnalysis/JetTagging/JetTagTools/python/DL1TagConfig.py index 0c6159329151e4a3ce4bbc783ce0f34f88d2d809..effd38ac65c64c295fbb0b3bfb9e972313aed717 100644 --- a/PhysicsAnalysis/JetTagging/JetTagTools/python/DL1TagConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagTools/python/DL1TagConfig.py @@ -1,8 +1,7 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags # import the DL1Tag configurable Analysis__DL1Tag=CompFactory.Analysis.DL1Tag @@ -26,13 +25,16 @@ def DL1TagCfg(flags, name = 'DL1', scheme = '', useBTagFlagsDefaults = True, **o acc = ComponentAccumulator() options['name'] = name + 'Tag' basename = name + DL1LocalNNConfig = '' + ForceDL1CalibrationAlias = True + DL1CalibAlias = 'AntiKt4EMTopo' options['xAODBaseName'] = basename - options['LocalNNConfigurationFile'] = BTaggingFlags.DL1LocalNNConfig + options['LocalNNConfigurationFile'] = DL1LocalNNConfig if useBTagFlagsDefaults: defaults = { 'Runmodus' : flags.BTagging.RunModus, - 'forceDL1CalibrationAlias' : BTaggingFlags.ForceDL1CalibrationAlias, - 'DL1CalibAlias' : BTaggingFlags.DL1CalibAlias, + 'forceDL1CalibrationAlias' : ForceDL1CalibrationAlias, + 'DL1CalibAlias' : DL1CalibAlias, 'calibration_directory' : basename, } for option in defaults: diff --git a/PhysicsAnalysis/JetTagging/JetTagTools/python/IP2DTagConfig.py b/PhysicsAnalysis/JetTagging/JetTagTools/python/IP2DTagConfig.py index 5631d0595fdf4a00829aba48c5bc537e962b15f1..3aca626d04198369598cd64656dbede276facf04 100644 --- a/PhysicsAnalysis/JetTagging/JetTagTools/python/IP2DTagConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagTools/python/IP2DTagConfig.py @@ -2,7 +2,6 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from JetTagTools.BTagTrackToVertexIPEstimatorConfig import BTagTrackToVertexIPEstimatorCfg from JetTagTools.SVForIPToolConfig import SVForIPToolCfg from JetTagTools.IPDetailedTrackGradeFactoryConfig import IPDetailedTrackGradeFactoryCfg @@ -18,7 +17,7 @@ def IP2DTagCfg( flags, name = 'IP2DTag', scheme = '', useBTagFlagsDefaults = Tru The following options have BTaggingFlags defaults: Runmodus default: BTagging.RunModus - referenceType default: BTaggingFlags.ReferenceType + referenceType default: BTagging.ReferenceType impactParameterView default: "2D" trackGradePartitions default: [ "Good", "BlaShared", "PixShared", "SctShared", "0HitBLayer" ] RejectBadTracks default: False @@ -37,12 +36,6 @@ def IP2DTagCfg( flags, name = 'IP2DTag', scheme = '', useBTagFlagsDefaults = Tru options['trackAssociationName'] = 'BTagTrackToJetAssociator' if (scheme == ""): if useBTagFlagsDefaults: - grades= [ "0HitIn0HitNInExp2","0HitIn0HitNInExpIn","0HitIn0HitNInExpNIn","0HitIn0HitNIn", - "0HitInExp", "0HitIn", - "0HitNInExp", "0HitNIn", - "InANDNInShared", "PixShared", "SctShared", - "InANDNInSplit", "PixSplit", - "Good"] trackToVertexIPEstimator = acc.popToolsAndMerge(BTagTrackToVertexIPEstimatorCfg(flags, 'TrkToVxIPEstimator')) svForIPTool = acc.popToolsAndMerge(SVForIPToolCfg('SVForIPTool')) trackGradeFactory = acc.popToolsAndMerge(IPDetailedTrackGradeFactoryCfg('IP2DDetailedTrackGradeFactory')) @@ -50,10 +43,10 @@ def IP2DTagCfg( flags, name = 'IP2DTag', scheme = '', useBTagFlagsDefaults = Tru likelihood = acc.popToolsAndMerge(NewLikelihoodToolCfg(flags, 'IP2DNewLikelihoodTool', 'IP2D')) defaults = { 'Runmodus' : flags.BTagging.RunModus, - 'referenceType' : BTaggingFlags.ReferenceType, + 'referenceType' : flags.BTagging.ReferenceType, 'jetPtMinRef' : flags.BTagging.JetPtMinRef, 'impactParameterView' : '2D', - 'trackGradePartitions' : grades, + 'trackGradePartitions' : flags.BTagging.Grades, 'RejectBadTracks' : True, 'jetCollectionList' : [], #used only in reference mode 'unbiasIPEstimation' : False, diff --git a/PhysicsAnalysis/JetTagging/JetTagTools/python/IP3DTagConfig.py b/PhysicsAnalysis/JetTagging/JetTagTools/python/IP3DTagConfig.py index fd7ffa95ef3c1235ead466c468ad58a54aa0e654..a803b72233eb3a04cafdb38c593ec659d15410e6 100644 --- a/PhysicsAnalysis/JetTagging/JetTagTools/python/IP3DTagConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagTools/python/IP3DTagConfig.py @@ -2,7 +2,6 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from JetTagTools.BTagTrackToVertexIPEstimatorConfig import BTagTrackToVertexIPEstimatorCfg from JetTagTools.SVForIPToolConfig import SVForIPToolCfg from JetTagTools.IPDetailedTrackGradeFactoryConfig import IPDetailedTrackGradeFactoryCfg @@ -20,7 +19,7 @@ def IP3DTagCfg( flags, name = 'IP3DTag', scheme = '', useBTagFlagsDefaults = Tru The following options have BTaggingFlags defaults: Runmodus default: BTagging.RunModus - referenceType default: BTaggingFlags.ReferenceType + referenceType default: BTagging.ReferenceType impactParameterView default: "3D" trackGradePartitions default: [ "Good", "BlaShared", "PixShared", "SctShared", "0HitBLayer" ] RejectBadTracks default: False @@ -40,12 +39,6 @@ def IP3DTagCfg( flags, name = 'IP3DTag', scheme = '', useBTagFlagsDefaults = Tru if (scheme == ""): if useBTagFlagsDefaults: - grades= [ "0HitIn0HitNInExp2","0HitIn0HitNInExpIn","0HitIn0HitNInExpNIn","0HitIn0HitNIn", - "0HitInExp", "0HitIn", - "0HitNInExp", "0HitNIn", - "InANDNInShared", "PixShared", "SctShared", - "InANDNInSplit", "PixSplit", - "Good"] trackToVertexIPEstimator = acc.popToolsAndMerge(BTagTrackToVertexIPEstimatorCfg(flags, 'TrkToVxIPEstimator')) svForIPTool = acc.popToolsAndMerge(SVForIPToolCfg('SVForIPTool')) trackGradeFactory = acc.popToolsAndMerge(IPDetailedTrackGradeFactoryCfg('IP3DDetailedTrackGradeFactory')) @@ -55,10 +48,10 @@ def IP3DTagCfg( flags, name = 'IP3DTag', scheme = '', useBTagFlagsDefaults = Tru trackVertexAssociationTool = acc.popToolsAndMerge(SpecialTrackAssociatorCfg('SpecialTrackAssociator')) defaults = { 'Runmodus' : flags.BTagging.RunModus, - 'referenceType' : BTaggingFlags.ReferenceType, + 'referenceType' : flags.BTagging.ReferenceType, 'jetPtMinRef' : flags.BTagging.JetPtMinRef, 'impactParameterView' : '3D', - 'trackGradePartitions' : grades, + 'trackGradePartitions' : flags.BTagging.Grades, 'RejectBadTracks' : True, 'jetCollectionList' : [], #used only in reference mode 'unbiasIPEstimation' : False, diff --git a/PhysicsAnalysis/JetTagging/JetTagTools/python/JetFitterNNToolConfig.py b/PhysicsAnalysis/JetTagging/JetTagTools/python/JetFitterNNToolConfig.py index 359d9f46fab626091bd17c3337838445cbc86d86..30c2068e7849a4427415a1191ca1b295bbcd8985 100644 --- a/PhysicsAnalysis/JetTagging/JetTagTools/python/JetFitterNNToolConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagTools/python/JetFitterNNToolConfig.py @@ -1,8 +1,7 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from JetTagTools.NeuralNetworkToHistoToolConfig import NeuralNetworkToHistoToolCfg # import the JetFitterNNTool configurable @@ -24,7 +23,11 @@ def JetFitterNNToolCfg( name = 'JetFitterNNTool', CombinedIPNN = False, useBTagF output: The actual tool.""" acc = ComponentAccumulator() options['name'] = name - if not BTaggingFlags.RunJetFitterNNTool: + # you can force the NN tool off with this flag (avoids loading + # old jetfitter nns which sometimes crash + RunJetFitterNNTool = True + + if not RunJetFitterNNTool: raise ValueError("This case is not implemented because always True during Run2. Contact BTagging software team.") if useBTagFlagsDefaults: if not CombinedIPNN: diff --git a/PhysicsAnalysis/JetTagging/JetTagTools/python/JetFitterTagConfig.py b/PhysicsAnalysis/JetTagging/JetTagTools/python/JetFitterTagConfig.py index 07378024828c552db249190c589de27c2e21eeb6..0305c07890064659a68d7a0d2ba569c3420afdcc 100644 --- a/PhysicsAnalysis/JetTagging/JetTagTools/python/JetFitterTagConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagTools/python/JetFitterTagConfig.py @@ -1,8 +1,7 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from JetTagTools.JetFitterNtupleWriterNNConfig import JetFitterNtupleWriterNNCfg from JetTagTools.JetFitterNNToolConfig import JetFitterNNToolCfg @@ -38,7 +37,7 @@ def JetFitterTagCfg(flags, name = 'JetFitterTagNN', scheme = '', CombinedIPNN = jetFitterNtupleWriterNN = acc.popToolsAndMerge(JetFitterNtupleWriterNNCfg('JetFitterNtupleWriterNN')) jetfitterClassifier = acc.popToolsAndMerge(JetFitterNNToolCfg('JetFitterNNTool')) defaults = { 'Runmodus' : flags.BTagging.RunModus, - 'jetCollectionList' : BTaggingFlags.Jets, + 'jetCollectionList' : [], #used only in reference mode 'SecVxFinderName' : 'JetFitter', 'useForcedCalibration' : False, 'ipinfoTaggerName' : "", @@ -47,7 +46,7 @@ def JetFitterTagCfg(flags, name = 'JetFitterTagNN', scheme = '', CombinedIPNN = } else: defaults = { 'Runmodus' : flags.BTagging.RunModus, - 'jetCollectionList' : BTaggingFlags.Jets, + 'jetCollectionList' : [], #used only in reference mode 'SecVxFinderName' : 'JetFitter', 'useForcedCalibration' : False, 'ipinfoTaggerName' : 'IP3D', @@ -56,7 +55,7 @@ def JetFitterTagCfg(flags, name = 'JetFitterTagNN', scheme = '', CombinedIPNN = # JetFitterFlip should be a flip version of JetFitter created in setupSecVtxTool if useBTagFlagsDefaults: defaults = { 'Runmodus' : flags.BTagging.RunModus, - 'jetCollectionList' : BTaggingFlags.Jets, + 'jetCollectionList' : [], #used only in reference mode 'SecVxFinderName' : 'JetFitterFlip', 'useForcedCalibration' : False, 'ipinfoTaggerName' : 'IP3D', diff --git a/PhysicsAnalysis/JetTagging/JetTagTools/python/MV2TagConfig.py b/PhysicsAnalysis/JetTagging/JetTagTools/python/MV2TagConfig.py index 1c0adad002318697175a2c6b3bd7f222aae96055..2d6d4c408ae5bc2030ead061c7e89f3e347bd573 100644 --- a/PhysicsAnalysis/JetTagging/JetTagTools/python/MV2TagConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagTools/python/MV2TagConfig.py @@ -1,8 +1,7 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from BTagging.MV2defaultValues import default_values from BTagging.MV2defaultValues import MVTM_varNames @@ -27,14 +26,16 @@ def MV2TagCfg( flags, name = 'MV2c10', scheme = '', useBTagFlagsDefaults = True, acc = ComponentAccumulator() options['name'] = name + 'Tag' basename = name + ForceMV2CalibrationAlias = False + MV2CalibAlias = 'AntiKt4EMTopo' options['xAODBaseName'] = basename if useBTagFlagsDefaults: defaults = { 'Runmodus' : flags.BTagging.RunModus, 'taggerName' : basename, 'taggerNameBase' : basename, - 'forceMV2CalibrationAlias' : BTaggingFlags.ForceMV2CalibrationAlias, - 'MV2CalibAlias' : BTaggingFlags.MV2CalibAlias, + 'forceMV2CalibrationAlias' : ForceMV2CalibrationAlias, + 'MV2CalibAlias' : MV2CalibAlias, 'defaultvals' : default_values, 'MVTMvariableNames' : MVTM_varNames, } diff --git a/PhysicsAnalysis/JetTagging/JetTagTools/python/RNNIPTagConfig.py b/PhysicsAnalysis/JetTagging/JetTagTools/python/RNNIPTagConfig.py index 1c3ed2a381006fbf3931c5538f0e9dcaca76f9be..50d96b45e61783a80277bf7f0880a634d5d0e7f2 100644 --- a/PhysicsAnalysis/JetTagging/JetTagTools/python/RNNIPTagConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagTools/python/RNNIPTagConfig.py @@ -1,8 +1,7 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from JetTagTools.BTagTrackToVertexIPEstimatorConfig import BTagTrackToVertexIPEstimatorCfg from JetTagTools.SVForIPToolConfig import SVForIPToolCfg from JetTagTools.IPDetailedTrackGradeFactoryConfig import IPDetailedTrackGradeFactoryCfg @@ -28,6 +27,8 @@ def RNNIPTagCfg( flags, name = 'RNNIP', scheme = '', calibration=None, useBTagFl acc = ComponentAccumulator() options['name'] = name basename = 'RNNIP' + RNNIPConfig = {'rnnip':''} + WriteRNNInputs = False options['xAODBaseName'] = basename options['trackAssociationName'] = 'BTagTrackToJetAssociator' cal_dir = calibration or basename @@ -36,25 +37,19 @@ def RNNIPTagCfg( flags, name = 'RNNIP', scheme = '', calibration=None, useBTagFl is_flipped=True if useBTagFlagsDefaults: - grades= [ "0HitIn0HitNInExp2","0HitIn0HitNInExpIn","0HitIn0HitNInExpNIn","0HitIn0HitNIn", - "0HitInExp", "0HitIn", - "0HitNInExp", "0HitNIn", - "InANDNInShared", "PixShared", "SctShared", - "InANDNInSplit", "PixSplit", - "Good"] trackToVertexIPEstimator = acc.popToolsAndMerge(BTagTrackToVertexIPEstimatorCfg(flags, 'TrkToVxIPEstimator')) svForIPTool = acc.popToolsAndMerge(SVForIPToolCfg('SVForIPTool')) trackGradeFactory = acc.popToolsAndMerge(IPDetailedTrackGradeFactoryCfg('RNNIPDetailedTrackGradeFactory')) trackSelectorTool = acc.popToolsAndMerge(IPTrackSelectorCfg(flags, 'RNNIPTrackSelector')) defaults = { - 'trackGradePartitions' : grades , + 'trackGradePartitions' : flags.BTagging.Grades, 'RejectBadTracks' : True, - 'NetworkConfig' : BTaggingFlags.RNNIPConfig, + 'NetworkConfig' : RNNIPConfig, 'unbiasIPEstimation' : False, 'SecVxFinderName' : 'SV1', 'calibration_directory' : cal_dir, - 'writeInputsToBtagObject' : BTaggingFlags.WriteRNNInputs, + 'writeInputsToBtagObject' : WriteRNNInputs, 'trackSelectorTool' : trackSelectorTool, 'SVForIPTool' : svForIPTool, 'trackGradeFactory' : trackGradeFactory, diff --git a/PhysicsAnalysis/JetTagging/JetTagTools/python/SV1TagConfig.py b/PhysicsAnalysis/JetTagging/JetTagTools/python/SV1TagConfig.py index 7502ad1ccf3866de9fe3c5c68623082438a42775..19c2bad813f5eb66e38c8d9ab5623dc756ecb822 100644 --- a/PhysicsAnalysis/JetTagging/JetTagTools/python/SV1TagConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagTools/python/SV1TagConfig.py @@ -1,8 +1,7 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from JetTagTools.NewLikelihoodToolConfig import NewLikelihoodToolCfg # import the SVTag configurable @@ -14,7 +13,7 @@ def SV1TagCfg( flags, name = 'SV1Tag', scheme = '', useBTagFlagsDefaults = True, The following options have BTaggingFlags defaults: Runmodus default: BTagging.RunModus - referenceType default: BTaggingFlags.ReferenceType + referenceType default: BTagging.ReferenceType SVAlgType default: "SV1" jetCollectionList default: BTaggingFlags.Jets LikelihoodTool default: None @@ -31,10 +30,10 @@ def SV1TagCfg( flags, name = 'SV1Tag', scheme = '', useBTagFlagsDefaults = True, if useBTagFlagsDefaults: likelihood = acc.popToolsAndMerge(NewLikelihoodToolCfg(flags, 'SV1NewLikelihoodTool', 'SV1')) defaults = { 'Runmodus' : flags.BTagging.RunModus, - 'referenceType' : BTaggingFlags.ReferenceType, + 'referenceType' : flags.BTagging.ReferenceType, 'jetPtMinRef' : flags.BTagging.JetPtMinRef, 'SVAlgType' : 'SV1', - 'jetCollectionList' : BTaggingFlags.Jets, + 'jetCollectionList' : [], #used only in reference mode 'SecVxFinderName' : 'SV1', 'UseCHypo' : True, 'LikelihoodTool' : likelihood } diff --git a/PhysicsAnalysis/JetTagging/JetTagTools/python/SoftMuonTagConfig.py b/PhysicsAnalysis/JetTagging/JetTagTools/python/SoftMuonTagConfig.py index 6c6cd3b9e2371efaa07fa3421a45d82bc01a8c6f..db46da86737beb1f512442def77234011b04918c 100644 --- a/PhysicsAnalysis/JetTagging/JetTagTools/python/SoftMuonTagConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagTools/python/SoftMuonTagConfig.py @@ -1,8 +1,7 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from BTagging.BTaggingFlags import BTaggingFlags from JetTagTools.BTagTrackToVertexIPEstimatorConfig import BTagTrackToVertexIPEstimatorCfg from JetTagTools.NewLikelihoodToolConfig import NewLikelihoodToolCfg from JetTagTools.MuonSelectorToolConfig import MuonSelectorToolCfg @@ -17,7 +16,7 @@ def SoftMuonTagCfg( flags, name = 'SoftMu', useBTagFlagsDefaults = True, **optio Runmodus default: BTagging.RunModus jetCollectionList default: BTaggingFlags.Jets - originalMuCollectionName default: BTaggingFlags.MuonCollectionName + originalMuCollectionName default: BTaggingFlags.MuonCollectionName ('Muons') BTagJetEtamin default: 2.5 (only if BTagging.RunModus == 'reference') MuonQuality default: xAOD::Muon::Medium @@ -25,6 +24,7 @@ def SoftMuonTagCfg( flags, name = 'SoftMu', useBTagFlagsDefaults = True, **optio useBTagFlagsDefaults : Whether to use BTaggingFlags defaults for options that are not specified. **options: Python dictionary with options for the tool. output: The actual tool.""" + muonCollectionName = 'Muons' acc = ComponentAccumulator() if useBTagFlagsDefaults: trackToVertexIPEstimator = acc.popToolsAndMerge(BTagTrackToVertexIPEstimatorCfg(flags, 'TrkToVxIPEstimator')) @@ -32,8 +32,8 @@ def SoftMuonTagCfg( flags, name = 'SoftMu', useBTagFlagsDefaults = True, **optio likelihood = acc.popToolsAndMerge(NewLikelihoodToolCfg(flags, 'SoftMuonTagNewLikelihoodTool', 'SMT')) defaults = { 'Runmodus' : flags.BTagging.RunModus, - 'jetCollectionList' : BTaggingFlags.Jets, - 'originalMuCollectionName' : BTaggingFlags.MuonCollectionName, + 'jetCollectionList' : [], #used only in reference mode + 'originalMuCollectionName' : muonCollectionName, 'MuonQuality' : 2, 'muonSelectorTool' : muonSelectorTool, 'LikelihoodTool' : likelihood,