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 elif (radius == 10):
291 if self.jetInput == "UFO" and config.dataType() in [DataType.FullSim, DataType.FastSim]:
292 alg = config.createAlgorithm( 'CP::JetUncertaintiesAlg', 'JetUncertaintiesAlg' )
293 self.createUncertaintyToolLargeRJets(alg, config, jetCollectionName, doPseudoData=( self.systematicsModelJER in ["Full","All"] ))
294
295 alg.uncertaintiesTool.JetDefinition = jetCollectionName[:-4]
296
297
298 alg.outOfValidity = 2
299 alg.outOfValidityDeco = 'outOfValidity'
300
301 alg.jets = config.readName (self.containerName)
302 alg.jetsOut = config.copyName (self.containerName)
303 alg.preselection = config.getPreselection (self.containerName, '')
304
305 if self.jetInput != "UFO":
306 alg = config.createAlgorithm( 'CP::JetUncertaintiesAlg', 'JetUncertaintiesAlg' )
307
308
309 alg.outOfValidity = 2
310 alg.outOfValidityDeco = 'outOfValidity'
311 config.addPrivateTool( 'uncertaintiesTool', 'JetUncertaintiesTool' )
312
313 alg.uncertaintiesTool.JetDefinition = jetCollectionName[:-4]
314 alg.uncertaintiesTool.ConfigFile = \
315 "rel21/Moriond2018/R10_{0}Mass_all.config".format(self.largeRMass)
316 alg.uncertaintiesTool.MCType = "MC16a"
317 alg.uncertaintiesTool.IsData = (config.dataType() is DataType.Data)
318
319 alg.jets = config.readName (self.containerName)
320 alg.jetsOut = config.copyName (self.containerName)
321 alg.preselection = config.getPreselection (self.containerName, '')
322 config.addSelection (self.containerName, '', 'outOfValidity')