497 def makeAlgs (self, config) :
498
499 log = logging.getLogger('PhotonWorkingPointEfficiencyConfig')
500
501
502 if config.geometry() is LHCPeriod.Run1:
503 raise ValueError ("Can't set up the PhotonWorkingPointConfig with %s, there must be something wrong!" % config.geometry().value)
504
505 if self.forceFullSimConfigForID:
506 log.warning("You are running PhotonWorkingPointConfig forcing full sim config for ID")
507 log.warning("This is only intended to be used for testing purposes")
508
509 if self.forceFullSimConfigForIso:
510 log.warning("You are running PhotonWorkingPointConfig forcing full sim config for Iso")
511 log.warning("This is only intended to be used for testing purposes")
512
513 postfix = self.postfix
514 if postfix is None :
515 postfix = self.selectionName
516 if postfix != '' and postfix[0] != '_' :
517 postfix = '_' + postfix
518
519 sfList = []
520
521 if config.dataType() is not DataType.Data and not self.noEffSFForID:
522 alg = config.createAlgorithm( 'CP::PhotonEfficiencyCorrectionAlg',
523 'PhotonEfficiencyCorrectionAlgID' )
524 config.addPrivateTool( 'efficiencyCorrectionTool',
525 'AsgPhotonEfficiencyCorrectionTool' )
526 alg.scaleFactorDecoration = 'ph_id_effSF' + postfix + '_%SYS%'
527 if config.dataType() is DataType.FastSim:
528 alg.efficiencyCorrectionTool.ForceDataType = (
529 PATCore.ParticleDataType.Full if self.forceFullSimConfigForID else
530 PATCore.ParticleDataType.Fast)
531 elif config.dataType() is DataType.FullSim:
532 alg.efficiencyCorrectionTool.ForceDataType = \
533 PATCore.ParticleDataType.Full
534 if config.geometry() >= LHCPeriod.Run2:
535 alg.efficiencyCorrectionTool.MapFilePath = 'PhotonEfficiencyCorrection/2015_2025/rel22.2/2024_FinalRun2_Recommendation_v1/map1.txt'
536 alg.outOfValidity = 2
537 alg.outOfValidityDeco = 'ph_id_bad_eff' + postfix
538 alg.photons = config.readName (self.containerName)
539 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
540 if self.saveDetailedSF:
541 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
542 'id_effSF' + postfix)
543 sfList += [alg.scaleFactorDecoration]
544
545
546 if config.dataType() is not DataType.Data and self.isolationWP != 'NonIso' and not self.noEffSFForIso:
547 alg = config.createAlgorithm( 'CP::PhotonEfficiencyCorrectionAlg',
548 'PhotonEfficiencyCorrectionAlgIsol' )
549 config.addPrivateTool( 'efficiencyCorrectionTool',
550 'AsgPhotonEfficiencyCorrectionTool' )
551 alg.scaleFactorDecoration = 'ph_isol_effSF' + postfix + '_%SYS%'
552 if config.dataType() is DataType.FastSim:
553 alg.efficiencyCorrectionTool.ForceDataType = (
554 PATCore.ParticleDataType.Full if self.forceFullSimConfigForIso else
555 PATCore.ParticleDataType.Fast)
556 elif config.dataType() is DataType.FullSim:
557 alg.efficiencyCorrectionTool.ForceDataType = \
558 PATCore.ParticleDataType.Full
559 alg.efficiencyCorrectionTool.IsoKey = self.isolationWP.
replace(
"FixedCut",
"")
560 if config.geometry() >= LHCPeriod.Run2:
561 alg.efficiencyCorrectionTool.MapFilePath = 'PhotonEfficiencyCorrection/2015_2025/rel22.2/2022_Summer_Prerecom_v1/map1.txt'
562 alg.outOfValidity = 2
563 alg.outOfValidityDeco = 'ph_isol_bad_eff' + postfix
564 alg.photons = config.readName (self.containerName)
565 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
566 if self.saveDetailedSF:
567 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
568 'isol_effSF' + postfix)
569 sfList += [alg.scaleFactorDecoration]
570
571 doCombEffSF = not self.noEffSFForID or not self.noEffSFForIso
572 if config.dataType() is not DataType.Data and doCombEffSF and self.saveCombinedSF:
573 alg = config.createAlgorithm( 'CP::AsgObjectScaleFactorAlg',
574 'PhotonCombinedEfficiencyScaleFactorAlg' )
575 alg.particles = config.readName (self.containerName)
576 alg.inScaleFactors = sfList
577 alg.outScaleFactor = 'effSF' + postfix + '_%SYS%'
578 config.addOutputVar (self.containerName, alg.outScaleFactor, 'effSF' + postfix)
579
580
581@groupBlocks
std::string replace(std::string s, const std::string &s2, const std::string &s3)