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