523 def makeAlgs (self, config) :
529 jetCollectionName=self.jetCollection
530 if(self.jetCollection==
"AnalysisJets") :
531 jetCollectionName=
"AntiKt4EMPFlowJets"
532 if(self.jetCollection==
"AnalysisLargeRJets") :
533 jetCollectionName=
"AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"
535 if self.largeRMass
not in [
"Comb",
"Calo",
"TA"]:
536 raise ValueError(
"Invalid large-R mass defintion {0}!".
format(self.largeRMass) )
538 if self.jetInput
not in [
"LCTopo",
"TrackCaloCluster",
"UFO"]:
539 raise ValueError(
"Invalid input type '{0}' for large-R jets!".
format(self.jetInput) )
541 if self.jetInput ==
"TrackCaloCluster":
543 if self.largeRMass !=
"Calo":
544 raise ValueError(
"Invalid large-R TCC jet mass '{0}'!".
format(self.largeRMass) )
545 configFile =
"JES_MC16recommendation_FatJet_TCC_JMS_calo_30Oct2018.config"
546 if self.jetInput ==
"LCTopo":
548 if self.jetInput ==
"UFO":
549 configFile =
"JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_26Nov2024.config"
550 calibArea =
"00-04-83"
551 if self.calibToolConfigFile
is not None:
552 configFile = self.calibToolConfigFile
554 if self.jetInput ==
"TrackCaloCluster" or self.jetInput ==
"UFO" or config.dataType()
is DataType.FullSim:
555 calibSeq =
"EtaJES_JMS"
556 elif config.dataType()
is DataType.Data:
557 calibSeq =
"EtaJES_JMS_Insitu"
558 if self.calibToolCalibSeq
is not None:
559 calibSeq = self.calibToolCalibSeq
561 if self.calibToolCalibArea
is not None:
562 calibArea = self.calibToolCalibArea
564 if not config.isPhyslite()
or self.recalibratePhyslite:
566 alg = config.createAlgorithm(
'CP::JetCalibrationAlg',
'JetCalibrationAlg' )
567 config.addPrivateTool(
'calibrationTool',
'JetCalibrationTool' )
569 alg.calibrationTool.JetCollection = jetCollectionName[:-4]
571 if configFile
is None:
572 raise ValueError(f
'Unsupported: {self.jetInput=}, {config.dataType()=}')
573 alg.calibrationTool.ConfigFile = configFile
576 raise ValueError(f
'Unsupported: {self.jetInput=}, {config.dataType()=}')
577 alg.calibrationTool.CalibSequence = calibSeq
579 if calibArea
is not None:
580 alg.calibrationTool.CalibArea = calibArea
582 alg.calibrationTool.IsData = (config.dataType()
is DataType.Data)
583 alg.jets = config.readName(self.containerName)
585 if self.jetInput ==
"UFO" and config.dataType()
is not DataType.Data:
587 alg = config.createAlgorithm(
'CP::JetFFSmearingAlg',
'JetFFSmearingAlg' )
588 self.createFFSmearingTool(alg, config)
589 alg.outOfValidity = 2
590 alg.outOfValidityDeco =
'outOfValidityJMR'
591 alg.jets = config.readName (self.containerName)
592 alg.jetsOut = config.copyName (self.containerName)
593 alg.preselection = config.getPreselection (self.containerName,
'')
595 if self.minPt > 0
or self.maxPt > 0
or self.maxEta > 0
or self.maxRapidity > 0:
597 alg = config.createAlgorithm(
'CP::AsgSelectionAlg',
'JetPtEtaCutAlg' )
598 alg.selectionDecoration =
'selectPtEta,as_bits'
599 config.addPrivateTool(
'selectionTool',
'CP::AsgPtEtaSelectionTool' )
600 alg.selectionTool.minPt = self.minPt
601 alg.selectionTool.maxPt = self.maxPt
602 alg.selectionTool.maxEta = self.maxEta
603 alg.selectionTool.maxRapidity = self.maxRapidity
604 alg.particles = config.readName (self.containerName)
605 alg.preselection = config.getPreselection (self.containerName,
'')
606 config.addSelection (self.containerName,
'', alg.selectionDecoration,
609 if self.minMass > 0
or self.maxMass > 0:
611 alg = config.createAlgorithm(
'CP::AsgSelectionAlg',
'JetMassCutAlg' )
612 alg.selectionDecoration =
'selectMass,as_bits'
613 config.addPrivateTool(
'selectionTool',
'CP::AsgMassSelectionTool' )
614 alg.selectionTool.minM = self.minMass
615 alg.selectionTool.maxM = self.maxMass
616 alg.particles = config.readName (self.containerName)
617 alg.preselection = config.getPreselection (self.containerName,
'')
618 config.addSelection (self.containerName,
'', alg.selectionDecoration,
621 config.addOutputVar (self.containerName,
'm',
'm')