502 def makeAlgs (self, config) :
503
504 configFile = None
505 calibSeq = None
506 calibArea = None
507
508 jetCollectionName=self.jetCollection
509 if(self.jetCollection=="AnalysisJets") :
510 jetCollectionName="AntiKt4EMPFlowJets"
511 if(self.jetCollection=="AnalysisLargeRJets") :
512 jetCollectionName="AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"
513
514 if self.jetInput not in ["UFO"]:
515 raise ValueError("Invalid input type '{0}' for large-R jets!".format(self.jetInput) )
516
517 configFile = "JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_26Nov2024.config"
518 calibArea = "00-04-83"
519 if self.calibToolConfigFile is not None:
520 configFile = self.calibToolConfigFile
521
522 if config.dataType() is not DataType.Data:
523 calibSeq = "EtaJES_JMS"
524 elif config.dataType() is DataType.Data:
525 calibSeq = "EtaJES_JMS_Insitu"
526 if self.calibToolCalibSeq is not None:
527 calibSeq = self.calibToolCalibSeq
528
529 if self.calibToolCalibArea is not None:
530 calibArea = self.calibToolCalibArea
531
532 if not config.isPhyslite() or self.recalibratePhyslite:
533
534 calibToolName = 'JetCalibTool_' + jetCollectionName[:-4]
535 calibTool = config.createPublicTool( 'JetCalibrationTool', calibToolName )
536
537 calibTool.JetCollection = jetCollectionName[:-4]
538
539 if configFile is None:
540 raise ValueError(f'Unsupported: {self.jetInput=}, {config.dataType()=}')
541 calibTool.ConfigFile = configFile
542
543 if calibSeq is None:
544 raise ValueError(f'Unsupported: {self.jetInput=}, {config.dataType()=}')
545 calibTool.CalibSequence = calibSeq
546
547 if calibArea is not None:
548 calibTool.CalibArea = calibArea
549
550 calibTool.IsData = (config.dataType() is DataType.Data)
551
552 alg = config.createAlgorithm( 'CP::JetCalibrationAlg', 'JetCalibrationAlg' )
553 alg.calibrationTool = f'{calibTool.getType()}/{calibTool.getName()}'
554 alg.jets = config.readName(self.containerName)
555 alg.jetsOut = config.copyName(self.containerName)
556
557 if self.jetInput == "UFO" and config.dataType() is not DataType.Data:
558
559 alg = config.createAlgorithm( 'CP::JetFFSmearingAlg', 'JetFFSmearingAlg' )
560 self.createFFSmearingTool(alg, config)
561 alg.outOfValidity = 2
562 alg.outOfValidityDeco = 'outOfValidityJMR'
563 alg.jets = config.readName (self.containerName)
564 alg.jetsOut = config.copyName (self.containerName)
565 alg.preselection = config.getPreselection (self.containerName, '')
566
567 if self.minPt > 0 or self.maxPt > 0 or self.maxEta > 0 or self.maxRapidity > 0:
568
569 alg = config.createAlgorithm( 'CP::AsgSelectionAlg', 'JetPtEtaCutAlg' )
570 alg.selectionDecoration = 'selectPtEta,as_bits'
571 config.addPrivateTool( 'selectionTool', 'CP::AsgPtEtaSelectionTool' )
572 alg.selectionTool.minPt = self.minPt
573 alg.selectionTool.maxPt = self.maxPt
574 alg.selectionTool.maxEta = self.maxEta
575 alg.selectionTool.maxRapidity = self.maxRapidity
576 alg.particles = config.readName (self.containerName)
577 alg.preselection = config.getPreselection (self.containerName, '')
578 config.addSelection (self.containerName, '', alg.selectionDecoration,
579 preselection=True)
580
581 if self.minMass > 0 or self.maxMass > 0:
582
583 alg = config.createAlgorithm( 'CP::AsgSelectionAlg', 'JetMassCutAlg' )
584 alg.selectionDecoration = 'selectMass,as_bits'
585 config.addPrivateTool( 'selectionTool', 'CP::AsgMassSelectionTool' )
586 alg.selectionTool.minM = self.minMass
587 alg.selectionTool.maxM = self.maxMass
588 alg.particles = config.readName (self.containerName)
589 alg.preselection = config.getPreselection (self.containerName, '')
590 config.addSelection (self.containerName, '', alg.selectionDecoration,
591 preselection=True)
592
593 config.addOutputVar (self.containerName, 'm', 'm')
594
595
596
597
598
599@groupBlocks