ATLAS Offline Software
BTagToolConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 
6 def BTagToolCfg(flags, TaggerList, PrimaryVertexCollectionName="", scheme = '', useBTagFlagsDefaults = True):
7  """Adds a new myBTagTool instance and registers it.
8 
9  input: jetcol: The name of the jet collections.
10  ToolSvc: The ToolSvc instance.
11  options: Python dictionary of options to be passed to the BTagTool.
12  (note the options storeSecondaryVerticesInJet is passed to the removal tool instead)
13 
14  The following default options exist:
15 
16  BTagLabelingTool default: None
17  storeSecondaryVerticesInJet default: BTaggingFlags.writeSecondaryVertices
18 
19  output: The btagtool for the desired jet collection."""
20 
22 
23  tagToolList = []
24 
25  if 'IP2D' in TaggerList:
26  from JetTagTools.IP2DTagConfig import IP2DTagCfg
27  ip2dtool = acc.popToolsAndMerge(IP2DTagCfg(flags, 'IP2DTag', scheme))
28  tagToolList.append(ip2dtool)
29 
30  # Setup for Neg/Flip version of IP2(3)D taggers. 'FlipOption' default value is "STANDARD". Set this value only if want to 'flip' the tagger
31  # Naming of the flip options follows ENUMS here: https://gitlab.cern.ch/atlas/athena/-/blob/master/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/FlipTagEnums.cxx
32  if 'IP2DNeg' in TaggerList:
33  from JetTagTools.IP2DTagConfig import IP2DTagCfg
34  ip2dnegtool = acc.popToolsAndMerge(IP2DTagCfg(flags, 'IP2DNegTag' ,scheme,FlipOption='NEGATIVE_IP_ONLY'))
35  tagToolList.append(ip2dnegtool)
36 
37  if 'IP2DFlip' in TaggerList:
38  from JetTagTools.IP2DTagConfig import IP2DTagCfg
39  ip2dfliptool = acc.popToolsAndMerge(IP2DTagCfg(flags, 'IP2DFlipTag' ,scheme,FlipOption='FLIP_SIGN'))
40  tagToolList.append(ip2dfliptool)
41 
42  if 'IP3D' in TaggerList:
43  from JetTagTools.IP3DTagConfig import IP3DTagCfg
44  ip3dtool = acc.popToolsAndMerge(IP3DTagCfg(flags, 'IP3DTag', PrimaryVertexCollectionName, scheme))
45  tagToolList.append(ip3dtool)
46 
47  if 'IP3DNeg' in TaggerList:
48  from JetTagTools.IP3DTagConfig import IP3DTagCfg
49  ip3dnegtool = acc.popToolsAndMerge(IP3DTagCfg(flags, 'IP3DNegTag', PrimaryVertexCollectionName, scheme,FlipOption='NEGATIVE_IP_ONLY'))
50  tagToolList.append(ip3dnegtool)
51 
52  if 'IP3DFlip' in TaggerList:
53  from JetTagTools.IP3DTagConfig import IP3DTagCfg
54  ip3dfliptool = acc.popToolsAndMerge(IP3DTagCfg(flags, 'IP3DFlipTag', PrimaryVertexCollectionName, scheme,FlipOption='FLIP_SIGN'))
55  tagToolList.append(ip3dfliptool)
56 
57  if 'SV1' in TaggerList:
58  from JetTagTools.SV1TagConfig import SV1TagCfg
59  sv1tool = acc.popToolsAndMerge(SV1TagCfg(flags, 'SV1Tag', scheme))
60  tagToolList.append(sv1tool)
61 
62  if 'SV1Flip' in TaggerList:
63  from JetTagTools.SV1TagConfig import SV1TagCfg
64  sv1fliptool = acc.popToolsAndMerge(SV1TagCfg(flags, 'SV1FlipTag', scheme))
65  tagToolList.append(sv1fliptool)
66 
67  if 'MultiSVbb1' in TaggerList:
68  from JetTagTools.MultiSVTagConfig import MultiSVTagCfg
69  multisvbb1tool = acc.popToolsAndMerge(MultiSVTagCfg(flags,'MultiSVbb1Tag','MultiSVbb1', scheme))
70  tagToolList.append(multisvbb1tool)
71 
72  if 'MultiSVbb2' in TaggerList:
73  from JetTagTools.MultiSVTagConfig import MultiSVTagCfg
74  multisvbb2tool = acc.popToolsAndMerge(MultiSVTagCfg(flags, 'MultiSVbb2Tag','MultiSVbb2', scheme))
75  tagToolList.append(multisvbb2tool)
76 
77  # list of taggers that use MultivariateTagManager
78  mvtm_taggers = ['MV2c00','MV2c10','MV2c20','MV2c10mu','MV2m','DL1','DL1mu']
79  mvtm_active_taggers = list(set(mvtm_taggers) & set(TaggerList))
80  if len(mvtm_active_taggers) > 0:
81  from JetTagTools.MultivariateTagManagerConfig import MultivariateTagManagerCfg
82  mvtm = acc.popToolsAndMerge(MultivariateTagManagerCfg(flags, 'mvtm', TaggerList = mvtm_active_taggers, scheme = scheme))
83  tagToolList.append(mvtm)
84 
85  options = {}
86  if useBTagFlagsDefaults:
87  defaults = { 'vxPrimaryCollectionName' : PrimaryVertexCollectionName,
88  'TagToolList' : tagToolList,
89  }
90  for option in defaults:
91  options.setdefault(option, defaults[option])
92  options['name'] = 'btag'
93  btagtool = CompFactory.Analysis.BTagTool(**options)
94  acc.setPrivateTools(btagtool)
95 
96  return acc
SV1TagConfig.SV1TagCfg
def SV1TagCfg(flags, name='SV1Tag', scheme='', useBTagFlagsDefaults=True, **options)
Definition: SV1TagConfig.py:7
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:224
MultiSVTagConfig.MultiSVTagCfg
def MultiSVTagCfg(flags, name='MultiSVbb1Tag', taggerNameBase='MultiSVbb1', scheme='', useBTagFlagsDefaults=True, **options)
Definition: MultiSVTagConfig.py:7
python.BTagToolConfig.BTagToolCfg
def BTagToolCfg(flags, TaggerList, PrimaryVertexCollectionName="", scheme='', useBTagFlagsDefaults=True)
Definition: BTagToolConfig.py:6
IP3DTagConfig.IP3DTagCfg
def IP3DTagCfg(flags, name='IP3DTag', PrimaryVertexCollectionName="", scheme='', useBTagFlagsDefaults=True, FlipOption='STANDARD', **options)
Definition: IP3DTagConfig.py:11
IP2DTagConfig.IP2DTagCfg
def IP2DTagCfg(flags, name='IP2DTag', scheme='', useBTagFlagsDefaults=True, FlipOption='STANDARD', **options)
Definition: IP2DTagConfig.py:11
MultivariateTagManagerConfig.MultivariateTagManagerCfg
def MultivariateTagManagerCfg(flags, name='MultivariateTagManager', TaggerList=['DL1', 'DL1rnn', 'DL1mu', 'MV2c10'], scheme='', useBTagFlagsDefaults=True, **options)
Definition: MultivariateTagManagerConfig.py:7