257 def makeAlgs (self, config) :
258
259 jetCollectionName=config.originalName(self.containerName)
260 if(config.originalName(self.containerName)==
"AnalysisJets") :
261 jetCollectionName="AntiKt4EMPFlowJets"
262 if(config.originalName(self.containerName)==
"AnalysisLargeRJets") :
263 jetCollectionName="AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"
264
265
266 collection_pattern = re.compile(
267 r"AntiKt(\d+)(EMTopo|EMPFlow|LCTopo|TrackCaloCluster|UFO|Track|HI)(TrimmedPtFrac5SmallR20|CSSKSoftDropBeta100Zcut10)?Jets")
268 match = collection_pattern.match(jetCollectionName)
269 if not match:
270 raise ValueError(
271 "Jet collection {0} does not match expected pattern!".format(jetCollectionName) )
272 radius = int(match.group(1) )
273 if radius not in [2, 4, 6, 10]:
274 raise ValueError("Jet collection has an unsupported radius '{0}'!".format(radius) )
275
276 if (self.analysisJetSelection!= ''):
277 alg = config.createAlgorithm( 'CP::NJetDecoratorAlg', 'NJetDecoratorAlg' )
278 alg.jets = config.readName(self.containerName)
279 alg.jetSelection = self.analysisJetSelection
280 config.addOutputVar('EventInfo', 'Njet_%SYS%', 'Njet')
281
282
283 if (radius == 4):
284 alg = config.createAlgorithm( 'CP::JetUncertaintiesAlg', 'JetUncertaintiesAlg' )
285 self.createUncertaintyToolSmallRJets(alg, config, jetCollectionName, doPseudoData=( self.systematicsModelJER in ["Full","All"] ))
286 alg.jets = config.readName (self.containerName)
287 alg.jetsOut = config.copyName (self.containerName)
288 alg.preselection = config.getPreselection (self.containerName, '')
289
290
291 alg = config.createAlgorithm( 'CP::AsgEnergyDecoratorAlg', 'AsgEnergyDecoratorAlg' )
292 alg.particles = config.readName (self.containerName)
293
294 config.addOutputVar (self.containerName, 'e_%SYS%', 'e')
295
296 elif (radius == 10):
297 if self.jetInput == "UFO" and config.dataType() in [DataType.FullSim, DataType.FastSim]:
298 alg = config.createAlgorithm( 'CP::JetUncertaintiesAlg', 'JetUncertaintiesAlg' )
299 self.createUncertaintyToolLargeRJets(alg, config, jetCollectionName, doPseudoData=( self.systematicsModelJER in ["Full","All"] ))
300
301 alg.uncertaintiesTool.JetDefinition = jetCollectionName[:-4]
302
303
304 alg.outOfValidity = 2
305 alg.outOfValidityDeco = 'outOfValidity'
306
307 alg.jets = config.readName (self.containerName)
308 alg.jetsOut = config.copyName (self.containerName)
309 alg.preselection = config.getPreselection (self.containerName, '')
310
311 if self.jetInput != "UFO":
312 alg = config.createAlgorithm( 'CP::JetUncertaintiesAlg', 'JetUncertaintiesAlg' )
313
314
315 alg.outOfValidity = 2
316 alg.outOfValidityDeco = 'outOfValidity'
317 config.addPrivateTool( 'uncertaintiesTool', 'JetUncertaintiesTool' )
318
319 alg.uncertaintiesTool.JetDefinition = jetCollectionName[:-4]
320 alg.uncertaintiesTool.ConfigFile = \
321 "rel21/Moriond2018/R10_{0}Mass_all.config".format(self.largeRMass)
322 alg.uncertaintiesTool.MCType = "MC16a"
323 alg.uncertaintiesTool.IsData = (config.dataType() is DataType.Data)
324
325 alg.jets = config.readName (self.containerName)
326 alg.jetsOut = config.copyName (self.containerName)
327 alg.preselection = config.getPreselection (self.containerName, '')
328 config.addSelection (self.containerName, '', 'outOfValidity')
329