ATLAS Offline Software
Loading...
Searching...
No Matches
LeptonTaggersConfig Namespace Reference

Functions

ComponentAccumulator VtxFittingToolCfg (ConfigFlags, **kwargs)
ComponentAccumulator DecorateReFitPrimaryVertexCfg (ConfigFlags, name="PrimaryVertexReFitter", lepton_type="", **kwargs)
ComponentAccumulator VtxItrMergingToolCfg (flags, name="VertexIterativeMergingTool", lepton_name="", **kwargs)
ComponentAccumulator DecorateNonPromptVertexCfg (flags, name="DecorateNonPromptVertex", lepton_name="", **kwargs)
ComponentAccumulator RNNToolCfg (flags, name="RNNTool", RNN_name="RNN_name", lepton_name="", **kwargs)
ComponentAccumulator DecoratePromptLeptonRNNCfg (flags, RNN_name="RNN_name", lepton_name="", name="DecoratePromptLeptonRNN", **kwargs)
 getStringIntVars (BDT_name)
 getStringFloatVars (BDT_name, part_type='')
ComponentAccumulator DecoratePLITCfg (flags, Tagger_name="", lepton_name="", **kwargs)
ComponentAccumulator DecoratePromptLeptonImprovedCfg (flags, BDT_name="", lepton_name="", track_jet_name="AntiKtVR30Rmax4Rmin02PV0TrackJets", veto_BDT_name=None, **kwargs)
ComponentAccumulator DecorateImprovedPromptLeptonAlgsCfg (ConfigFlags, name="DecorateImprovedPromptLeptonAlgs", lepton_type="", **kwargs)
ComponentAccumulator DecoratePLITAlgsCfg (ConfigFlags, name="DecoratePLITAlgsCfg", lepton_type="", **kwargs)
 GetExtraPromptVariablesForDxAOD (name='', addSpectators=False, onlyBDT=True)
 GetExtraImprovedPromptVariablesForDxAOD (name='', onlyBDT=False)
 GetExtraPLITVariablesForDxAOD (name='')

Variables

 lep_tag_log = logging.getLogger('LeptonTaggersConfig')
 parser = ArgumentParser(description="Test the LeptonTaggersConfig")
 type
 str
 choices
 default
 help
 int
 args = parser.parse_args()
 FLAGS = initConfigFlags()
 ProductionStep
 MaxEvents
 SkipEvents
 Files
 Run
 ACC = MainServicesCfg(FLAGS)
 trigger_lists_helper = TriggerListsHelper(FLAGS)
 withDetails
 True
 summariseProps
 status = ACC.run()

Function Documentation

◆ DecorateImprovedPromptLeptonAlgsCfg()

ComponentAccumulator LeptonTaggersConfig.DecorateImprovedPromptLeptonAlgsCfg ( ConfigFlags,
name = "DecorateImprovedPromptLeptonAlgs",
lepton_type = "",
** kwargs )
CA to decorate with PLIV input algorithms

Definition at line 420 of file LeptonTaggersConfig.py.

423) -> ComponentAccumulator:
424 """
425 CA to decorate with PLIV input algorithms
426 """
427 valid_lepton_types = ["", "Electrons", "Muons"]
428 if lepton_type not in valid_lepton_types:
429 lep_tag_log.error("Requested lepton type: %s", lepton_type)
430 lep_tag_log.error("Allowed lepton types: %s", valid_lepton_types)
431 raise ValueError('DecorateImprovedPromptLeptonAlgsCfg - '
432 + f'unknown lepton type: "{lepton_type}"')
433
434 acc = ComponentAccumulator()
435
436 if lepton_type in ["", "Electrons"]:
437 acc.merge(DecorateReFitPrimaryVertexCfg(ConfigFlags, lepton_type="Electrons"))
438 acc.merge(DecorateNonPromptVertexCfg(ConfigFlags, lepton_name="Electrons"))
439 acc.merge(DecoratePromptLeptonRNNCfg(ConfigFlags,
440 RNN_name='PromptLeptonRNN',
441 lepton_name='Electrons'))
442 acc.merge(DecoratePromptLeptonImprovedCfg(
443 ConfigFlags, BDT_name="PromptLeptonImprovedVetoBARR",
444 lepton_name="Electrons", track_jet_name="AntiKtVR30Rmax4Rmin02PV0TrackJets"
445 ))
446 acc.merge(DecoratePromptLeptonImprovedCfg(
447 ConfigFlags, BDT_name="PromptLeptonImprovedVetoECAP",
448 veto_BDT_name='PromptLeptonImprovedVetoBARR',
449 lepton_name="Electrons", track_jet_name="AntiKtVR30Rmax4Rmin02PV0TrackJets"
450 ))
451
452 if lepton_type in ["", "Muons"]:
453 acc.merge(DecorateReFitPrimaryVertexCfg(ConfigFlags, lepton_type="Muons"))
454 acc.merge(DecorateNonPromptVertexCfg(ConfigFlags, lepton_name="Muons"))
455 acc.merge(DecoratePromptLeptonRNNCfg(ConfigFlags,
456 RNN_name='PromptLeptonRNN',
457 lepton_name='Muons'))
458 acc.merge(DecoratePromptLeptonImprovedCfg(
459 ConfigFlags, BDT_name="PromptLeptonImprovedVeto",
460 lepton_name="Muons", track_jet_name="AntiKtVR30Rmax4Rmin02PV0TrackJets"
461 ))
462
463 return acc
464

◆ DecorateNonPromptVertexCfg()

ComponentAccumulator LeptonTaggersConfig.DecorateNonPromptVertexCfg ( flags,
name = "DecorateNonPromptVertex",
lepton_name = "",
** kwargs )
Configure the non-prompt vertex decorator.

Definition at line 115 of file LeptonTaggersConfig.py.

116 lepton_name="", **kwargs) -> ComponentAccumulator:
117 """
118 Configure the non-prompt vertex decorator.
119 """
120 if lepton_name not in ['Electrons', 'Muons']:
121 raise ValueError(f'DecorateNonPromptVertex - unknown lepton type: "{lepton_name}"')
122
123 acc = ComponentAccumulator()
124
125 vertex_fitting_tool = acc.popToolsAndMerge(VtxFittingToolCfg(flags))
126
127 kwargs.setdefault("VertexFittingTool",vertex_fitting_tool)
128
129 kwargs.setdefault(
130 "VertexMergingTool",
131 acc.popToolsAndMerge(VtxItrMergingToolCfg(
132 flags, lepton_name=lepton_name,
133 VertexFittingTool=vertex_fitting_tool
134 ))
135 )
136
137 kwargs.setdefault("LeptonContainerName", lepton_name)
138 kwargs.setdefault("ReFitPriVtxContainerName", f"RefittedPriVtx_{lepton_name}")
139 kwargs.setdefault("SVContainerName", f"SecVtxContainer_{lepton_name}")
140
141 kwargs.setdefault("SecVtxLinksName", "SecVtxLinks")
142 kwargs.setdefault("DeepMergedSecVtxLinksName", "DeepMergedSecVtxLinks")
143 kwargs.setdefault("NoLeptonPriVtxLinkName", f"RefittedPriVtxWithoutLepton_{lepton_name}")
144 kwargs.setdefault("IndexVectorName", "PromptLeptonInput_SecondaryVertexIndexVector")
145
146 alg = CompFactory.Prompt.NonPromptLeptonVertexingAlg(
147 name=f'NonPromptVtx_decorate_{lepton_name}',
148 **kwargs
149 )
150
151 acc.addEventAlgo(alg, primary=True)
152
153 return acc
154
155

◆ DecoratePLITAlgsCfg()

ComponentAccumulator LeptonTaggersConfig.DecoratePLITAlgsCfg ( ConfigFlags,
name = "DecoratePLITAlgsCfg",
lepton_type = "",
** kwargs )
CA to decorate with PLIT input algorithms

Definition at line 465 of file LeptonTaggersConfig.py.

468) -> ComponentAccumulator:
469 """
470 CA to decorate with PLIT input algorithms
471 """
472 valid_lepton_types = ["", "Electrons", "Muons"]
473 if lepton_type not in valid_lepton_types:
474 lep_tag_log.error("Requested lepton type: %s", lepton_type)
475 lep_tag_log.error("Allowed lepton types: %s", valid_lepton_types)
476 raise ValueError('DecoratePLITAlgsCfg - '
477 + f'unknown lepton type: "{lepton_type}"')
478
479 acc = ComponentAccumulator()
480
481 if lepton_type in ["", "Electrons"]:
482 acc.merge(DecoratePLITCfg(ConfigFlags, Tagger_name="PLIT", lepton_name="Electrons"))
483
484 if lepton_type in ["", "Muons"]:
485 acc.merge(DecoratePLITCfg(ConfigFlags, Tagger_name="PLIT", lepton_name="Muons"))
486
487 return acc
488
489#------------------------------------------------------------------------------

◆ DecoratePLITCfg()

ComponentAccumulator LeptonTaggersConfig.DecoratePLITCfg ( flags,
Tagger_name = "",
lepton_name = "",
** kwargs )
Configure the PLIT decorator.

Definition at line 277 of file LeptonTaggersConfig.py.

280) -> ComponentAccumulator:
281 """
282 Configure the PLIT decorator.
283 """
284 lep_tag_log.info("calling DecoratePLITCfg with name="+Tagger_name+" lepton_name="+lepton_name)
285
286 acc = ComponentAccumulator()
287
288 #
289 # Prepare DecoratePromptLepton alg
290 #
291 kwargs.setdefault("LeptonContainerName", lepton_name)
292 kwargs.setdefault("TracksContainerKey", "InDetTrackParticles")
293 kwargs.setdefault("CaloClusterContainerKey", "egammaClusters")
294 kwargs.setdefault("TaggerName", Tagger_name)
295
296 # check if Run3 (or beyond) configs should be used
297 isRun3 = (flags.GeoModel.Run >= LHCPeriod.Run3)
298
299 # Make sure the decorations have a unique name to avoid multiple tools writing the same name
300 kwargs.setdefault("acc_trk_dr_lepton","dr_lepton"+lepton_name)
301 kwargs.setdefault("acc_trk_electron_track","electron_track"+lepton_name)
302 kwargs.setdefault("acc_trk_muon_track","muon_track"+lepton_name)
303 kwargs.setdefault("acc_trk_dr_leptontrack","dr_leptontrack"+lepton_name)
304 kwargs.setdefault("dec_trk_dr_lepton","dr_lepton"+lepton_name)
305 kwargs.setdefault("dec_trk_electron_track","electron_track"+lepton_name)
306 kwargs.setdefault("dec_trk_muon_track","muon_track"+lepton_name)
307 kwargs.setdefault("dec_trk_dr_leptontrack","dr_leptontrack"+lepton_name)
308
309 # path on calib area (found by path resolver
310 # /cvmfs/atlas.cern.ch/repo/sw/database/GroupData/
311 if lepton_name == 'Electrons':
312 if isRun3:
313 kwargs.setdefault("ConfigPath", "IsolationSelection/PLIT/2025-04-25/")
314 kwargs.setdefault("ConfigFileVersion", 'network_run3_electrons_barrel.onnx')
315 kwargs.setdefault("ConfigFileVersion_endcap", 'network_run3_electrons_endcap.onnx')
316 else:
317 kwargs.setdefault("ConfigPath", "IsolationSelection/PLIT/2025-04-25/")
318 kwargs.setdefault("ConfigFileVersion", 'network_run2_electrons_barrel.onnx')
319 kwargs.setdefault("ConfigFileVersion_endcap", 'network_run2_electrons_endcap.onnx')
320 elif lepton_name == 'Muons':
321 if isRun3:
322 kwargs.setdefault("ConfigPath", "IsolationSelection/PLIT/2025-04-25/")
323 kwargs.setdefault("ConfigFileVersion", 'network_run3_muons.onnx')
324 else:
325 kwargs.setdefault("ConfigPath", "IsolationSelection/PLIT/2025-04-25/")
326 kwargs.setdefault("ConfigFileVersion", 'network_run2_muons.onnx')
327 else:
328 raise ValueError(f'Decorate{Tagger_name} - unknown lepton type: "{lepton_name}"')
329
330 alg = CompFactory.Prompt.DecoratePLIT(
331 f'{lepton_name}_decorate{Tagger_name}', **kwargs
332 )
333 acc.addEventAlgo(alg, primary=True)
334
335 lep_tag_log.info(
336 'Decorate%s - prepared %s algorithm for: %s',
337 Tagger_name, Tagger_name, lepton_name
338 )
339
340 return acc
341

◆ DecoratePromptLeptonImprovedCfg()

ComponentAccumulator LeptonTaggersConfig.DecoratePromptLeptonImprovedCfg ( flags,
BDT_name = "",
lepton_name = "",
track_jet_name = "AntiKtVR30Rmax4Rmin02PV0TrackJets",
veto_BDT_name = None,
** kwargs )
Configure the PromptLeptonImproved decorator.

Definition at line 342 of file LeptonTaggersConfig.py.

346) -> ComponentAccumulator:
347 """
348 Configure the PromptLeptonImproved decorator.
349 """
350 lep_tag_log.info("calling DecoratePromptLeptonImprovedCfg with BDT_name="+BDT_name+" lepton_name="+lepton_name+" track_jet_name="+track_jet_name)
351 #
352 # Check track jet container is correct
353 #
354 if track_jet_name != 'AntiKtVR30Rmax4Rmin02PV0TrackJets':
355 raise ValueError(f'Decorate{BDT_name} - unknown track jet collection: "{track_jet_name}"')
356
357 acc = ComponentAccumulator()
358
359 #
360 # Prepare DecoratePromptLepton alg
361 #
362 kwargs.setdefault("LeptonContainerName", lepton_name)
363
364 kwargs.setdefault("TrackJetContainerName", track_jet_name)
365 kwargs.setdefault("PrimaryVertexContainerName", 'PrimaryVertices')
366 kwargs.setdefault("ClusterContainerName", 'CaloCalTopoClusters')
367
368 kwargs.setdefault("BDTName", BDT_name)
369 kwargs.setdefault("InputVarDecoratePrefix", 'PromptLeptonImprovedInput_')
370 kwargs.setdefault("PrintTime", False)
371
372 #
373 # Read configuration from AFS for this initial merge request, will switch to cvmfs with second request
374 #
375 if lepton_name == 'Electrons':
376 kwargs.setdefault("MethodTitleMVA", f'BDT_Electron_{BDT_name}')
377 kwargs.setdefault("ConfigFileVersion", 'InputData-2020-02-25/BDT/Electron/' + BDT_name)
378 kwargs.setdefault("accessorRNNVars", ['PromptLeptonRNN_prompt'])
379 elif lepton_name == 'Muons':
380 kwargs.setdefault("MethodTitleMVA", f'BDT_Muon_{BDT_name}')
381 kwargs.setdefault("ConfigFileVersion", 'InputData-2020-02-25/BDT/Muon/' + BDT_name)
382 kwargs.setdefault("accessorRNNVars", ['PromptLeptonRNN_prompt'])
383 else:
384 raise ValueError(f'Decorate{BDT_name} - unknown lepton type: "{lepton_name}"')
385
386 kwargs.setdefault("stringIntVars", getStringIntVars(BDT_name))
387 kwargs.setdefault("stringFloatVars", getStringFloatVars(BDT_name))
388 kwargs.setdefault("extraDecoratorFloatVars", ['RawPt'])
389 kwargs.setdefault("extraDecoratorShortVars", ['CandVertex_NPassVtx'])
390 kwargs.setdefault("vetoDecoratorFloatVars", ['PromptLeptonRNN_prompt'])
391 kwargs.setdefault("vetoDecoratorShortVars", [])
392
393 if veto_BDT_name:
394 kwargs['vetoDecoratorFloatVars'] += ['RawPt']
395 kwargs['vetoDecoratorFloatVars'] += getStringFloatVars(veto_BDT_name)
396 kwargs['vetoDecoratorShortVars'] += ['CandVertex_NPassVtx']
397 kwargs['vetoDecoratorShortVars'] += getStringIntVars(veto_BDT_name)
398
399 kwargs.setdefault("leptonPtBinsVector", [10.0e3, 15.0e3, 20.0e3, 25.0e3, 32.0e3, 43.0e3, 100.0e3])
400
401
402 #
403 # Secondary vertex selection for the PromptLeptonImproved
404 #
405 kwargs.setdefault("VertexLinkName", 'DeepMergedSecVtxLinks')
406
407 alg = CompFactory.Prompt.DecoratePromptLeptonImproved(
408 f'{lepton_name}_decorate{BDT_name}', **kwargs
409 )
410 acc.addEventAlgo(alg, primary=True)
411
412 lep_tag_log.info(
413 'Decorate%s - prepared %s algorithm for: %s, %s',
414 BDT_name, BDT_name, lepton_name, track_jet_name
415 )
416
417 return acc
418
419

◆ DecoratePromptLeptonRNNCfg()

ComponentAccumulator LeptonTaggersConfig.DecoratePromptLeptonRNNCfg ( flags,
RNN_name = "RNN_name",
lepton_name = "",
name = "DecoratePromptLeptonRNN",
** kwargs )
Configure the prompt lepton RNN decorator.

Definition at line 190 of file LeptonTaggersConfig.py.

192 **kwargs) -> ComponentAccumulator:
193 """
194 Configure the prompt lepton RNN decorator.
195 """
196 lep_tag_log.info("calling DecoratePromptLeptonRNNCfg with name"+RNN_name+" with lepton_name="+lepton_name)
197 if lepton_name not in ["Electrons", "Muons"]:
198 raise ValueError(f'DecorateNonPromptVertex - unknown lepton type: "{lepton_name}"')
199
200 acc = ComponentAccumulator()
201
202 #
203 # Prepare DecoratePromptLepton alg
204 #
205 kwargs.setdefault("inputContainerLepton", lepton_name)
206 kwargs.setdefault("inputContainerTrack", 'InDetTrackParticles')
207 kwargs.setdefault("inputContainerTrackJet", 'AntiKtVR30Rmax4Rmin02PV0TrackJets')
208 kwargs.setdefault("inputContainerPrimaryVertices", 'PrimaryVertices')
209
210 kwargs.setdefault("decorationPrefixRNN", 'PromptLeptonRNN_')
211
212 kwargs.setdefault("debug", False)
213 kwargs.setdefault("outputStream", 'out')
214
215 kwargs.setdefault("toolRNN", acc.popToolsAndMerge(
216 RNNToolCfg(flags, RNN_name=RNN_name, lepton_name=lepton_name)
217 ))
218
219 alg = CompFactory.Prompt.DecoratePromptLeptonRNN(
220 name=f'{lepton_name}_decorate_RNN_{RNN_name}', **kwargs
221 )
222 acc.addEventAlgo(alg, primary=True)
223
224 lep_tag_log.info('Decorate%s - prepared %s algorithm for: %s',
225 RNN_name, RNN_name, lepton_name)
226
227 return acc
228
229

◆ DecorateReFitPrimaryVertexCfg()

ComponentAccumulator LeptonTaggersConfig.DecorateReFitPrimaryVertexCfg ( ConfigFlags,
name = "PrimaryVertexReFitter",
lepton_type = "",
** kwargs )
CA to run the PrimaryVertexReFitter algorithm.

Definition at line 59 of file LeptonTaggersConfig.py.

62) -> ComponentAccumulator:
63 """
64 CA to run the PrimaryVertexReFitter algorithm.
65 """
66
67 if lepton_type not in ['Electrons', 'Muons']:
68 raise ValueError(f'DecorateReFitPrimaryVertex - unknown lepton type: "{lepton_type}"')
69
70 acc = ComponentAccumulator()
71
72 kwargs.setdefault("ReFitPriVtxName", f"RefittedPriVtx_{lepton_type}")
73 kwargs.setdefault("LeptonContainerName", lepton_type)
74
75 kwargs.setdefault("DistToRefittedPriVtxName", "distToRefittedPriVtx")
76 kwargs.setdefault("NormDistToRefittedPriVtxName", "normDistToRefittedPriVtx")
77 kwargs.setdefault("RefittedVtxWithoutLeptonLinkName",
78 f"RefittedPriVtxWithoutLepton_{lepton_type}")
79
80 alg_name = f'PrimaryVertexReFitter_{lepton_type}_decoratePriVtx'
81
82 kwargs.setdefault("VertexFittingTool", acc.popToolsAndMerge(
83 VtxFittingToolCfg(ConfigFlags)
84 ))
85
86 the_alg = CompFactory.Prompt.PrimaryVertexReFitter(alg_name, **kwargs)
87
88 acc.addEventAlgo(the_alg, primary = True)
89 lep_tag_log.info("end of DecorateReFitPrimaryVertexCfg")
90 return acc
91
92

◆ GetExtraImprovedPromptVariablesForDxAOD()

LeptonTaggersConfig.GetExtraImprovedPromptVariablesForDxAOD ( name = '',
onlyBDT = False )

Definition at line 544 of file LeptonTaggersConfig.py.

544def GetExtraImprovedPromptVariablesForDxAOD(name='', onlyBDT=False):
545
546 prompt_lep_vars = []
547
548 #
549 # Decorate lepton only with the BDT outputs when the onlyBDT flag is true.
550 #
551 if onlyBDT:
552 # Add lepton raw pT and pTBin as default which is needed for the PLIV working points.
553 rawpt_vars ="PromptLeptonImprovedInput_MVAXBin.PromptLeptonImprovedInput_RawPt"
554
555 if name == "" or name == "Electrons":
556 prompt_lep_vars += ["Electrons.PromptLeptonImprovedVetoBARR.PromptLeptonImprovedVetoECAP.%s"%rawpt_vars]
557
558 if name == "" or name == "Muons":
559 prompt_lep_vars += ["Muons.PromptLeptonImprovedVeto.%s"%rawpt_vars]
560
561 return prompt_lep_vars
562
563 prompt_vars = "PromptLeptonImprovedInput_MVAXBin.PromptLeptonImprovedInput_RawPt."
564 prompt_vars += "PromptLeptonImprovedInput_PtFrac.PromptLeptonImprovedInput_DRlj."
565 prompt_vars += "PromptLeptonImprovedInput_topoetcone30rel.PromptLeptonImprovedInput_ptvarcone30rel."
566
567 if name == "" or name == "Electrons":
568 # Add PromptLeptonTagger electron RNN and new inputs for PromptLeptonImprovedVetoBARR/PromptLeptonImprovedVetoECAP
569 prompt_el_vars = "PromptLeptonRNN_prompt.PromptLeptonRNN_non_prompt_b.PromptLeptonRNN_non_prompt_c.PromptLeptonRNN_conversion."
570 prompt_el_vars += "PromptLeptonImprovedVetoBARR.PromptLeptonImprovedVetoECAP.PromptLeptonImprovedInput_TrackJetNTrack.PromptLeptonImprovedInput_PtRel.PromptLeptonImprovedInput_CaloClusterSumEtRel.PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx"
571
572 prompt_lep_vars += ["Electrons." + prompt_vars + prompt_el_vars]
573
574 if name == "" or name == "Muons":
575 # Add PromptLeptonTagger muon RNN and new inputs for PromptLeptonImprovedVeto
576 prompt_mu_vars = "PromptLeptonRNN_prompt.PromptLeptonRNN_non_prompt_b.PromptLeptonRNN_non_prompt_c."
577 prompt_mu_vars += "PromptLeptonImprovedVeto.PromptLeptonImprovedInput_ptvarcone30_TightTTVA_pt500rel.PromptLeptonImprovedInput_CaloClusterERel.PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest"
578
579 prompt_lep_vars += ["Muons." + prompt_vars + prompt_mu_vars]
580
581 return prompt_lep_vars
582
583#------------------------------------------------------------------------------

◆ GetExtraPLITVariablesForDxAOD()

LeptonTaggersConfig.GetExtraPLITVariablesForDxAOD ( name = '')

Definition at line 584 of file LeptonTaggersConfig.py.

584def GetExtraPLITVariablesForDxAOD(name=''):
585
586 prompt_lep_vars = []
587
588 #
589 # Decorate lepton with the score outputs
590 #
591 if name == "" or name == "Electrons":
592 prompt_lep_vars += ["Electrons.PLIT_PLITel_pelxpromp", "Electrons.PLIT_PLITel_pnpxall"]
593
594 if name == "" or name == "Muons":
595 prompt_lep_vars += ["Muons.PLIT_TPLTmu_pmuxpromp", "Muons.PLIT_TPLTmu_pnpxall"]
596
597 return prompt_lep_vars
598
599
600# Script to run for testing the config

◆ GetExtraPromptVariablesForDxAOD()

LeptonTaggersConfig.GetExtraPromptVariablesForDxAOD ( name = '',
addSpectators = False,
onlyBDT = True )

Definition at line 490 of file LeptonTaggersConfig.py.

490def GetExtraPromptVariablesForDxAOD(name='', addSpectators=False, onlyBDT=True):
491
492 prompt_lep_vars = []
493
494 #
495 # Decorate lepton only with the BDT outputs when the onlyBDT flag is true.
496 #
497 # NOTE: The output score name for BDTname=LowPtPromptLeptonVeto is "LowPtPLV" instead "LowPtPromptLeptonVeto".
498 # This is to harmonize with the variable augmented in CP::IsolationLowPtPLVTool
499 #
500 if onlyBDT:
501 if name == "" or name == "Electrons":
502 prompt_lep_vars += ["Electrons.PromptLeptonVeto.PromptLeptonIso.LowPtPLV."]
503
504 if name == "" or name == "Muons":
505 prompt_lep_vars += ["Muons.PromptLeptonVeto.PromptLeptonIso.LowPtPLV."]
506
507 return prompt_lep_vars
508
509
510 prompt_vars = "PromptLeptonVeto.PromptLeptonIso.LowPtPLV."
511 prompt_vars += "PromptLeptonInput_TrackJetNTrack.PromptLeptonInput_sv1_jf_ntrkv."
512 prompt_vars += "PromptLeptonInput_ip2.PromptLeptonInput_ip3."
513 prompt_vars += "PromptLeptonInput_LepJetPtFrac.PromptLeptonInput_DRlj."
514 prompt_vars += "PromptLeptonInput_PtFrac.PromptLeptonInput_PtRel."
515 prompt_vars += "PromptLeptonInput_DL1mu.PromptLeptonInput_rnnip."
516 prompt_vars += "PromptLeptonInput_topoetcone20rel.PromptLeptonInput_ptvarcone20rel."
517 prompt_vars += "PromptLeptonInput_topoetcone30rel.PromptLeptonInput_ptvarcone30rel."
518
519 prompt_vars += "PromptLeptonInput_SecondaryVertexIndexVector.PromptLeptonInput_SecondaryVertexIndexVectorInDet.PromptLeptonInput_SecondaryVertexIndexVectorMerge.PromptLeptonInput_SecondaryVertexIndexVectorDeepMerge."
520 prompt_vars += "rhocen.rhofor.SecVtxLinks.RefittedPriVtxLink.RefittedPriVtxWithoutLeptonLink."
521
522
523 secondaryvertex_vars = "SVType.trackParticleLinks.trackWeights.neutralParticleLinks.neutralWeights.SecondaryVertexIndex.SecondaryVertexIndexVectorInput.chiSquared.numberDoF.x.y.z.covariance.vertexType.energyFraction.mass.normDist.ntrk.distToPriVtx.normDistToPriVtx.distToRefittedPriVtx.normDistToRefittedPriVtx.distToRefittedRmLepPriVtx.normDistToRefittedRmLepPriVtx"
524
525 if addSpectators :
526 prompt_vars += "PromptLeptonInput_JetPt.PromptLeptonInput_JetEta.PromptLeptonInput_JetPhi.PromptLeptonInput_JetM."
527
528 if name == "" or name == "Electrons":
529 prompt_el_vars = "ptvarcone40.topoetcone20.topoetcone20ptCorrection.ptcone20_TightTTVA_pt500.ptcone20_TightTTVA_pt1000.ptvarcone20_TightTTVA_pt1000.ptvarcone30_TightTTVA_pt500.ptvarcone30_TightTTVA_pt1000.ptvarcone40_TightTTVALooseCone_pt500"
530
531 prompt_lep_vars += ["Electrons." + prompt_vars + prompt_el_vars]
532 prompt_lep_vars += ["SecVtxContainer_Electrons.%s" %secondaryvertex_vars]
533 prompt_lep_vars += ["SecVtx_ConvVtxContainer_Electrons.%s" %secondaryvertex_vars]
534
535 if name == "" or name == "Muons":
536 prompt_mu_vars = "ET_Core.ET_EMCore.ET_HECCore.ET_TileCore.EnergyLoss.EnergyLossSigma.MeasEnergyLoss.MeasEnergyLossSigma.ParamEnergyLoss.ParamEnergyLossSigmaMinus.ParamEnergyLossSigmaPlus.neflowisol20.neflowisol30.neflowisol40.ptvarcone20_TightTTVA_pt500.ptvarcone30_TightTTVA_pt500.ptvarcone40_TightTTVA_pt500.ptvarcone20_TightTTVA_pt1000.ptvarcone30_TightTTVA_pt1000.ptvarcone40_TightTTVA_pt1000.caloExt_Decorated.caloExt_eta.caloExt_phi"
537
538 prompt_lep_vars += ["Muons." + prompt_vars + prompt_mu_vars]
539 prompt_lep_vars += ["SecVtxContainer_Muons.%s" %secondaryvertex_vars]
540
541 return prompt_lep_vars
542
543#------------------------------------------------------------------------------

◆ getStringFloatVars()

LeptonTaggersConfig.getStringFloatVars ( BDT_name,
part_type = '' )
Get the float variables for the BDT (I think)

Definition at line 247 of file LeptonTaggersConfig.py.

247def getStringFloatVars(BDT_name, part_type=''):
248 """
249 Get the float variables for the BDT (I think)
250 """
251 float_vars = []
252
253 if BDT_name == 'PromptLeptonImprovedVeto':
254 float_vars += ['topoetcone30rel',
255 'ptvarcone30_TightTTVA_pt500rel',
256 'PromptLeptonRNN_prompt',
257 'PtFrac',
258 'DRlj',
259 'CaloClusterERel',
260 'CandVertex_normDistToPriVtxLongitudinalBest']
261 elif (BDT_name == 'PromptLeptonImprovedVetoBARR'
262 or BDT_name == 'PromptLeptonImprovedVetoECAP'):
263 float_vars += ['topoetcone30rel',
264 'ptvarcone30rel',
265 'PromptLeptonRNN_prompt',
266 'PtFrac',
267 'DRlj',
268 'CaloClusterSumEtRel',
269 'PtRel',
270 'CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx']
271 else:
272 raise ValueError(f'getStringFloatVars - unknown alg: "{BDT_name}"')
273
274 return float_vars
275
276

◆ getStringIntVars()

LeptonTaggersConfig.getStringIntVars ( BDT_name)
Get the integer variables for the BDT (I think)

Definition at line 230 of file LeptonTaggersConfig.py.

230def getStringIntVars(BDT_name):
231 """
232 Get the integer variables for the BDT (I think)
233 """
234 int_vars = []
235
236 if BDT_name == 'PromptLeptonImprovedVeto':
237 int_vars += ['MVAXBin']
238 elif (BDT_name == 'PromptLeptonImprovedVetoBARR'
239 or BDT_name == 'PromptLeptonImprovedVetoECAP'):
240 int_vars += ['MVAXBin', 'TrackJetNTrack']
241 else:
242 raise ValueError(f'getStringIntVars - unknown alg: "{BDT_name}"')
243
244 return int_vars
245
246

◆ RNNToolCfg()

ComponentAccumulator LeptonTaggersConfig.RNNToolCfg ( flags,
name = "RNNTool",
RNN_name = "RNN_name",
lepton_name = "",
** kwargs )
Configure the RNN tool.

Definition at line 156 of file LeptonTaggersConfig.py.

158 **kwargs) -> ComponentAccumulator:
159 """
160 Configure the RNN tool.
161 """
162 lep_tag_log.info("calling RNNToolCfg with name"+RNN_name+" with lepton_name="+lepton_name)
163
164 if lepton_name not in ["Electrons", "Muons"]:
165 raise ValueError(f'RNNTool - unknown lepton type: "{lepton_name}"')
166
167 acc = ComponentAccumulator()
168
169 #
170 # Read configuration from AFS for this initial merge request, will switch to cvmfs with second request
171 #
172 if lepton_name == 'Electrons':
173 kwargs.setdefault("configRNNVersion", 'InputData-2020-02-25/RNN/Electron')
174 kwargs.setdefault("configRNNJsonFile",
175 'elecs_feb20_fullrun2_linear_ptraw_ntk5_model_ndense10_nhidden50_nepoch10_nbatch256_use_weights_nn-config.json')
176
177 elif lepton_name == 'Muons':
178 kwargs.setdefault("configRNNVersion", 'InputData-2020-02-25/RNN/Muon')
179 kwargs.setdefault("configRNNJsonFile",
180 'muons_feb19_fullrun2_linear_ptraw_ntk5_model_ndense10_nhidden50_nepoch10_nbatch256_use_weights_nn-config.json')
181
182 tool_rnn = CompFactory.Prompt.RNNTool(
183 name=f'{RNN_name}_{lepton_name}_RNNTool', **kwargs
184 )
185 acc.setPrivateTools(tool_rnn)
186
187 return acc
188
189

◆ VtxFittingToolCfg()

ComponentAccumulator LeptonTaggersConfig.VtxFittingToolCfg ( ConfigFlags,
** kwargs )
Generate a vertex fitting tool.

Definition at line 27 of file LeptonTaggersConfig.py.

27def VtxFittingToolCfg(ConfigFlags, **kwargs) -> ComponentAccumulator:
28 """
29 Generate a vertex fitting tool.
30 """
31 acc = ComponentAccumulator()
32 lep_tag_log.info("creating VtxFittingTool")
33
34 kwargs.setdefault("doSeedVertexFit", False)
35
36 kwargs.setdefault("DistToPriVtxName", "distToPriVtx")
37 kwargs.setdefault("NormDistToPriVtxName", "normDistToPriVtx")
38 kwargs.setdefault("DistToRefittedPriVtxName", "distToRefittedPriVtx")
39 kwargs.setdefault("NormDistToRefittedPriVtxName", "normDistToRefittedPriVtx")
40 kwargs.setdefault("DistToRefittedRmLepPriVtxName", "distToRefittedRmLepPriVtx")
41 kwargs.setdefault("NormDistToRefittedRmLepPriVtxName",
42 "normDistToRefittedRmLepPriVtx")
43
44 from TrkConfig.TrkVertexBilloirToolsConfig import FastVertexFitterCfg
45 fast_vtx_fitter = acc.popToolsAndMerge(FastVertexFitterCfg(ConfigFlags))
46
47 kwargs.setdefault("vertexFitterTool", fast_vtx_fitter)
48 kwargs.setdefault("seedVertexFitterTool", fast_vtx_fitter)
49
50 vertex_fitting_tool = CompFactory.Prompt.VertexFittingTool(
51 name="VertexFittingTool", **kwargs
52 )
53
54 acc.setPrivateTools(vertex_fitting_tool)
55 lep_tag_log.info("end of VtxFittingTool creation")
56 return acc
57
58

◆ VtxItrMergingToolCfg()

ComponentAccumulator LeptonTaggersConfig.VtxItrMergingToolCfg ( flags,
name = "VertexIterativeMergingTool",
lepton_name = "",
** kwargs )
Generate a VtxItrMergingTool configuration.

Definition at line 93 of file LeptonTaggersConfig.py.

94 lepton_name="", **kwargs) -> ComponentAccumulator:
95 """
96 Generate a VtxItrMergingTool configuration.
97 """
98 lep_tag_log.info("creating VtxItrMergingToolCfg configuration")
99
100 acc = ComponentAccumulator()
101
102 kwargs.setdefault("minFitProb", 0.03)
103
104 tool_name = f'VtxIterFitMergingTool_{lepton_name}'
105
106 vtxItrMergingTool = CompFactory.Prompt.VertexIterativeFitMergingTool(
107 name=tool_name, **kwargs
108 )
109
110 acc.setPrivateTools(vtxItrMergingTool)
111
112 return acc
113
114

Variable Documentation

◆ ACC

LeptonTaggersConfig.ACC = MainServicesCfg(FLAGS)

Definition at line 640 of file LeptonTaggersConfig.py.

◆ args

LeptonTaggersConfig.args = parser.parse_args()

Definition at line 616 of file LeptonTaggersConfig.py.

◆ choices

LeptonTaggersConfig.choices

Definition at line 605 of file LeptonTaggersConfig.py.

◆ default

LeptonTaggersConfig.default

Definition at line 606 of file LeptonTaggersConfig.py.

◆ Files

LeptonTaggersConfig.Files

Definition at line 630 of file LeptonTaggersConfig.py.

◆ FLAGS

LeptonTaggersConfig.FLAGS = initConfigFlags()

Definition at line 620 of file LeptonTaggersConfig.py.

◆ help

LeptonTaggersConfig.help

Definition at line 607 of file LeptonTaggersConfig.py.

◆ int

LeptonTaggersConfig.int

Definition at line 610 of file LeptonTaggersConfig.py.

◆ lep_tag_log

LeptonTaggersConfig.lep_tag_log = logging.getLogger('LeptonTaggersConfig')

Definition at line 4 of file LeptonTaggersConfig.py.

◆ MaxEvents

LeptonTaggersConfig.MaxEvents

Definition at line 625 of file LeptonTaggersConfig.py.

◆ parser

LeptonTaggersConfig.parser = ArgumentParser(description="Test the LeptonTaggersConfig")

Definition at line 604 of file LeptonTaggersConfig.py.

◆ ProductionStep

LeptonTaggersConfig.ProductionStep

Definition at line 623 of file LeptonTaggersConfig.py.

◆ Run

LeptonTaggersConfig.Run

Definition at line 633 of file LeptonTaggersConfig.py.

◆ SkipEvents

LeptonTaggersConfig.SkipEvents

Definition at line 626 of file LeptonTaggersConfig.py.

◆ status

LeptonTaggersConfig.status = ACC.run()

Definition at line 663 of file LeptonTaggersConfig.py.

◆ str

LeptonTaggersConfig.str

Definition at line 605 of file LeptonTaggersConfig.py.

◆ summariseProps

LeptonTaggersConfig.summariseProps

Definition at line 660 of file LeptonTaggersConfig.py.

◆ trigger_lists_helper

LeptonTaggersConfig.trigger_lists_helper = TriggerListsHelper(FLAGS)

Definition at line 648 of file LeptonTaggersConfig.py.

◆ True

LeptonTaggersConfig.True

Definition at line 660 of file LeptonTaggersConfig.py.

◆ type

LeptonTaggersConfig.type

Definition at line 605 of file LeptonTaggersConfig.py.

◆ withDetails

LeptonTaggersConfig.withDetails

Definition at line 660 of file LeptonTaggersConfig.py.