396 selectionPostfix = self.selectionName
397 if selectionPostfix !=
'' and selectionPostfix[0] !=
'_' :
398 selectionPostfix =
'_' + selectionPostfix
400 postfix = self.postfix
402 postfix = self.selectionName
403 if postfix !=
'' and postfix[0] !=
'_' :
404 postfix =
'_' + postfix
406 if self.quality
is not None and self.quality
not in [
'Tight',
'Medium',
'Loose',
'VeryLoose',
'Baseline',
'BaselineForFakes'] :
407 raise ValueError (
"invalid tau quality: \"" + self.quality +
408 "\", allowed values are Tight, Medium, Loose, " +
409 "VeryLoose, Baseline, BaselineForFakes")
414 if config.dataType()
is not DataType.Data
and not self.
noEffSF:
415 log = logging.getLogger(
'TauJetSFConfig')
421 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
422 'TauEfficiencyCorrectionsAlgReco' )
423 config.addPrivateTool(
'efficiencyCorrectionsTool',
424 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
425 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [0]
426 alg.efficiencyCorrectionsTool.Campaign =
"mc23" if config.geometry()
is LHCPeriod.Run3
else "mc20"
427 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
428 alg.scaleFactorDecoration =
'tau_Reco_effSF' + selectionPostfix +
'_%SYS%'
429 alg.outOfValidity = 2
430 alg.outOfValidityDeco =
'bad_Reco_eff' + selectionPostfix
432 alg.preselection = config.getPreselection (self.
containerName, self.selectionName)
435 'Reco_effSF' + postfix)
436 sfList += [alg.scaleFactorDecoration]
439 campaign =
"mc23" if config.geometry()
is LHCPeriod.Run3
else "mc20"
442 if self.quality
not in (
'VeryLoose',
'Baseline',
'BaselineForFakes'):
444 if (
not self.useGNTau
or (self.useGNTau
and campaign ==
"mc23")):
446 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
447 'TauEfficiencyCorrectionsAlgID' )
448 config.addPrivateTool(
'efficiencyCorrectionsTool',
449 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
450 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [4]
453 {
"Loose": 11,
"Medium": 12,
"Tight": 13}
455 else {
"Loose": 7,
"Medium": 8,
"Tight": 9}
458 if not self.useGNTau
and self.manual_sel_rnnwp
is not None:
459 wp = self.manual_sel_rnnwp.capitalize()
460 if wp
not in jetIDLevels:
464 +
'". Allowed values are Loose, Medium, Tight'
467 alg.efficiencyCorrectionsTool.JetIDLevel = jetIDLevels[wp]
468 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
469 alg.efficiencyCorrectionsTool.Campaign = campaign
470 alg.efficiencyCorrectionsTool.useGNTau = self.useGNTau
471 alg.scaleFactorDecoration =
'tau_ID_effSF' + selectionPostfix +
'_%SYS%'
472 alg.outOfValidity = 2
473 alg.outOfValidityDeco =
'bad_ID_eff' + selectionPostfix
475 alg.preselection = config.getPreselection (self.
containerName, self.selectionName)
477 config.addOutputVar (self.
containerName, alg.scaleFactorDecoration,
478 'ID_effSF' + postfix)
479 sfList += [alg.scaleFactorDecoration]
484 if (
not self.useGNTau
or (self.useGNTau
and campaign ==
"mc23")):
486 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
487 'TauEfficiencyCorrectionsAlgEvetoFakeTau' )
488 config.addPrivateTool(
'efficiencyCorrectionsTool',
489 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
490 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [10]
492 alg.efficiencyCorrectionsTool.EleIDLevel = 2
495 alg.efficiencyCorrectionsTool.EleIDLevel = 2
497 alg.efficiencyCorrectionsTool.EleIDLevel = 3
499 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
500 alg.efficiencyCorrectionsTool.Campaign = campaign
501 alg.efficiencyCorrectionsTool.useGNTau = self.useGNTau
502 alg.scaleFactorDecoration =
'tau_EvetoFakeTau_effSF' + selectionPostfix +
'_%SYS%'
506 {
"Loose": 11,
"Medium": 12,
"Tight": 13}
508 else {
"Loose": 7,
"Medium": 8,
"Tight": 9}
511 if not self.useGNTau
and self.manual_sel_rnnwp
is not None:
512 wp = self.manual_sel_rnnwp.capitalize()
513 if wp
not in jetIDLevels:
517 +
'". Allowed values are Loose, Medium, Tight'
521 "eVeto SFs are not available for Tight WP -> fallback to Medium WP"
525 alg.efficiencyCorrectionsTool.JetIDLevel = jetIDLevels[wp]
526 alg.outOfValidity = 2
527 alg.outOfValidityDeco =
'bad_EvetoFakeTau_eff' + selectionPostfix
529 alg.preselection = config.getPreselection (self.
containerName, self.selectionName)
531 config.addOutputVar (self.
containerName, alg.scaleFactorDecoration,
532 'EvetoFakeTau_effSF' + postfix)
533 sfList += [alg.scaleFactorDecoration]
536 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
537 'TauEfficiencyCorrectionsAlgEvetoTrueTau' )
538 config.addPrivateTool(
'efficiencyCorrectionsTool',
539 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
540 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [8]
541 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
542 alg.efficiencyCorrectionsTool.Campaign =
"mc23" if config.geometry()
is LHCPeriod.Run3
else "mc20"
543 alg.scaleFactorDecoration =
'tau_EvetoTrueTau_effSF' + selectionPostfix +
'_%SYS%'
545 alg.efficiencyCorrectionsTool.EleIDLevel = 2
548 alg.efficiencyCorrectionsTool.EleIDLevel = 2
550 alg.efficiencyCorrectionsTool.EleIDLevel = 3
551 alg.outOfValidity = 2
552 alg.outOfValidityDeco =
'bad_EvetoTrueTau_eff' + selectionPostfix
554 alg.preselection = config.getPreselection (self.
containerName, self.selectionName)
556 config.addOutputVar (self.
containerName, alg.scaleFactorDecoration,
557 'EvetoTrueTau_effSF' + postfix)
558 sfList += [alg.scaleFactorDecoration]
561 alg = config.createAlgorithm(
'CP::AsgObjectScaleFactorAlg',
562 'TauCombinedEfficiencyScaleFactorAlg' )
564 alg.inScaleFactors = sfList
565 alg.outScaleFactor =
'effSF' + postfix +
'_%SYS%'