601 runGhostMuonAssociation = None):
602 """Create a jet analysis algorithm sequence
603 The jet collection is interpreted and selects the correct function to call,
604 makeSmallRJetAnalysisConfig, makeRScanJetAnalysisConfig or
605 makeLargeRJetAnalysisConfig
606
607 Keyword arguments
608 jetCollection -- The jet container to run on.
609 """
610
611
612 btIndex = jetCollection.find('_BTagging')
613 if btIndex != -1:
614 jetCollection = jetCollection[:btIndex]
615
616 jetCollectionName=jetCollection
617
618 if(jetCollection=="AnalysisJets") :
619 jetCollectionName="AntiKt4EMPFlowJets"
620 if(jetCollection=="AnalysisLargeRJets") :
621 jetCollectionName="AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"
622
623
624 collection_pattern = re.compile(
625 r"AntiKt(\d+)(EMTopo|EMPFlow|LCTopo|TrackCaloCluster|UFO|Track|HI)(TrimmedPtFrac5SmallR20|CSSKSoftDropBeta100Zcut10)?Jets")
626 match = collection_pattern.match(jetCollectionName)
627 if not match:
628 raise ValueError(
629 "Jet collection {0} does not match expected pattern!".format(jetCollectionName) )
630 radius = int(match.group(1) )
631 if radius not in [2, 4, 6, 10]:
632 raise ValueError("Jet collection has an unsupported radius '{0}'!".format(radius) )
633 jetInput = match.group(2)
634
635 config = PreJetAnalysisConfig()
636 config.setOptionValue ('containerName', containerName)
637 config.setOptionValue ('jetCollection', jetCollection)
638 config.runOriginalObjectLink = (btIndex != -1)
639 config.setOptionValue ('runGhostMuonAssociation', runGhostMuonAssociation)
640 seq.append (config)
641
642 if radius == 4:
643 makeSmallRJetAnalysisConfig(seq, containerName,
644 jetCollection, jetInput=jetInput)
645 elif radius in [2, 6]:
646 makeRScanJetAnalysisConfig(seq, containerName,
647 jetCollection, jetInput=jetInput, radius=radius)
648 else:
649 trim = match.group(3)
650 if trim == "":
651 raise ValueError("Untrimmed large-R jets are not supported!")
652 makeLargeRJetAnalysisConfig(seq, containerName,
653 jetCollection, jetInput=jetInput)
654
655
656