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