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