145 def makeAlgs (self, config) :
147 selectionPostfix = self.selectionName
148 if selectionPostfix !=
'' and selectionPostfix[0] !=
'_' :
149 selectionPostfix =
'_' + selectionPostfix
151 postfix = self.postfix
153 postfix = self.selectionName
154 if postfix !=
'' and postfix[0] !=
'_' :
155 postfix =
'_' + postfix
158 nameFormat =
'TauAnalysisAlgorithms/tau_selection_gntau_{}_eleid.conf'
159 if not self.use_eVeto:
160 nameFormat =
'TauAnalysisAlgorithms/tau_selection_gntau_{}_noeleid.conf'
162 nameFormat =
'TauAnalysisAlgorithms/tau_selection_{}_eleid.conf'
163 if not self.use_eVeto:
164 nameFormat =
'TauAnalysisAlgorithms/tau_selection_{}_noeleid.conf'
166 if self.quality
not in [
'Tight',
'Medium',
'Loose',
'VeryLoose',
'Baseline',
'BaselineForFakes'] :
167 raise ValueError (
"invalid tau quality: \"" + self.quality +
168 "\", allowed values are Tight, Medium, Loose, " +
169 "VeryLoose, Baseline, BaselineForFakes")
170 inputfile = nameFormat.format(self.quality.lower())
173 alg = config.createAlgorithm(
'CP::AsgSelectionAlg',
'TauSelectionAlg' + postfix )
174 config.addPrivateTool(
'selectionTool',
'TauAnalysisTools::TauSelectionTool' )
175 alg.selectionTool.ConfigPath = inputfile
176 alg.selectionDecoration =
'selected_tau' + selectionPostfix +
',as_char'
177 alg.particles = config.readName (self.containerName)
178 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
179 config.addSelection (self.containerName, self.selectionName, alg.selectionDecoration,
180 preselection=self.addSelectionToPreselection)
185 if config.dataType()
is not DataType.Data
and not self.noEffSF
and not self.useGNTau:
191 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
192 'TauEfficiencyCorrectionsAlgReco' + postfix )
193 config.addPrivateTool(
'efficiencyCorrectionsTool',
194 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
195 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [0]
196 alg.efficiencyCorrectionsTool.Campaign =
"mc23" if config.geometry()
is LHCPeriod.Run3
else "mc20"
197 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
198 alg.scaleFactorDecoration =
'tau_Reco_effSF' + selectionPostfix +
'_%SYS%'
199 alg.outOfValidity = 2
200 alg.outOfValidityDeco =
'bad_Reco_eff' + selectionPostfix
201 alg.taus = config.readName (self.containerName)
202 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
203 if self.saveDetailedSF:
204 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
205 'Reco_effSF' + postfix)
206 sfList += [alg.scaleFactorDecoration]
209 if self.quality
not in (
'VeryLoose',
'Baseline',
'BaselineForFakes'):
211 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
212 'TauEfficiencyCorrectionsAlgID' + postfix )
213 config.addPrivateTool(
'efficiencyCorrectionsTool',
214 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
215 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [4]
216 if self.quality==
"Loose":
218 elif self.quality==
"Medium":
220 elif self.quality==
"Tight":
223 raise ValueError (
"invalid tauID: \"" + self.quality +
"\". Allowed values are loose, medium, tight")
225 alg.efficiencyCorrectionsTool.JetIDLevel = JetIDLevel
226 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
227 alg.efficiencyCorrectionsTool.Campaign =
"mc23" if config.geometry()
is LHCPeriod.Run3
else "mc20"
228 alg.scaleFactorDecoration =
'tau_ID_effSF' + selectionPostfix +
'_%SYS%'
229 alg.outOfValidity = 2
230 alg.outOfValidityDeco =
'bad_ID_eff' + selectionPostfix
231 alg.taus = config.readName (self.containerName)
232 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
233 if self.saveDetailedSF:
234 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
235 'ID_effSF' + postfix)
236 sfList += [alg.scaleFactorDecoration]
242 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
243 'TauEfficiencyCorrectionsAlgEvetoFakeTau' + postfix )
244 config.addPrivateTool(
'efficiencyCorrectionsTool',
245 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
247 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [10]
249 alg.efficiencyCorrectionsTool.EleIDLevel = 2
250 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
251 alg.efficiencyCorrectionsTool.Campaign =
"mc23" if config.geometry()
is LHCPeriod.Run3
else "mc20"
252 alg.scaleFactorDecoration =
'tau_EvetoFakeTau_effSF' + selectionPostfix +
'_%SYS%'
253 alg.outOfValidity = 2
254 alg.outOfValidityDeco =
'bad_EvetoFakeTau_eff' + selectionPostfix
255 alg.taus = config.readName (self.containerName)
256 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
257 if self.saveDetailedSF:
258 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
259 'EvetoFakeTau_effSF' + postfix)
260 sfList += [alg.scaleFactorDecoration]
263 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
264 'TauEfficiencyCorrectionsAlgEvetoTrueTau' + postfix )
265 config.addPrivateTool(
'efficiencyCorrectionsTool',
266 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
268 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [8]
269 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
270 alg.efficiencyCorrectionsTool.Campaign =
"mc23" if config.geometry()
is LHCPeriod.Run3
else "mc20"
271 alg.scaleFactorDecoration =
'tau_EvetoTrueTau_effSF' + selectionPostfix +
'_%SYS%'
272 alg.outOfValidity = 2
273 alg.outOfValidityDeco =
'bad_EvetoTrueTau_eff' + selectionPostfix
274 alg.taus = config.readName (self.containerName)
275 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
276 if self.saveDetailedSF:
277 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
278 'EvetoTrueTau_effSF' + postfix)
279 sfList += [alg.scaleFactorDecoration]
281 if self.saveCombinedSF:
282 alg = config.createAlgorithm(
'CP::AsgObjectScaleFactorAlg',
283 'TauCombinedEfficiencyScaleFactorAlg' + postfix )
284 alg.particles = config.readName (self.containerName)
285 alg.inScaleFactors = sfList
286 alg.outScaleFactor =
'effSF' + postfix +
'_%SYS%'
287 config.addOutputVar (self.containerName, alg.outScaleFactor,