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

Public Member Functions

def __init__ (self, configName='')
 
def makeAlgs (self, config)
 

Detailed Description

Definition at line 622 of file ElectronAnalysisConfig.py.

Constructor & Destructor Documentation

◆ __init__()

def python.ElectronAnalysisConfig.ElectronTriggerAnalysisSFBlock.__init__ (   self,
  configName = '' 
)

Definition at line 624 of file ElectronAnalysisConfig.py.

624  def __init__ (self, configName='') :
625  super (ElectronTriggerAnalysisSFBlock, self).__init__ ()
626 
627  self.addOption ('triggerChainsPerYear', {}, type=None,
628  info="a dictionary with key (string) the year and value (list of "
629  "strings) the trigger chains. The default is {} (empty dictionary).")
630  self.addOption ('electronID', '', type=str,
631  info="the electron ID WP (string) to use.")
632  self.addOption ('electronIsol', '', type=str,
633  info="the electron isolation WP (string) to use.")
634  self.addOption ('saveEff', False, type=bool,
635  info="define whether we decorate also the trigger scale efficiency "
636  "The default is false.")
637  self.addOption ('containerName', '', type=str,
638  info="the input electron container, with a possible selection, in "
639  "the format container or container.selection.")
640 

Member Function Documentation

◆ makeAlgs()

def python.ElectronAnalysisConfig.ElectronTriggerAnalysisSFBlock.makeAlgs (   self,
  config 
)

Definition at line 641 of file ElectronAnalysisConfig.py.

641  def makeAlgs (self, config) :
642 
643  if config.dataType() is not DataType.Data:
644 
645  # Dictionary from TrigGlobalEfficiencyCorrection/Triggers.cfg
646  # Key is trigger chain (w/o HLT prefix)
647  # Value is empty for single leg trigger or list of legs
648  triggerDict = TriggerDict()
649 
650  version = ("2015_2018/rel21.2/Precision_Summer2020_v1"
651  if config.geometry() is LHCPeriod.Run2 else
652  "2015_2025/rel22.2/2022_Summer_Prerecom_v1")
653  # Dictionary from TrigGlobalEfficiencyCorrection/MapKeys.cfg
654  # Key is year_leg
655  # Value is list of configs available, first one will be used
656  mapKeysDict = MapKeysDict(version)
657 
658  if config.campaign() is Campaign.MC20a:
659  years = ['2015', '2016']
660  elif config.campaign() is Campaign.MC20d:
661  years = ['2017']
662  elif config.campaign() is Campaign.MC20e:
663  years = ['2018']
664  elif config.campaign() in [Campaign.MC21a, Campaign.MC23a]:
665  years = ['2022']
666  elif config.campaign() in [Campaign.MC23c, Campaign.MC23d]:
667  years = ['2023']
668 
669  triggerConfigs = {}
670  for year in years:
671  triggerChains = self.triggerChainsPerYear.get(year,[])
672  for chain in triggerChains:
673  chain = chain.replace("HLT_", "").replace(" || ", "_OR_")
674  legs = triggerDict[chain]
675  if len(legs)==0:
676  if chain[0]=='e' and chain[1].isdigit:
677  triggerConfigs[chain] = mapKeysDict[year + '_' + chain]
678  else:
679  for leg in legs:
680  if leg[0]=='e' and leg[1].isdigit:
681  triggerConfigs[leg] = mapKeysDict[year + '_' + leg]
682 
683  decorations = ['EffSF']
684  if self.saveEff:
685  decorations += ['Eff']
686 
687  for trig, conf in triggerConfigs.items():
688  for deco in decorations:
689  alg = config.createAlgorithm('CP::ElectronEfficiencyCorrectionAlg',
690  'EleTrigEfficiencyCorrectionsAlg' + deco +
691  '_' + trig)
692  config.addPrivateTool( 'efficiencyCorrectionTool',
693  'AsgElectronEfficiencyCorrectionTool' )
694 
695  # Reproduce config from TrigGlobalEfficiencyAlg
696  alg.efficiencyCorrectionTool.MapFilePath = "ElectronEfficiencyCorrection/" + version + "/map4.txt"
697  alg.efficiencyCorrectionTool.IdKey = self.electronID.replace("LH","")
698  alg.efficiencyCorrectionTool.IsoKey = self.electronIsol
699  alg.efficiencyCorrectionTool.TriggerKey = (
700  ("Eff_" if "SF" not in deco else "") + conf[0])
701  alg.efficiencyCorrectionTool.CorrelationModel = "TOTAL"
702  alg.efficiencyCorrectionTool.ForceDataType = \
703  PATCore.ParticleDataType.Full
704 
705  alg.scaleFactorDecoration = (
706  'el_trig' + deco + '_' + trig + '_%SYS%')
707  alg.outOfValidity = 2 #silent
708  alg.outOfValidityDeco = 'bad_eff_eletrig' + deco + '_' + trig
709  alg.electrons = config.readName (self.containerName)
710  alg.preselection = config.getPreselection (self.containerName, '')
711  config.addOutputVar (self.containerName, alg.scaleFactorDecoration, 'trig' + deco + '_' + trig)

The documentation for this class was generated from the following file:
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
TriggerLeg_DictHelpers.MapKeysDict
def MapKeysDict(target_version)
Definition: TriggerLeg_DictHelpers.py:36
TriggerLeg_DictHelpers.TriggerDict
def TriggerDict()
Definition: TriggerLeg_DictHelpers.py:7
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127