274def TauReconstructionCfg(flags):
275
276 result = ComponentAccumulator()
277
278
279 from JetRecConfig.JetRecConfig import JetRecCfg
280 from JetRecConfig.StandardJetConstits import stdConstitDic as cst
281 from JetRecConfig.JetDefinition import JetDefinition
282 from JetRecConfig.StandardSmallRJets import flavourghosts, calibmods_noCut, standardmods, truthmods
283 minimalghosts = ["Track","MuonSegment","Truth"]
284
285
286 if flags.Tau.TauRec.SeedJetCollection == "AntiKt4MLTopoJets":
287 from JetRecConfig.StandardSmallRJets import AntiKt4MLTopo
288 result.merge(JetRecCfg(flags, AntiKt4MLTopo))
289 if flags.Tau.TauRec.SeedJetCollection == "AntiKt4EMPFlowMLJets":
290 from JetRecConfig.StandardSmallRJets import AntiKt4EMPFlowML
291 result.merge(JetRecCfg(flags, AntiKt4EMPFlowML))
292 if flags.Tau.TauRec.SeedJetCollection == "AntiKt4EMPFlow10GeVCutTauSeedJets":
293 AntiKt4EMPFlow10GeVCutTauSeed = JetDefinition("AntiKt",0.4,cst.GPFlow,
294 infix = "10GeVCutTauSeed",
295 ghostdefs = minimalghosts+flavourghosts,
296 modifiers = calibmods_noCut+("Filter:1",)+truthmods+standardmods+("JetPtAssociation","CaloEnergiesClus"),
297 ptmin = 10000.,
298 lock = True)
299 result.merge(JetRecCfg(flags, AntiKt4EMPFlow10GeVCutTauSeed))
300 if flags.Tau.TauRec.SeedJetCollection == "AntiKt4EMPFlow5GeVCutTauSeedJets":
301 AntiKt4EMPFlow5GeVCutTauSeed = JetDefinition("AntiKt",0.4,cst.GPFlow,
302 infix = "5GeVCutTauSeed",
303 ghostdefs = minimalghosts+flavourghosts,
304 modifiers = calibmods_noCut+("Filter:1",)+truthmods+standardmods+("JetPtAssociation","CaloEnergiesClus"),
305 ptmin = 5000.,
306 lock = True)
307 result.merge(JetRecCfg(flags, AntiKt4EMPFlow5GeVCutTauSeed))
308 if flags.Tau.TauRec.SeedJetCollection == "AntiKt4EMPFlowNoPtCutTauSeedJets":
309 AntiKt4EMPFlowNoPtCutTauSeed = JetDefinition("AntiKt",0.4,cst.GPFlow,
310 infix = "NoPtCutTauSeed",
311 ghostdefs = minimalghosts+flavourghosts,
312 modifiers = calibmods_noCut+("Filter:1",)+truthmods+standardmods+("JetPtAssociation","CaloEnergiesClus"),
313 ptmin = 1,
314 lock = True)
315 result.merge(JetRecCfg(flags, AntiKt4EMPFlowNoPtCutTauSeed))
316
317
318
319
320 flags_TauRec = flags.cloneAndReplace("Tau.ActiveConfig", "Tau.TauRec")
321
322 result.merge(TauBuildAlgCfg(flags_TauRec))
323
324 result.merge(TauCaloAlgCfg(flags_TauRec))
325
326 result.merge(TauRunnerAlgCfg(flags_TauRec))
327
328 if (flags.Output.doWriteESD or flags.Output.doWriteAOD):
329 result.merge(TauOutputCfg(flags_TauRec))
330
331 if (flags.Output.doWriteAOD and flags.Tau.ThinTaus):
332 result.merge(TauxAODthinngCfg(flags_TauRec))
333
334
335 if flags.Tau.doTauEleRMRec:
336
337 flags_TauEleRM = flags.cloneAndReplace("Tau.ActiveConfig", "Tau.TauEleRM")
338
339 result.merge(TauElecSubtractAlgCfg(flags_TauEleRM))
340
341
342 from JetRecConfig.JetRecConfig import JetRecCfg
343 if 'PFlow' in flags.Tau.TauRec.SeedJetCollection:
344 from JetRecConfig.JetRecConfig import JetRecCfg
345 from JetRecConfig.StandardSmallRJets import AntiKt4EMPFlow_tauSeedEleRM
346 result.merge( JetRecCfg(flags_TauEleRM,AntiKt4EMPFlow_tauSeedEleRM ))
347 else:
348 from JetRecConfig.StandardSmallRJets import AntiKt4LCTopo
349 AntiKt4LCTopo_EleRM = AntiKt4LCTopo.clone(suffix="_EleRM")
350 AntiKt4LCTopo_EleRM.inputdef.name = flags_TauEleRM.Tau.ActiveConfig.LCTopoOrigin_EleRM
351 AntiKt4LCTopo_EleRM.inputdef.inputname = flags_TauEleRM.Tau.ActiveConfig.CaloCalTopoClusters_EleRM
352 AntiKt4LCTopo_EleRM.inputdef.containername = flags_TauEleRM.Tau.ActiveConfig.LCOriginTopoClusters_EleRM
353 AntiKt4LCTopo_EleRM.standardRecoMode = True
354 AntiKt4LCTopo_EleRM.context = "EleRM"
355 result.merge(JetRecCfg(flags_TauEleRM, AntiKt4LCTopo_EleRM))
356
357 result.merge(TauBuildAlgCfg(flags_TauEleRM))
358
359 result.merge(TauCaloAlgCfg(flags_TauEleRM))
360
361 result.merge(TauRunnerAlgCfg(flags_TauEleRM))
362
363 if (flags.Output.doWriteESD or flags.Output.doWriteAOD):
364 result.merge(TauOutputCfg(flags_TauEleRM))
365
366 if (flags.Output.doWriteAOD and flags.Tau.ThinTaus):
367 result.merge(TauxAODthinngCfg(flags_TauEleRM))
368
369
370 if flags.DiTau.doDiTauRec:
371 from DiTauRec.DiTauBuilderConfig import DiTauBuilderCfg
372 result.merge(DiTauBuilderCfg(flags))
373
374 if (flags.Output.doWriteESD or flags.Output.doWriteAOD):
375 result.merge(DiTauOutputCfg(flags))
376
377 return result
378
379