464 def makeAlgs (self, config) :
465
466 log = logging.getLogger('PhotonWorkingPointEfficiencyConfig')
467
468
469 if config.geometry() is LHCPeriod.Run1:
470 raise ValueError ("Can't set up the PhotonWorkingPointConfig with %s, there must be something wrong!" % config.geometry().value)
471
472 if self.forceFullSimConfigForID:
473 log.warning("You are running PhotonWorkingPointConfig forcing full sim config for ID")
474 log.warning("This is only intended to be used for testing purposes")
475
476 if self.forceFullSimConfigForIso:
477 log.warning("You are running PhotonWorkingPointConfig forcing full sim config for Iso")
478 log.warning("This is only intended to be used for testing purposes")
479
480 postfix = self.postfix
481 if postfix is None :
482 postfix = self.selectionName
483 if postfix != '' and postfix[0] != '_' :
484 postfix = '_' + postfix
485
486 sfList = []
487
488 if config.dataType() is not DataType.Data and not self.noEffSFForID:
489 alg = config.createAlgorithm( 'CP::PhotonEfficiencyCorrectionAlg',
490 'PhotonEfficiencyCorrectionAlgID' )
491 config.addPrivateTool( 'efficiencyCorrectionTool',
492 'AsgPhotonEfficiencyCorrectionTool' )
493 alg.scaleFactorDecoration = 'ph_id_effSF' + postfix + '_%SYS%'
494 if config.dataType() is DataType.FastSim:
495 alg.efficiencyCorrectionTool.ForceDataType = (
496 PATCore.ParticleDataType.Full if self.forceFullSimConfigForID else
497 PATCore.ParticleDataType.Fast)
498 elif config.dataType() is DataType.FullSim:
499 alg.efficiencyCorrectionTool.ForceDataType = \
500 PATCore.ParticleDataType.Full
501 if config.geometry() >= LHCPeriod.Run2:
502 alg.efficiencyCorrectionTool.MapFilePath = 'PhotonEfficiencyCorrection/2015_2025/rel22.2/2024_FinalRun2_Recommendation_v1/map1.txt'
503 alg.outOfValidity = 2
504 alg.outOfValidityDeco = 'ph_id_bad_eff' + postfix
505 alg.photons = config.readName (self.containerName)
506 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
507 if self.saveDetailedSF:
508 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
509 'id_effSF' + postfix)
510 sfList += [alg.scaleFactorDecoration]
511
512
513 if config.dataType() is not DataType.Data and self.isolationWP != 'NonIso' and not self.noEffSFForIso:
514 alg = config.createAlgorithm( 'CP::PhotonEfficiencyCorrectionAlg',
515 'PhotonEfficiencyCorrectionAlgIsol' )
516 config.addPrivateTool( 'efficiencyCorrectionTool',
517 'AsgPhotonEfficiencyCorrectionTool' )
518 alg.scaleFactorDecoration = 'ph_isol_effSF' + postfix + '_%SYS%'
519 if config.dataType() is DataType.FastSim:
520 alg.efficiencyCorrectionTool.ForceDataType = (
521 PATCore.ParticleDataType.Full if self.forceFullSimConfigForIso else
522 PATCore.ParticleDataType.Fast)
523 elif config.dataType() is DataType.FullSim:
524 alg.efficiencyCorrectionTool.ForceDataType = \
525 PATCore.ParticleDataType.Full
526 alg.efficiencyCorrectionTool.IsoKey = self.isolationWP.
replace(
"FixedCut",
"")
527 if config.geometry() >= LHCPeriod.Run2:
528 alg.efficiencyCorrectionTool.MapFilePath = 'PhotonEfficiencyCorrection/2015_2025/rel22.2/2022_Summer_Prerecom_v1/map1.txt'
529 alg.outOfValidity = 2
530 alg.outOfValidityDeco = 'ph_isol_bad_eff' + postfix
531 alg.photons = config.readName (self.containerName)
532 alg.preselection = config.getPreselection (self.containerName, self.selectionName)
533 if self.saveDetailedSF:
534 config.addOutputVar (self.containerName, alg.scaleFactorDecoration,
535 'isol_effSF' + postfix)
536 sfList += [alg.scaleFactorDecoration]
537
538 doCombEffSF = not self.noEffSFForID or not self.noEffSFForIso
539 if config.dataType() is not DataType.Data and doCombEffSF and self.saveCombinedSF:
540 alg = config.createAlgorithm( 'CP::AsgObjectScaleFactorAlg',
541 'PhotonCombinedEfficiencyScaleFactorAlg' )
542 alg.particles = config.readName (self.containerName)
543 alg.inScaleFactors = sfList
544 alg.outScaleFactor = 'effSF' + postfix + '_%SYS%'
545 config.addOutputVar (self.containerName, alg.outScaleFactor, 'effSF' + postfix)
546
547
548@groupBlocks
std::string replace(std::string s, const std::string &s2, const std::string &s3)