131 def makeTriggerGlobalEffCorrAlg(
133 config: ConfigAccumulator,
136 triggerSuffix: str =
''
138 alg = config.createAlgorithm(
'CP::TrigGlobalEfficiencyAlg',
'TrigGlobalSFAlg' + triggerSuffix + self.postfix)
139 if config.geometry()
is LHCPeriod.Run3:
140 alg.triggers_2022 = [trig.replace(
"HLT_",
"").
replace(
" || ",
"_OR_")
for trig
in get_year_data(self.triggerChainsPerYear, 2022)]
141 alg.triggers_2023 = [trig.replace(
"HLT_",
"").
replace(
" || ",
"_OR_")
for trig
in get_year_data(self.triggerChainsPerYear, 2023)]
142 alg.triggers_2024 = [trig.replace(
"HLT_",
"").
replace(
" || ",
"_OR_")
for trig
in get_year_data(self.triggerChainsPerYear, 2024)]
143 alg.triggers_2025 = [trig.replace(
"HLT_",
"").
replace(
" || ",
"_OR_")
for trig
in get_year_data(self.triggerChainsPerYear, 2025)]
145 if not alg.triggers_2022:
146 raise ValueError(
'TriggerAnalysisConfig: you must provide a set of triggers for the year 2022!')
148 if not alg.triggers_2023:
149 raise ValueError(
'TriggerAnalysisConfig: you must provide a set of triggers for the year 2023!')
151 alg.triggers_2015 = [trig.replace(
"HLT_",
"").
replace(
" || ",
"_OR_")
for trig
in get_year_data(self.triggerChainsPerYear, 2015)]
152 alg.triggers_2016 = [trig.replace(
"HLT_",
"").
replace(
" || ",
"_OR_")
for trig
in get_year_data(self.triggerChainsPerYear, 2016)]
153 alg.triggers_2017 = [trig.replace(
"HLT_",
"").
replace(
" || ",
"_OR_")
for trig
in get_year_data(self.triggerChainsPerYear, 2017)]
154 alg.triggers_2018 = [trig.replace(
"HLT_",
"").
replace(
" || ",
"_OR_")
for trig
in get_year_data(self.triggerChainsPerYear, 2018)]
156 if not (alg.triggers_2015
and alg.triggers_2016):
157 raise ValueError(
'TriggerAnalysisConfig: you must provide a set of triggers for the years 2015 and 2016!')
159 if not alg.triggers_2015:
160 raise ValueError(
'TriggerAnalysisConfig: you must provide a set of triggers for the year 2015!')
162 if not alg.triggers_2016:
163 raise ValueError(
'TriggerAnalysisConfig: you must provide a set of triggers for the year 2016!')
165 if not alg.triggers_2017:
166 raise ValueError(
'TriggerAnalysisConfig: you must provide a set of triggers for the year 2017!')
168 if not alg.triggers_2018:
169 raise ValueError(
'TriggerAnalysisConfig: you must provide a set of triggers for the year 2018!')
171 alg.matchingTool =
'%s/%s' % ( matchingTool.getType(), matchingTool.getName() )
172 alg.isRun3Geo = config.geometry()
is LHCPeriod.Run3
173 alg.numberOfToys = self.numberOfToys
174 alg.scaleFactorDecoration =
'globalTriggerEffSF' + triggerSuffix + self.postfix +
'_%SYS%'
175 alg.matchingDecoration =
'globalTriggerMatch' + triggerSuffix + self.postfix +
'_%SYS%'
176 alg.eventDecisionOutputDecoration =
'globalTriggerMatch' + triggerSuffix + self.postfix +
'_dontsave_%SYS%'
177 alg.doMatchingOnly = config.dataType()
is DataType.Data
or noSF
178 alg.noFilter = self.noFilter
179 alg.electronID = self.electronID
180 alg.electronIsol = self.electronIsol
181 alg.photonIsol = self.photonIsol
182 alg.muonID = self.muonID
184 alg.electrons, alg.electronSelection = config.readNameAndSelection(self.electrons)
186 alg.muons, alg.muonSelection = config.readNameAndSelection(self.muons)
188 alg.photons, alg.photonSelection = config.readNameAndSelection(self.photons)
189 if not (self.electrons
or self.muons
or self.photons):
190 raise ValueError(
'TriggerAnalysisConfig: at least one object collection must be provided! (electrons, muons, photons)' )
192 if config.dataType()
is not DataType.Data
and not alg.doMatchingOnly:
193 config.addOutputVar(
'EventInfo', alg.scaleFactorDecoration,
'globalTriggerEffSF' + triggerSuffix + self.postfix)
194 config.addOutputVar(
'EventInfo', alg.matchingDecoration,
'globalTriggerMatch' + triggerSuffix + self.postfix, noSys=
False)