515 def makeAlgs (self, config) :
521 jetCollectionName=self.jetCollection
522 if(self.jetCollection==
"AnalysisJets") :
523 jetCollectionName=
"AntiKt4EMPFlowJets"
524 if(self.jetCollection==
"AnalysisLargeRJets") :
525 jetCollectionName=
"AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"
527 if self.largeRMass
not in [
"Comb",
"Calo",
"TA"]:
528 raise ValueError(
"Invalid large-R mass defintion {0}!".
format(self.largeRMass) )
530 if self.jetInput
not in [
"LCTopo",
"TrackCaloCluster",
"UFO"]:
531 raise ValueError(
"Invalid input type '{0}' for large-R jets!".
format(self.jetInput) )
533 if self.jetInput ==
"TrackCaloCluster":
535 if self.largeRMass !=
"Calo":
536 raise ValueError(
"Invalid large-R TCC jet mass '{0}'!".
format(self.largeRMass) )
537 configFile =
"JES_MC16recommendation_FatJet_TCC_JMS_calo_30Oct2018.config"
538 if self.jetInput ==
"LCTopo":
540 if self.jetInput ==
"UFO":
541 configFile =
"JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_26Nov2024.config"
542 calibArea =
"00-04-83"
543 if self.calibToolConfigFile
is not None:
544 configFile = self.calibToolConfigFile
546 if self.jetInput ==
"TrackCaloCluster" or self.jetInput ==
"UFO" or config.dataType()
is DataType.FullSim:
547 calibSeq =
"EtaJES_JMS"
548 elif config.dataType()
is DataType.Data:
549 calibSeq =
"EtaJES_JMS_Insitu"
550 if self.calibToolCalibSeq
is not None:
551 calibSeq = self.calibToolCalibSeq
553 if self.calibToolCalibArea
is not None:
554 calibArea = self.calibToolCalibArea
556 if not config.isPhyslite()
or self.recalibratePhyslite:
558 alg = config.createAlgorithm(
'CP::JetCalibrationAlg',
'JetCalibrationAlg' )
559 config.addPrivateTool(
'calibrationTool',
'JetCalibrationTool' )
561 alg.calibrationTool.JetCollection = jetCollectionName[:-4]
563 if configFile
is None:
564 raise ValueError(f
'Unsupported: {self.jetInput=}, {config.dataType()=}')
565 alg.calibrationTool.ConfigFile = configFile
568 raise ValueError(f
'Unsupported: {self.jetInput=}, {config.dataType()=}')
569 alg.calibrationTool.CalibSequence = calibSeq
571 if calibArea
is not None:
572 alg.calibrationTool.CalibArea = calibArea
574 alg.calibrationTool.IsData = (config.dataType()
is DataType.Data)
575 alg.jets = config.readName(self.containerName)
577 if self.jetInput ==
"UFO" and config.dataType()
is not DataType.Data:
579 alg = config.createAlgorithm(
'CP::JetFFSmearingAlg',
'JetFFSmearingAlg' )
580 self.createFFSmearingTool(alg, config)
581 alg.outOfValidity = 2
582 alg.outOfValidityDeco =
'outOfValidityJMR'
583 alg.jets = config.readName (self.containerName)
584 alg.jetsOut = config.copyName (self.containerName)
585 alg.preselection = config.getPreselection (self.containerName,
'')
587 if self.minPt > 0
or self.maxPt > 0
or self.maxEta > 0
or self.maxRapidity > 0:
589 alg = config.createAlgorithm(
'CP::AsgSelectionAlg',
'JetPtEtaCutAlg' )
590 alg.selectionDecoration =
'selectPtEta,as_bits'
591 config.addPrivateTool(
'selectionTool',
'CP::AsgPtEtaSelectionTool' )
592 alg.selectionTool.minPt = self.minPt
593 alg.selectionTool.maxPt = self.maxPt
594 alg.selectionTool.maxEta = self.maxEta
595 alg.selectionTool.maxRapidity = self.maxRapidity
596 alg.particles = config.readName (self.containerName)
597 alg.preselection = config.getPreselection (self.containerName,
'')
598 config.addSelection (self.containerName,
'', alg.selectionDecoration,
601 if self.minMass > 0
or self.maxMass > 0:
603 alg = config.createAlgorithm(
'CP::AsgSelectionAlg',
'JetMassCutAlg' )
604 alg.selectionDecoration =
'selectMass,as_bits'
605 config.addPrivateTool(
'selectionTool',
'CP::AsgMassSelectionTool' )
606 alg.selectionTool.minM = self.minMass
607 alg.selectionTool.maxM = self.maxMass
608 alg.particles = config.readName (self.containerName)
609 alg.preselection = config.getPreselection (self.containerName,
'')
610 config.addSelection (self.containerName,
'', alg.selectionDecoration,
613 config.addOutputVar (self.containerName,
'm',
'm')