ATLAS Offline Software
Public Member Functions | Public Attributes | List of all members
python.TauAnalysisConfig.TauTriggerAnalysisSFBlock Class Reference
Inheritance diagram for python.TauAnalysisConfig.TauTriggerAnalysisSFBlock:
Collaboration diagram for python.TauAnalysisConfig.TauTriggerAnalysisSFBlock:

Public Member Functions

def __init__ (self)
 
def instanceName (self)
 
list get_year_data (self, dict dictionary, int|str year)
 
def makeAlgs (self, config)
 

Public Attributes

 tauID
 

Detailed Description

Definition at line 482 of file TauAnalysisConfig.py.

Constructor & Destructor Documentation

◆ __init__()

def python.TauAnalysisConfig.TauTriggerAnalysisSFBlock.__init__ (   self)

Definition at line 484 of file TauAnalysisConfig.py.

484  def __init__ (self) :
485  super (TauTriggerAnalysisSFBlock, self).__init__ ()
486 
487  self.addOption ('triggerChainsPerYear', {}, type=None,
488  info="a dictionary with key (string) the year and value (list of "
489  "strings) the trigger chains. The default is {} (empty dictionary).")
490  self.addOption ('tauID', '', type=str,
491  info="the tau quality WP (string) to use.")
492  self.addOption ('prefixSF', 'trigEffSF', type=str,
493  info="the decoration prefix for trigger scale factors, "
494  "the default is 'trigEffSF'")
495  self.addOption ('includeAllYearsPerRun', False, type=bool,
496  info="if True, all configured years in the LHC run will "
497  "be included in all jobs. The default is False.")
498  self.addOption ('removeHLTPrefix', True, type=bool,
499  info="remove the HLT prefix from trigger chain names, "
500  "The default is True.")
501  self.addOption ('containerName', '', type=str,
502  info="the input tau container, with a possible selection, in "
503  "the format container or container.selection.")
504 

Member Function Documentation

◆ get_year_data()

list python.TauAnalysisConfig.TauTriggerAnalysisSFBlock.get_year_data (   self,
dict  dictionary,
int | str  year 
)

Definition at line 509 of file TauAnalysisConfig.py.

509  def get_year_data(self, dictionary: dict, year: int | str) -> list:
510  return dictionary.get(int(year), dictionary.get(str(year), []))
511 

◆ instanceName()

def python.TauAnalysisConfig.TauTriggerAnalysisSFBlock.instanceName (   self)
Return the instance name for this block

Definition at line 505 of file TauAnalysisConfig.py.

505  def instanceName (self) :
506  """Return the instance name for this block"""
507  return self.containerName + '_' + self.prefixSF + '_' + self.tauID
508 

◆ makeAlgs()

def python.TauAnalysisConfig.TauTriggerAnalysisSFBlock.makeAlgs (   self,
  config 
)

Definition at line 512 of file TauAnalysisConfig.py.

512  def makeAlgs (self, config) :
513 
514  if config.dataType() is not DataType.Data:
515  log = logging.getLogger('TauJetTriggerSFConfig')
516 
517  from TriggerAnalysisAlgorithms.TriggerAnalysisConfig import is_year_in_current_period
518 
519  triggers = set()
520  if self.includeAllYearsPerRun:
521  for year in self.triggerChainsPerYear:
522  if not is_year_in_current_period(config, year):
523  continue
524  triggers.update(self.get_year_data(self.triggerChainsPerYear, year))
525  elif config.campaign() is Campaign.MC20a:
526  triggers.update(self.get_year_data(self.triggerChainsPerYear, 2015))
527  triggers.update(self.get_year_data(self.triggerChainsPerYear, 2016))
528  elif config.campaign() is Campaign.MC20d:
529  triggers.update(self.get_year_data(self.triggerChainsPerYear, 2017))
530  elif config.campaign() is Campaign.MC20e:
531  triggers.update(self.get_year_data(self.triggerChainsPerYear, 2018))
532  elif config.campaign() is Campaign.MC23a:
533  triggers.update(self.get_year_data(self.triggerChainsPerYear, 2022))
534  elif config.campaign() is Campaign.MC23d:
535  triggers.update(self.get_year_data(self.triggerChainsPerYear, 2023))
536  else:
537  log.warning("unknown campaign, skipping triggers: %s", str(config.campaign()))
538 
539  for chain in triggers:
540  chain_noHLT = chain.replace("HLT_", "")
541  chain_out = chain_noHLT if self.removeHLTPrefix else chain
542  alg = config.createAlgorithm( 'CP::TauEfficiencyCorrectionsAlg',
543  'TauTrigEfficiencyCorrectionsAlg_' + chain )
544  config.addPrivateTool( 'efficiencyCorrectionsTool',
545  'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
546  # SFTriggerHadTau correction type from
547  # https://gitlab.cern.ch/atlas/athena/-/blob/main/PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h#L79
548  alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [12]
549  if config.geometry() is LHCPeriod.Run2:
550  alg.efficiencyCorrectionsTool.Campaign = "mc20"
551  else:
552  alg.efficiencyCorrectionsTool.Campaign = config.campaign().value
553  alg.efficiencyCorrectionsTool.TriggerName = chain
554 
555  # JetIDLevel from
556  # https://gitlab.cern.ch/atlas/athena/-/blob/main/PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h#L79
557  if self.tauID=="Loose":
558  JetIDLevel = 7
559  elif self.tauID=="Medium":
560  JetIDLevel = 8
561  elif self.tauID=="Tight":
562  JetIDLevel = 9
563  else:
564  raise ValueError ("invalid tauID: \"" + self.tauID + "\". Allowed values are loose, medium, tight")
565  alg.efficiencyCorrectionsTool.JetIDLevel = JetIDLevel
566  alg.efficiencyCorrectionsTool.TriggerSFMeasurement = "combined"
567  alg.efficiencyCorrectionsTool.useFastSim = config.dataType() is DataType.FastSim
568 
569  alg.scaleFactorDecoration = f"tau_{self.prefixSF}_{chain_out}_%SYS%"
570  alg.outOfValidity = 2 #silent
571  alg.outOfValidityDeco = f"bad_eff_tautrig_{chain_out}"
572  alg.taus = config.readName (self.containerName)
573  alg.preselection = config.getPreselection (self.containerName, self.tauID)
574  config.addOutputVar (self.containerName, alg.scaleFactorDecoration, f"{self.prefixSF}_{chain_out}")

Member Data Documentation

◆ tauID

python.TauAnalysisConfig.TauTriggerAnalysisSFBlock.tauID

Definition at line 557 of file TauAnalysisConfig.py.


The documentation for this class was generated from the following file:
python.processes.powheg.ZZj_MiNNLO.ZZj_MiNNLO.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZj_MiNNLO.py:18
python.TriggerAnalysisConfig.is_year_in_current_period
bool is_year_in_current_period(ConfigAccumulator config, int|str year)
Definition: TriggerAnalysisConfig.py:9
python.TriggerAnalysisSFConfig.get_year_data
list get_year_data(dict dictionary, int|str year)
Definition: TriggerAnalysisSFConfig.py:28
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:232
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
str
Definition: BTagTrackIpAccessor.cxx:11