ATLAS Offline Software
Functions
python.HLT.Bjet.BjetFlavourTaggingConfig Namespace Reference

Functions

def flavourTaggingCfg (flags, inputJets, inputVertex, inputTracks, BTagName, inputMuons="")
 
def fastFlavourTaggingCfg (flags, inputJets, inputVertex, inputTracks, isPFlow=False, fastDipsMinimumPt=None, doXbbtagLargeRJet=False)
 
def OnlineBeamspotIpAugmenterCfg (cfgFlags, tracks, vertices='', trackIpPrefix='simpleIp_')
 

Function Documentation

◆ fastFlavourTaggingCfg()

def python.HLT.Bjet.BjetFlavourTaggingConfig.fastFlavourTaggingCfg (   flags,
  inputJets,
  inputVertex,
  inputTracks,
  isPFlow = False,
  fastDipsMinimumPt = None,
  doXbbtagLargeRJet = False 
)
This function tags jets directly: there is no  b-tagging object

Definition at line 66 of file BjetFlavourTaggingConfig.py.

66 def fastFlavourTaggingCfg( flags, inputJets, inputVertex, inputTracks, isPFlow=False, fastDipsMinimumPt=None, doXbbtagLargeRJet = False):
67  """
68  This function tags jets directly: there is no b-tagging object
69  """
70 
72 
73  ca.merge(JetTagCalibCfg(flags))
74 
75  # first add the track augmentation
76  jet_name = inputJets
77  if isPFlow:
78  ca.merge(
80  flags,
81  TrackCollection=inputTracks,
82  PrimaryVertexCollectionName=inputVertex,
83  )
84  )
85  else:
86  trackIpPrefix='simpleIp_'
87  ca.merge(
89  flags,
90  tracks=inputTracks,
91  vertices=inputVertex,
92  trackIpPrefix=trackIpPrefix,
93  )
94  )
95  if inputVertex:
96  ca.merge(
98  flags,
99  TrackCollection=inputTracks,
100  PrimaryVertexCollectionName=inputVertex,
101  )
102  )
103 
104  # now we associate the tracks to the jet
105 
106  tracksOnJetDecoratorName = "TracksForMinimalJetTag"
107  pass_flag = f'{tracksOnJetDecoratorName}_isValid'
108  ca.merge(
110  flags,
111  JetCollection=jet_name,
112  InputParticleCollection=inputTracks,
113  OutputParticleDecoration=tracksOnJetDecoratorName,
114  MinimumJetPt=fastDipsMinimumPt,
115  MinimumJetPtFlag=pass_flag
116  )
117  )
118 
119  # Now we have to add an algorithm that tags the jets with dips
120  # The input and output remapping is handled via a map in DL2.
121  #
122  # The file above adds fastDIPSnoPV20220211_p*, we'll call them
123  # fastDips_p* on the jet.
124  if isPFlow:
125  if doXbbtagLargeRJet:
126  dl2_configs = [
127  [
128  'BTagging/20230705/gn2xv01/antikt10ufo/network.onnx',
129  {
130  'BTagTrackToJetAssociator': tracksOnJetDecoratorName,
131  }
132  ],
133  ]
134  else:
135  dl2_configs=[
136  [
137  'BTagging/20211216trig/dips/AntiKt4EMPFlow/network.json',
138  {
139  'BTagTrackToJetAssociator': tracksOnJetDecoratorName,
140  }
141  ],
142  [
143  'BTagging/20211215trig/fastDips/antikt4empflow/network.json',
144  {
145  'BTagTrackToJetAssociator': tracksOnJetDecoratorName,
146  },
147  ],
148 
149  [
150  'BTagging/20230331trig/gn1/antikt4empflow/network.onnx',
151  {
152  'BTagTrackToJetAssociator': tracksOnJetDecoratorName,
153  },
154  ],
155  [
156  'BTagging/20240122trig/gn2/antikt4empflow/Small.onnx',
157  {
158  'BTagTrackToJetAssociator': tracksOnJetDecoratorName,
159  **{f'p{x}': f'tlaGN220240122_p{x}' for x in 'cub'},
160  }
161  ],
162  ]
163  else:
164  dl2_configs=[
165  [
166  'BTagging/20220211trig/fastDips/antikt4empflow/network.json',
167  {
168  'BTagTrackToJetAssociator': tracksOnJetDecoratorName,
169  **{f'fastDIPSnoPV20220211_p{x}': f'fastDips_p{x}' for x in 'cub'},
170  'btagIp_': trackIpPrefix,
171  }
172  ],
173  [
174  'BTagging/20230327trig/gn1/antikt4emtopo/network.onnx',
175  {
176  'BTagTrackToJetAssociator': tracksOnJetDecoratorName,
177  **{f'GN120230327_p{x}': f'fastGN120230327_p{x}' for x in 'cub'},
178  'btagIp_': trackIpPrefix,
179  }
180  ],
181  [
182  'BTagging/20231122trig/dipz/antikt4emtopo/network.json',
183  {
184  'BTagTrackToJetAssociator': tracksOnJetDecoratorName,
185  'btagIp_': trackIpPrefix,
186  }
187  ],
188 
189  ]
190  if inputVertex:
191  dl2_configs += [
192  [
193  'BTagging/20230331trig/gn1/antikt4empflow/network.onnx',
194  {
195  'BTagTrackToJetAssociator': tracksOnJetDecoratorName,
196  **{f'GN120230331_p{x}': f'fastGN120230331_p{x}' for x in 'cub'}
197  },
198  ],
199  [
200  'BTagging/20240122trig/gn2/antikt4empflow/Small.onnx',
201  {
202  'BTagTrackToJetAssociator': tracksOnJetDecoratorName,
203  **{f'p{x}': f'fastGN220240122_p{x}' for x in 'cub'},
204  }
205  ],
206 
207  [ 'BTagging/20240216trig/gn2/antikt4emtopo/GNTau.onnx',
208  { 'BTagTrackToJetAssociator': tracksOnJetDecoratorName
209  , 'GN2_ptau' : 'fastGNTau20240216_ptau'
210  , 'GN2_pu' : 'fastGNTau20240216_pu'
211  }
212  ]
213  ]
214 
215  # not all the keys that the NN requests are declaired. This will
216  # cause an algorithm stall if we don't explicetly tell it that it
217  # can ignore some of them.
218  missingKeys = getStaticTrackVars(inputTracks)
219 
220  for nnFile, variableRemapping in dl2_configs:
221  nnAlgo = nnFile.replace('/','_').split('.')
222  nnAlgoKey = nnAlgo[0]
223  nnAlgoext = nnAlgo[1]
224  toolDict = {
225  "json": CompFactory.FlavorTagDiscriminants.DL2Tool,
226  "onnx": CompFactory.FlavorTagDiscriminants.GNNTool
227  }
228  ca.addEventAlgo(
229  CompFactory.FlavorTagDiscriminants.JetTagConditionalDecoratorAlg(
230  name='_'.join([
231  'simpleJetTagAlg',
232  jet_name,
233  inputTracks,
234  nnAlgoKey,
235  ]),
236  container=jet_name,
237  constituentContainer=inputTracks,
238  undeclaredReadDecorKeys=missingKeys,
239  tagFlag=pass_flag,
240  decorator=toolDict[nnAlgoext](
241  name='_'.join([
242  'simpleDipsToJet',
243  nnAlgoKey,
244  ]),
245  nnFile=nnFile,
246  variableRemapping=variableRemapping,
247  # note that the tracks are associated to the jet as
248  # and IParticle container.
249  trackLinkType='IPARTICLE',
250  defaultOutputValue=0
251  ),
252  )
253  )
254  return ca
255 

◆ flavourTaggingCfg()

def python.HLT.Bjet.BjetFlavourTaggingConfig.flavourTaggingCfg (   flags,
  inputJets,
  inputVertex,
  inputTracks,
  BTagName,
  inputMuons = "" 
)

Definition at line 16 of file BjetFlavourTaggingConfig.py.

16 def flavourTaggingCfg( flags, inputJets, inputVertex, inputTracks, BTagName,
17  inputMuons = ""):
18 
19  # because Cfg functions internally re-append the 'Jets' string
20  inputJetsPrefix = inputJets.replace("bJets","b")
21 
22  acc = ComponentAccumulator()
23 
24  acc.merge(JetTagCalibCfg(flags))
25 
26  #Track Augmenter
27  acc.merge(BTagTrackAugmenterAlgCfg(
28  flags,
29  TrackCollection=inputTracks,
30  PrimaryVertexCollectionName=inputVertex
31  ))
32 
33  #Run new Run3 taggers, i.e. DL1, RNNIP, DL1r
34  nnList = [
35 
36  # These are trigger-specific trainings
37  #
38  # R22 retraining for DIPS, provides dips20211116 with a loose
39  # track selection
40  'BTagging/20211216trig/dips/AntiKt4EMPFlow/network.json',
41  # R22 retraining with the above DIPS, provides DL1d20211216
42  'BTagging/20211216trig/dl1d/AntiKt4EMPFlow/network.json',
43  # Trigger GN1 training
44  'BTagging/20220813trig/gn1/antikt4empflow/network.onnx',
45  # Trigger DL1dbb training
46  'BTagging/20230314trig/dl1dbb/antikt4empflow/network.json',
47  #Trigger GN2 training
48  'BTagging/20240122trig/gn2/antikt4empflow/SmallPrec.onnx'
49  ]
50 
51 
52  acc.merge(BTagAlgsCfg(
53  inputFlags=flags,
54  JetCollection=inputJetsPrefix,
55  nnList=nnList,
56  trackCollection=inputTracks,
57  muons=inputMuons,
58  primaryVertices=inputVertex,
59  BTagCollection=BTagName,
60  renameTrackJets=False,
61  AddedJetSuffix='Jets'
62  ))
63 
64  return acc
65 

◆ OnlineBeamspotIpAugmenterCfg()

def python.HLT.Bjet.BjetFlavourTaggingConfig.OnlineBeamspotIpAugmenterCfg (   cfgFlags,
  tracks,
  vertices = '',
  trackIpPrefix = 'simpleIp_' 
)

Definition at line 256 of file BjetFlavourTaggingConfig.py.

256 def OnlineBeamspotIpAugmenterCfg(cfgFlags, tracks, vertices='',
257  trackIpPrefix='simpleIp_'):
258  ca = ComponentAccumulator()
259 
260  pfx = 'online'
261  i = 'EventInfo'
262  x = f'{i}.{pfx}BeamPosX'
263  y = f'{i}.{pfx}BeamPosY'
264  z = f'{i}.{pfx}BeamPosZ'
265  sig_x = f'{i}.{pfx}BeamPosSigmaX'
266  sig_y = f'{i}.{pfx}BeamPosSigmaY'
267  sig_z = f'{i}.{pfx}BeamPosSigmaZ'
268  cov_xy = f'{i}.{pfx}BeamPosSigmaXY'
269  tilt_XZ = f'{i}.{pfx}BeamTiltXZ'
270  tilt_YZ = f'{i}.{pfx}BeamTiltYZ'
271  status = f'{i}.{pfx}BeamStatus'
272 
273  ca.merge(BeamSpotCondAlgCfg(cfgFlags))
274  ca.addEventAlgo(CompFactory.xAODMaker.EventInfoBeamSpotDecoratorAlg(
275  name='_'.join([
276  'EventInfoBeamSpotDecorator',
277  tracks,
278  vertices,
279  trackIpPrefix,
280  ]).replace('__','_').rstrip('_'),
281  beamPosXKey=x,
282  beamPosYKey=y,
283  beamPosZKey=z,
284  beamPosSigmaXKey=sig_x,
285  beamPosSigmaYKey=sig_y,
286  beamPosSigmaZKey=sig_z,
287  beamPosSigmaXYKey=cov_xy,
288  beamTiltXZKey=tilt_XZ,
289  beamTiltYZKey=tilt_YZ,
290  beamStatusKey=status,
291  ))
292 
293  ca.addEventAlgo(
294  CompFactory.FlavorTagDiscriminants.PoorMansIpAugmenterAlg(
295  name='_'.join([
296  'SimpleTrackAugmenter',
297  tracks,
298  vertices,
299  trackIpPrefix,
300  ]).replace('__','_').rstrip('_'),
301  trackContainer=tracks,
302  primaryVertexContainer=vertices,
303  prefix=trackIpPrefix,
304  beamspotSigmaX=sig_x,
305  beamspotSigmaY=sig_y,
306  beamspotSigmaZ=sig_z,
307  beamspotCovarianceXY=cov_xy
308  )
309  )
310  return ca
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.BeamSpotConditionsConfig.BeamSpotCondAlgCfg
def BeamSpotCondAlgCfg(flags, name="BeamSpotCondAlg", **kwargs)
Definition: BeamSpotConditionsConfig.py:7
python.HLT.Bjet.BjetFlavourTaggingConfig.fastFlavourTaggingCfg
def fastFlavourTaggingCfg(flags, inputJets, inputVertex, inputTracks, isPFlow=False, fastDipsMinimumPt=None, doXbbtagLargeRJet=False)
Definition: BjetFlavourTaggingConfig.py:66
python.BTagConfig.BTagAlgsCfg
def BTagAlgsCfg(inputFlags, JetCollection, nnList=[], TaggerList=None, SecVertexers=None, trackCollection='InDetTrackParticles', primaryVertices='PrimaryVertices', muons='Muons', BTagCollection=None, renameTrackJets=False, AddedJetSuffix='')
Definition: BTagConfig.py:200
python.FlavorTagNNConfig.getStaticTrackVars
def getStaticTrackVars(TrackCollection)
Definition: FlavorTagNNConfig.py:77
python.BTagTrackAugmenterAlgConfig.BTagTrackAugmenterAlgCfg
def BTagTrackAugmenterAlgCfg(flags, TrackCollection='InDetTrackParticles', PrimaryVertexCollectionName='PrimaryVertices', prefix=None)
Definition: BTagTrackAugmenterAlgConfig.py:9
python.HLT.Bjet.BjetFlavourTaggingConfig.flavourTaggingCfg
def flavourTaggingCfg(flags, inputJets, inputVertex, inputTracks, BTagName, inputMuons="")
Definition: BjetFlavourTaggingConfig.py:16
python.HLT.Bjet.BjetFlavourTaggingConfig.OnlineBeamspotIpAugmenterCfg
def OnlineBeamspotIpAugmenterCfg(cfgFlags, tracks, vertices='', trackIpPrefix='simpleIp_')
Definition: BjetFlavourTaggingConfig.py:256
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
JetParticleAssociationAlgConfig.JetParticleAssociationAlgCfg
def JetParticleAssociationAlgCfg(ConfigFlags, JetCollection, InputParticleCollection, OutputParticleDecoration, MinimumJetPt=None, MinimumJetPtFlag=None)
Definition: AnalysisCommon/ParticleJetTools/python/JetParticleAssociationAlgConfig.py:26
Trk::split
@ split
Definition: LayerMaterialProperties.h:38