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