80 def makeAlgs (self, config) :
81
82
83 if config.isPhyslite() and self.jetCollection == 'AntiKt4EMPFlowJets' :
84 config.setSourceName (self.containerName, "AnalysisJets", originalName = self.jetCollection)
85 elif config.isPhyslite() and self.jetCollection == 'AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets' :
86 config.setSourceName (self.containerName, "AnalysisLargeRJets", originalName = self.jetCollection)
87 else :
88 config.setSourceName (self.containerName, self.jetCollection, originalName = self.jetCollection)
89
90
91 radius, jetInput, trim, hasBTag = _parseJetCollection(self.jetCollection)
92 config.setContainerMeta(self.containerName, 'jetRadius', radius)
93 config.setContainerMeta(self.containerName, 'jetInput', jetInput)
94 config.setContainerMeta(self.containerName, 'jetTrim', trim)
95 config.setContainerMeta(self.containerName, 'hasBTag', hasBTag)
96
97
98 if self.runOriginalObjectLink or hasBTag :
99 alg = config.createAlgorithm( 'CP::AsgOriginalObjectLinkAlg',
100 'JetOriginalObjectLinkAlg',
101 reentrant=True )
102 alg.baseContainerName = self.jetCollection
103 alg.particles = config.readName (self.containerName)
104 if config.wantCopy (self.containerName) :
105 alg.particlesOut = config.copyName (self.containerName)
106 alg.preselection = config.getPreselection (self.containerName, '')
107
108
109 if (self.runGhostMuonAssociation is None and not config.isPhyslite()) or \
110 (self.runGhostMuonAssociation is True):
111 alg = config.createAlgorithm( 'CP::JetGhostMuonAssociationAlg',
112 'JetGhostMuonAssociationAlg' )
113 alg.jets = config.readName (self.containerName)
114 if config.isPhyslite():
115 alg.muons = "AnalysisMuons"
116 if config.wantCopy (self.containerName) :
117 alg.jetsOut = config.copyName (self.containerName)
118 taggerName = "GN2HLv01" if config.geometry() >= LHCPeriod.Run4 else "GN2v01"
119 extraInputs = [
120 ( 'xAOD::JetContainer' , "StoreGateSvc+{baseName}.DFCommonJets_jetClean_LooseBad".format(baseName=self.jetCollection)),
121 ( 'xAOD::JetContainer' , "StoreGateSvc+{baseName}.DFCommonJets_jetClean_TightBad".format(baseName=self.jetCollection)),
122 ( 'xAOD::JetContainer' , "StoreGateSvc+{baseName}.{tagger}_pb".format(baseName=self.jetCollection, tagger=taggerName)),
123 ( 'xAOD::JetContainer' , "StoreGateSvc+{baseName}.{tagger}_pc".format(baseName=self.jetCollection, tagger=taggerName)),
124 ( 'xAOD::JetContainer' , "StoreGateSvc+{baseName}.{tagger}_ptau".format(baseName=self.jetCollection, tagger=taggerName)),
125 ( 'xAOD::JetContainer' , "StoreGateSvc+{baseName}.{tagger}_pu".format(baseName=self.jetCollection, tagger=taggerName))]
126 config.setExtraInputs (extraInputs)
127
128 if self.runTruthJetTagging and config.dataType() is not DataType.Data:
129
130 alg = config.createAlgorithm( 'CP::JetDecoratorAlg', 'JetPileupLabelAlg' )
131 config.addPrivateTool( 'decorator', 'JetPileupLabelingTool' )
132 alg.jets = config.readName (self.containerName)
133 alg.jetsOut = config.copyName (self.containerName)
134 alg.decorator.RecoJetContainer = alg.jetsOut.replace ('%SYS%', 'NOSYS')
135 alg.decorator.SuppressOutputDependence=True
136 if self.jetCollection == 'AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets' :
137 extraInputs = [
138 ( 'xAOD::JetContainer' , "StoreGateSvc+{baseName}.GN2Xv01_phbb".format(baseName= self.jetCollection)),
139 ( 'xAOD::JetContainer' , "StoreGateSvc+{baseName}.GN2Xv01_phcc".format(baseName= self.jetCollection)),
140 ( 'xAOD::JetContainer' , "StoreGateSvc+{baseName}.GN2Xv01_pqcd".format(baseName= self.jetCollection)),
141 ( 'xAOD::JetContainer' , "StoreGateSvc+{baseName}.GN2Xv01_ptop".format(baseName= self.jetCollection))]
142 config.setExtraInputs (extraInputs)
143
144
145 if config.wantCopy (self.containerName) :
146 alg = config.createAlgorithm( 'CP::AsgShallowCopyAlg', 'JetShallowCopyAlg' )
147 alg.input = config.readName (self.containerName)
148 alg.output = config.copyName (self.containerName)
149 alg.outputType = 'xAOD::JetContainer'
150 if self.jetCollection == 'AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets' :
151 alg.declareDecorations = ['GN2Xv01_phbb', 'GN2Xv01_phcc',
152 'GN2Xv01_pqcd', 'GN2Xv01_ptop']
153
154 config.addOutputVar (self.containerName, 'pt', 'pt')
155 config.addOutputVar (self.containerName, 'eta', 'eta', noSys=True)
156 config.addOutputVar (self.containerName, 'phi', 'phi', noSys=True)
157 config.addOutputVar (self.containerName, 'charge', 'charge', noSys=True, enabled=False)
158
159 if self.outputTruthLabelIDs and config.dataType() is not DataType.Data:
160 config.addOutputVar (self.containerName, 'HadronConeExclTruthLabelID', 'HadronConeExclTruthLabelID', noSys=True, auxType="int")
161 config.addOutputVar (self.containerName, 'PartonTruthLabelID', 'PartonTruthLabelID', noSys=True, auxType="int")
162
163
164