516 def makeAlgs (self, config) :
517
518
519 if config.geometry() is LHCPeriod.Run1:
520 raise ValueError ("Can't set up the PhotonWorkingPointConfig with %s, there must be something wrong!" % config.geometry().value)
521
522 if self.forceFullSimConfigForID:
523 warnings.warn_explicit(
524 "You are running PhotonWorkingPointConfig forcing"
525 " full sim config for ID."
526 " This is only intended to be used for testing purposes.",
527 TestingOnlyWarning, filename='', lineno=0)
528
529 if self.forceFullSimConfigForIso:
530 warnings.warn_explicit(
531 "You are running PhotonWorkingPointConfig forcing"
532 " full sim config for Iso."
533 " This is only intended to be used for testing purposes.",
534 TestingOnlyWarning, filename='', lineno=0)
535
536 postfix = self.postfix
537 if postfix is None :
538 postfix = self.selectionName
539 if postfix != '' and postfix[0] != '_' :
540 postfix = '_' + postfix
541
542 sfList = []
543
544 if config.dataType() is not DataType.Data and not self.noEffSFForID:
545 alg = config.createAlgorithm( 'CP::PhotonEfficiencyCorrectionAlg',
546 'PhotonEfficiencyCorrectionAlgID' )
547 config.addPrivateTool( 'efficiencyCorrectionTool',
548 'AsgPhotonEfficiencyCorrectionTool' )
549 alg.scaleFactorDecoration = 'ph_id_effSF' + postfix + '_%SYS%'
550 if config.dataType() is DataType.FastSim:
551 alg.efficiencyCorrectionTool.ForceDataType = (
552 PATCore.ParticleDataType.Full if self.forceFullSimConfigForID else
553 PATCore.ParticleDataType.Fast)
554 elif config.dataType() is DataType.FullSim:
555 alg.efficiencyCorrectionTool.ForceDataType = \
556 PATCore.ParticleDataType.Full
557 if config.geometry() >= LHCPeriod.Run2:
558 alg.efficiencyCorrectionTool.MapFilePath = 'PhotonEfficiencyCorrection/2015_2025/rel22.2/2026_Run3Consolidated_Recommendation_v1/map0.txt'
559 alg.outOfValidity = 2
560 alg.outOfValidityDeco = 'ph_id_bad_eff' + postfix
561 alg.photons = config.readName (self.containerName)
562 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
563 if self.saveDetailedSF:
564 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
565 'id_effSF' + postfix)
566 sfList += [alg.scaleFactorDecoration]
567
568
569 if config.dataType() is not DataType.Data and self.isolationWP != 'NonIso' and not self.noEffSFForIso:
570 alg = config.createAlgorithm( 'CP::PhotonEfficiencyCorrectionAlg',
571 'PhotonEfficiencyCorrectionAlgIsol' )
572 config.addPrivateTool( 'efficiencyCorrectionTool',
573 'AsgPhotonEfficiencyCorrectionTool' )
574 alg.scaleFactorDecoration = 'ph_isol_effSF' + postfix + '_%SYS%'
575 if config.dataType() is DataType.FastSim:
576 alg.efficiencyCorrectionTool.ForceDataType = (
577 PATCore.ParticleDataType.Full if self.forceFullSimConfigForIso else
578 PATCore.ParticleDataType.Fast)
579 elif config.dataType() is DataType.FullSim:
580 alg.efficiencyCorrectionTool.ForceDataType = \
581 PATCore.ParticleDataType.Full
582 alg.efficiencyCorrectionTool.IsoKey = self.isolationWP.
replace(
"FixedCut",
"")
583 if config.geometry() >= LHCPeriod.Run2:
584 alg.efficiencyCorrectionTool.MapFilePath = 'PhotonEfficiencyCorrection/2015_2025/rel22.2/2022_Summer_Prerecom_v1/map1.txt'
585 alg.outOfValidity = 2
586 alg.outOfValidityDeco = 'ph_isol_bad_eff' + postfix
587 alg.photons = config.readName (self.containerName)
588 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
589 if self.saveDetailedSF:
590 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
591 'isol_effSF' + postfix)
592 sfList += [alg.scaleFactorDecoration]
593
594 doCombEffSF = not self.noEffSFForID or not self.noEffSFForIso
595 if config.dataType() is not DataType.Data and doCombEffSF and self.saveCombinedSF:
596 alg = config.createAlgorithm( 'CP::AsgObjectScaleFactorAlg',
597 'PhotonCombinedEfficiencyScaleFactorAlg' )
598 alg.particles = config.readName (self.containerName)
599 alg.inScaleFactors = sfList
600 alg.outScaleFactor = 'effSF' + postfix + '_%SYS%'
601 config.addOutputVar (self.containerName, alg.outScaleFactor, 'effSF' + postfix)
602
603
604@groupBlocks
std::string replace(std::string s, const std::string &s2, const std::string &s3)