418 selectionPostfix = self.selectionName
419 if selectionPostfix !=
'' and selectionPostfix[0] !=
'_' :
420 selectionPostfix =
'_' + selectionPostfix
422 postfix = self.postfix
424 postfix = self.selectionName
425 if postfix !=
'' and postfix[0] !=
'_' :
426 postfix =
'_' + postfix
428 if self.quality
is not None and self.quality
not in [
'Tight',
'Medium',
'Loose',
'VeryLoose',
'Baseline',
'BaselineForFakes'] :
429 raise ValueError (f
"invalid tau quality: \"{self.quality}\", allowed values are Tight, Medium, Loose, "
430 "VeryLoose, Baseline, BaselineForFakes")
435 if config.dataType()
is not DataType.Data
and not self.
noEffSF:
436 log = logging.getLogger(
'TauJetSFConfig')
442 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
443 'TauEfficiencyCorrectionsAlgReco' )
444 config.addPrivateTool(
'efficiencyCorrectionsTool',
445 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
446 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [0]
447 alg.efficiencyCorrectionsTool.Campaign =
_campaign(config)
448 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
449 alg.scaleFactorDecoration =
'tau_Reco_effSF' + selectionPostfix +
'_%SYS%'
450 alg.outOfValidity = 2
451 alg.outOfValidityDeco =
'bad_Reco_eff' + selectionPostfix
453 alg.preselection = config.getPreselection (self.
containerName, self.selectionName)
456 'Reco_effSF' + postfix)
457 sfList += [alg.scaleFactorDecoration]
463 if self.quality
not in (
'VeryLoose',
'Baseline',
'BaselineForFakes'):
464 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
465 'TauEfficiencyCorrectionsAlgID' )
466 config.addPrivateTool(
'efficiencyCorrectionsTool',
467 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
468 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [4]
470 jetIDLevels = _GNTAU_JETID_LEVELS
if self.useGNTau
else _RNN_JETID_LEVELS
472 if not self.useGNTau
and self.manual_sel_rnnwp
is not None:
473 wp = self.manual_sel_rnnwp.capitalize()
474 if wp
not in jetIDLevels:
475 raise ValueError(f
'Invalid tauID: "{wp}". Allowed values are Loose, Medium, Tight')
477 alg.efficiencyCorrectionsTool.JetIDLevel = jetIDLevels[wp]
478 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
479 alg.efficiencyCorrectionsTool.Campaign = campaign
480 alg.efficiencyCorrectionsTool.useGNTau = self.useGNTau
481 alg.scaleFactorDecoration =
'tau_ID_effSF' + selectionPostfix +
'_%SYS%'
482 alg.outOfValidity = 2
483 alg.outOfValidityDeco =
'bad_ID_eff' + selectionPostfix
485 alg.preselection = config.getPreselection (self.
containerName, self.selectionName)
487 config.addOutputVar (self.
containerName, alg.scaleFactorDecoration,
488 'ID_effSF' + postfix)
489 sfList += [alg.scaleFactorDecoration]
494 if self.quality
not in (
'VeryLoose',
'Baseline',
'BaselineForFakes'):
496 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
497 'TauEfficiencyCorrectionsAlgEvetoFakeTau' )
498 config.addPrivateTool(
'efficiencyCorrectionsTool',
499 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
500 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [10]
503 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
504 alg.efficiencyCorrectionsTool.Campaign = campaign
505 alg.efficiencyCorrectionsTool.useGNTau = self.useGNTau
506 alg.scaleFactorDecoration =
'tau_EvetoFakeTau_effSF' + selectionPostfix +
'_%SYS%'
509 jetIDLevels = _GNTAU_JETID_LEVELS
if self.useGNTau
else _RNN_JETID_LEVELS
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:
514 raise ValueError(f
'Invalid tauID: "{wp}". Allowed values are Loose, Medium, Tight')
517 "eVeto SFs are not available for Tight WP -> fallback to Medium WP"
521 alg.efficiencyCorrectionsTool.JetIDLevel = jetIDLevels[wp]
522 alg.outOfValidity = 2
523 alg.outOfValidityDeco =
'bad_EvetoFakeTau_eff' + selectionPostfix
525 alg.preselection = config.getPreselection (self.
containerName, self.selectionName)
527 config.addOutputVar (self.
containerName, alg.scaleFactorDecoration,
528 'EvetoFakeTau_effSF' + postfix)
529 sfList += [alg.scaleFactorDecoration]
532 alg = config.createAlgorithm(
'CP::TauEfficiencyCorrectionsAlg',
533 'TauEfficiencyCorrectionsAlgEvetoTrueTau' )
534 config.addPrivateTool(
'efficiencyCorrectionsTool',
535 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
536 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [8]
537 alg.efficiencyCorrectionsTool.useFastSim = config.dataType()
is DataType.FastSim
538 alg.efficiencyCorrectionsTool.Campaign =
_campaign(config)
539 alg.scaleFactorDecoration =
'tau_EvetoTrueTau_effSF' + selectionPostfix +
'_%SYS%'
541 alg.outOfValidity = 2
542 alg.outOfValidityDeco =
'bad_EvetoTrueTau_eff' + selectionPostfix
544 alg.preselection = config.getPreselection (self.
containerName, self.selectionName)
546 config.addOutputVar (self.
containerName, alg.scaleFactorDecoration,
547 'EvetoTrueTau_effSF' + postfix)
548 sfList += [alg.scaleFactorDecoration]
551 alg = config.createAlgorithm(
'CP::AsgObjectScaleFactorAlg',
552 'TauCombinedEfficiencyScaleFactorAlg' )
554 alg.inScaleFactors = sfList
555 alg.outScaleFactor =
'effSF' + postfix +
'_%SYS%'