528 if config.dataType()
is not DataType.Data:
533 triggerDict = TriggerDict()
536 years = [int(year)
for year
in self.triggerChainsPerYear.keys()]
538 from TriggerAnalysisAlgorithms.TriggerAnalysisSFConfig
import (
540 years = get_input_years(config)
542 triggerYearStartBoundaries = {
555 triggerConfigYears = {}
556 from TriggerAnalysisAlgorithms.TriggerAnalysisConfig
import is_year_in_current_period
558 if not is_year_in_current_period(config, year):
561 triggerChains = self.triggerChainsPerYear.
get(int(year), self.triggerChainsPerYear.
get(str(year), []))
562 for chain
in triggerChains:
563 chain = chain.replace(
" || ",
"_OR_")
564 chain_noHLT = chain.replace(
"HLT_",
"")
565 chain_out = chain_noHLT
if self.removeHLTPrefix
else chain
566 legs = triggerDict[chain_noHLT]
568 if chain_noHLT.startswith(
'mu')
and chain_noHLT[2].isdigit():
570 triggerConfigs[chain_out] = chain
571 if chain_out
in triggerConfigYears.keys():
572 triggerConfigYears[chain_out].append(year)
574 triggerConfigYears[chain_out] = [year]
577 if leg.startswith(
'mu')
and leg[2].isdigit():
579 leg_out = leg
if self.removeHLTPrefix
else f
"HLT_{leg}"
580 triggerConfigs[leg_out] = f
"HLT_{leg}"
581 if leg_out
in triggerConfigYears.keys():
582 triggerConfigYears[leg_out].append(year)
584 triggerConfigYears[leg_out] = [year]
586 if not triggerConfigs:
590 sfTool = config.createPublicTool(
"CP::MuonTriggerScaleFactors", f
"{self.instanceName()}_SFTool{self.customToolSuffix}")
592 sfTool.MuonQuality = self.muonID
593 sfTool.AllowZeroSF =
True
594 sfTool.CustomInputFolder = self.customInputFolder
595 sfTool.CustomInputFilePerYear = self.customInputFilePerYear
596 sfTool.Campaign = config.campaign().value
598 for trig_short, trig
in triggerConfigs.items():
599 alg = config.createAlgorithm(
'CP::MuonTriggerEfficiencyScaleFactorAlg',
600 'MuonTrigEfficiencyCorrectionsAlg_' + trig_short)
601 config.setExtraInputs ({(
'xAOD::EventInfo',
'EventInfo.RandomRunNumber')})
602 alg.efficiencyScaleFactorTool = f
"{sfTool.getType()}/{sfTool.getName()}"
607 alg.maxRunNumber = 999999
609 if triggerConfigYears[trig_short][0] != years[0]:
610 alg.minRunNumber = triggerYearStartBoundaries.get(triggerConfigYears[trig_short][0], 999999)
611 if triggerConfigYears[trig_short][-1] != years[-1]:
612 alg.maxRunNumber = triggerYearStartBoundaries.get(triggerConfigYears[trig_short][-1] + 1, 999999)
613 elif config.campaign()
is Campaign.MC20a:
614 if triggerConfigYears[trig_short] == [2015]:
615 alg.maxRunNumber = 290000
616 elif triggerConfigYears[trig_short] == [2016]:
617 alg.minRunNumber = 290000
622 if config.campaign()
is Campaign.MC23a
and (trig_short ==
"HLT_mu8noL1_FSNOSEED" or trig_short ==
"HLT_mu22_L1MU14FCH"):
623 alg.minRunNumber = 435816
626 alg.scaleFactorDecoration = f
"muon_{self.prefixSF}_{trig_short}_%SYS%"
628 alg.mcEfficiencyDecoration = f
"muon_{self.prefixEff}_{trig_short}_%SYS%"
630 alg.dataEfficiencyDecoration = f
"muon_{self.prefixEffData}_{trig_short}_%SYS%"
631 alg.outOfValidity = 2
632 alg.outOfValidityDeco = f
"bad_eff_muontrig_{trig_short}"
634 alg.preselection = config.getPreselection (self.
containerName,
'')
636 config.addOutputVar (self.
containerName, alg.scaleFactorDecoration, f
"{self.prefixSF}_{trig_short}")
638 config.addOutputVar (self.
containerName, alg.mcEfficiencyDecoration, f
"{self.prefixEff}_{trig_short}")
640 config.addOutputVar (self.
containerName, alg.dataEfficiencyDecoration, f
"{self.prefixEffData}_{trig_short}")