416 selectionPostfix = self.selectionName
417 if selectionPostfix !=
'' and selectionPostfix[0] !=
'_' :
418 selectionPostfix =
'_' + selectionPostfix
420 postfix = self.postfix
422 postfix = self.selectionName
423 if postfix !=
'' and postfix[0] !=
'_' :
424 postfix =
'_' + postfix
426 if self.quality
is not None and self.quality
not in [
'Tight',
'Medium',
'Loose',
'VeryLoose',
'Baseline',
'BaselineForFakes'] :
427 raise ValueError (f
"invalid tau quality: \"{self.quality}\", allowed values are Tight, Medium, Loose, "
428 "VeryLoose, Baseline, BaselineForFakes")
433 if config.dataType()
is not DataType.Data
and not self.
noEffSF:
434 log = logging.getLogger(
'TauJetSFConfig')
440 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
441 'TauEfficiencyCorrectionsAlgReco' )
442 config.addPrivateTool(
'efficiencyCorrectionsTool',
443 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
444 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [0]
445 alg.efficiencyCorrectionsTool.Campaign =
_campaign(config)
446 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
447 alg.scaleFactorDecoration =
'tau_Reco_effSF' + selectionPostfix +
'_%SYS%'
448 alg.outOfValidity = 2
449 alg.outOfValidityDeco =
'bad_Reco_eff' + selectionPostfix
451 alg.preselection = config.getPreselection (self.
containerName, self.selectionName)
454 'Reco_effSF' + postfix, auxType=
'float')
455 sfList += [alg.scaleFactorDecoration]
461 if self.quality
not in (
'VeryLoose',
'Baseline',
'BaselineForFakes'):
462 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
463 'TauEfficiencyCorrectionsAlgID' )
464 config.addPrivateTool(
'efficiencyCorrectionsTool',
465 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
466 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [4]
468 jetIDLevels = _GNTAU_JETID_LEVELS
if self.useGNTau
else _RNN_JETID_LEVELS
470 if not self.useGNTau
and self.manual_sel_rnnwp
is not None:
471 wp = self.manual_sel_rnnwp.capitalize()
472 if wp
not in jetIDLevels:
473 raise ValueError(f
'Invalid tauID: "{wp}". Allowed values are Loose, Medium, Tight')
475 alg.efficiencyCorrectionsTool.JetIDLevel = jetIDLevels[wp]
476 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
477 alg.efficiencyCorrectionsTool.Campaign = campaign
478 alg.efficiencyCorrectionsTool.useGNTau = self.useGNTau
479 alg.scaleFactorDecoration =
'tau_ID_effSF' + selectionPostfix +
'_%SYS%'
480 alg.outOfValidity = 2
481 alg.outOfValidityDeco =
'bad_ID_eff' + selectionPostfix
483 alg.preselection = config.getPreselection (self.
containerName, self.selectionName)
485 config.addOutputVar (self.
containerName, alg.scaleFactorDecoration,
486 'ID_effSF' + postfix, auxType=
'float')
487 sfList += [alg.scaleFactorDecoration]
492 if self.quality
not in (
'VeryLoose',
'Baseline',
'BaselineForFakes'):
494 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
495 'TauEfficiencyCorrectionsAlgEvetoFakeTau' )
496 config.addPrivateTool(
'efficiencyCorrectionsTool',
497 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
498 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [10]
501 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
502 alg.efficiencyCorrectionsTool.Campaign = campaign
503 alg.efficiencyCorrectionsTool.useGNTau = self.useGNTau
504 alg.scaleFactorDecoration =
'tau_EvetoFakeTau_effSF' + selectionPostfix +
'_%SYS%'
507 jetIDLevels = _GNTAU_JETID_LEVELS
if self.useGNTau
else _RNN_JETID_LEVELS
509 if not self.useGNTau
and self.manual_sel_rnnwp
is not None:
510 wp = self.manual_sel_rnnwp.capitalize()
511 if wp
not in jetIDLevels:
512 raise ValueError(f
'Invalid tauID: "{wp}". Allowed values are Loose, Medium, Tight')
515 "eVeto SFs are not available for Tight WP -> fallback to Medium WP"
519 alg.efficiencyCorrectionsTool.JetIDLevel = jetIDLevels[wp]
520 alg.outOfValidity = 2
521 alg.outOfValidityDeco =
'bad_EvetoFakeTau_eff' + selectionPostfix
523 alg.preselection = config.getPreselection (self.
containerName, self.selectionName)
525 config.addOutputVar (self.
containerName, alg.scaleFactorDecoration,
526 'EvetoFakeTau_effSF' + postfix, auxType=
'float')
527 sfList += [alg.scaleFactorDecoration]
530 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
531 'TauEfficiencyCorrectionsAlgEvetoTrueTau' )
532 config.addPrivateTool(
'efficiencyCorrectionsTool',
533 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
534 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [8]
535 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
536 alg.efficiencyCorrectionsTool.Campaign =
_campaign(config)
537 alg.scaleFactorDecoration =
'tau_EvetoTrueTau_effSF' + selectionPostfix +
'_%SYS%'
539 alg.outOfValidity = 2
540 alg.outOfValidityDeco =
'bad_EvetoTrueTau_eff' + selectionPostfix
542 alg.preselection = config.getPreselection (self.
containerName, self.selectionName)
544 config.addOutputVar (self.
containerName, alg.scaleFactorDecoration,
545 'EvetoTrueTau_effSF' + postfix, auxType=
'float')
546 sfList += [alg.scaleFactorDecoration]
549 alg = config.createAlgorithm(
'CP::AsgObjectScaleFactorAlg',
550 'TauCombinedEfficiencyScaleFactorAlg' )
552 alg.inScaleFactors = sfList
553 alg.outScaleFactor =
'effSF' + postfix +
'_%SYS%'
555 'effSF' + postfix, auxType=
'float')