387 def makeAlgs (self, config) :
388
389 selectionPostfix = self.selectionName
390 if selectionPostfix != '' and selectionPostfix[0] != '_' :
391 selectionPostfix = '_' + selectionPostfix
392
393 postfix = self.postfix
394 if postfix is None :
395 postfix = self.selectionName
396 if postfix != '' and postfix[0] != '_' :
397 postfix = '_' + postfix
398
399 if self.quality is not None and self.quality not in ['Tight', 'Medium', 'Loose', 'VeryLoose', 'Baseline', 'BaselineForFakes'] :
400 raise ValueError ("invalid tau quality: \"" + self.quality +
401 "\", allowed values are Tight, Medium, Loose, " +
402 "VeryLoose, Baseline, BaselineForFakes")
403
404 sfList = []
405
406
407 if config.dataType() is not DataType.Data and not self.noEffSF:
408 log = logging.getLogger('TauJetSFConfig')
409
410
411
412
413
414 alg = config.createAlgorithm( 'CP::TauEfficiencyCorrectionsAlg',
415 'TauEfficiencyCorrectionsAlgReco' )
416 config.addPrivateTool( 'efficiencyCorrectionsTool',
417 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
418 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [0]
419 alg.efficiencyCorrectionsTool.Campaign = "mc23" if config.geometry() is LHCPeriod.Run3 else "mc20"
420 alg.efficiencyCorrectionsTool.useFastSim = config.dataType() is DataType.FastSim
421 alg.scaleFactorDecoration = 'tau_Reco_effSF' + selectionPostfix + '_%SYS%'
422 alg.outOfValidity = 2
423 alg.outOfValidityDeco = 'bad_Reco_eff' + selectionPostfix
424 alg.taus = config.readName (self.containerName)
425 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
426 if self.saveDetailedSF:
427 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
428 'Reco_effSF' + postfix)
429 sfList += [alg.scaleFactorDecoration]
430
431
432 if self.quality not in ('VeryLoose','Baseline','BaselineForFakes'):
433 if not self.useGNTau:
434
435 alg = config.createAlgorithm( 'CP::TauEfficiencyCorrectionsAlg',
436 'TauEfficiencyCorrectionsAlgID' )
437 config.addPrivateTool( 'efficiencyCorrectionsTool',
438 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
439 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [4]
440 if self.quality=="Loose" or self.manual_sel_rnnwp == "loose":
441 JetIDLevel = 7
442 elif self.quality=="Medium" or self.manual_sel_rnnwp == "medium":
443 JetIDLevel = 8
444 elif self.quality=="Tight" or self.manual_sel_rnnwp == "tight":
445 JetIDLevel = 9
446 else:
447 raise ValueError ("invalid tauID: \"" + self.quality + "\". Allowed values are loose, medium, tight")
448
449 alg.efficiencyCorrectionsTool.JetIDLevel = JetIDLevel
450 alg.efficiencyCorrectionsTool.useFastSim = config.dataType() is DataType.FastSim
451 alg.efficiencyCorrectionsTool.Campaign = "mc23" if config.geometry() is LHCPeriod.Run3 else "mc20"
452 alg.scaleFactorDecoration = 'tau_ID_effSF' + selectionPostfix + '_%SYS%'
453 alg.outOfValidity = 2
454 alg.outOfValidityDeco = 'bad_ID_eff' + selectionPostfix
455 alg.taus = config.readName (self.containerName)
456 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
457 if self.saveDetailedSF:
458 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
459 'ID_effSF' + postfix)
460 sfList += [alg.scaleFactorDecoration]
461
462
463 if self.use_eVeto:
464 if not self.useGNTau:
465
466 alg = config.createAlgorithm( 'CP::TauEfficiencyCorrectionsAlg',
467 'TauEfficiencyCorrectionsAlgEvetoFakeTau' )
468 config.addPrivateTool( 'efficiencyCorrectionsTool',
469 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
470 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [10]
471
472 alg.efficiencyCorrectionsTool.EleIDLevel = 2
473
474 if self.manual_sel_evetowp == "loose":
475 alg.efficiencyCorrectionsTool.EleIDLevel = 2
476 elif self.manual_sel_evetowp == "medium":
477 alg.efficiencyCorrectionsTool.EleIDLevel = 3
478
479 alg.efficiencyCorrectionsTool.useFastSim = config.dataType() is DataType.FastSim
480 alg.efficiencyCorrectionsTool.Campaign = "mc23" if config.geometry() is LHCPeriod.Run3 else "mc20"
481 alg.scaleFactorDecoration = 'tau_EvetoFakeTau_effSF' + selectionPostfix + '_%SYS%'
482
483 if self.quality=="Loose" or self.manual_sel_rnnwp == "loose":
484 JetIDLevel = 7
485 elif self.quality=="Medium" or self.manual_sel_rnnwp == "medium":
486 JetIDLevel = 8
487 elif self.quality=="Tight" or self.manual_sel_rnnwp == "tight":
488 log.warning("eVeto SFs are not available for Tight WP -> fallback to Medium WP")
489 JetIDLevel = 8
490 alg.efficiencyCorrectionsTool.JetIDLevel = JetIDLevel
491 alg.outOfValidity = 2
492 alg.outOfValidityDeco = 'bad_EvetoFakeTau_eff' + selectionPostfix
493 alg.taus = config.readName (self.containerName)
494 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
495 if self.saveDetailedSF:
496 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
497 'EvetoFakeTau_effSF' + postfix)
498 sfList += [alg.scaleFactorDecoration]
499
500
501 alg = config.createAlgorithm( 'CP::TauEfficiencyCorrectionsAlg',
502 'TauEfficiencyCorrectionsAlgEvetoTrueTau' )
503 config.addPrivateTool( 'efficiencyCorrectionsTool',
504 'TauAnalysisTools::TauEfficiencyCorrectionsTool' )
505 alg.efficiencyCorrectionsTool.EfficiencyCorrectionTypes = [8]
506 alg.efficiencyCorrectionsTool.useFastSim = config.dataType() is DataType.FastSim
507 alg.efficiencyCorrectionsTool.Campaign = "mc23" if config.geometry() is LHCPeriod.Run3 else "mc20"
508 alg.scaleFactorDecoration = 'tau_EvetoTrueTau_effSF' + selectionPostfix + '_%SYS%'
509
510 alg.efficiencyCorrectionsTool.EleIDLevel = 2
511
512 if self.manual_sel_evetowp == "loose":
513 alg.efficiencyCorrectionsTool.EleIDLevel = 2
514 elif self.manual_sel_evetowp == "medium":
515 alg.efficiencyCorrectionsTool.EleIDLevel = 3
516 alg.outOfValidity = 2
517 alg.outOfValidityDeco = 'bad_EvetoTrueTau_eff' + selectionPostfix
518 alg.taus = config.readName (self.containerName)
519 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
520 if self.saveDetailedSF:
521 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
522 'EvetoTrueTau_effSF' + postfix)
523 sfList += [alg.scaleFactorDecoration]
524
525 if self.saveCombinedSF:
526 alg = config.createAlgorithm( 'CP::AsgObjectScaleFactorAlg',
527 'TauCombinedEfficiencyScaleFactorAlg' )
528 alg.particles = config.readName (self.containerName)
529 alg.inScaleFactors = sfList
530 alg.outScaleFactor = 'effSF' + postfix + '_%SYS%'
531 config.addOutputVar (self.containerName, alg.outScaleFactor,
532 'effSF' + postfix)
533
534