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