def scheduleCopyTruthParticles(): myname = "scheduleCopyTruthParticles: " from JetRec.JetRecStandardToolManager import jtm if not jtm.haveParticleJetTools: return from ParticleJetTools.ParticleJetToolsConf import CopyFlavorLabelTruthParticles from ParticleJetTools.ParticleJetToolsConf import CopyBosonTopLabelTruthParticles from ParticleJetTools.ParticleJetToolsConf import CopyTruthPartons from ParticleJetTools.CopyTruthParticlesAlg import CopyTruthParticlesAlg tools = [] for ptype in jetFlags.truthFlavorTags(): toolname = "CopyTruthTag" + ptype if toolname in jtm.tools: jetlog.info(myname + "Skipping previously-defined tool: " + toolname) jetlog.info(jtm.tools[toolname]) else: jetlog.info(myname + "Scheduling " + toolname) ptmin = 5000 if ptype == "Partons": ctp = CopyTruthPartons(toolname) elif ptype in ["WBosons", "ZBosons", "HBosons", "TQuarksFinal"]: ctp = CopyBosonTopLabelTruthParticles(toolname) ctp.ParticleType = ptype ptmin = 100000 else: ctp = CopyFlavorLabelTruthParticles(toolname) ctp.ParticleType = ptype ctp.OutputName = "TruthLabel" + ptype ctp.PtMin = ptmin jtm += ctp #theJob += CopyTruthParticlesAlg(ctp, toolname + "Alg") jetlog.info(ctp) tools.append(ctp) return tools
def addGhostAssociation(DerivationFrameworkJob): from JetRec.JetRecStandard import jtm #from JetSimTools.JetSimToolsConf import JetTruthParticleSelectorTool from JetRec.JetRecConf import PseudoJetGetter #from JetSimTools.JetSimToolsConf import TruthPseudoJetGetter #from ParticleJetTools.ParticleJetToolsConf import Analysis__JetQuarkLabel # Truth flavor tags. # for ptype in jetFlags.truthFlavorTags(): # jtm += PseudoJetGetter( # "gtruthget_" + ptype, # InputContainer = "TruthLabel" + ptype, # Label = "Ghost" + ptype, # OutputContainer = "PseudoJetGhost" + ptype, # SkipNegativeEnergy = True, # GhostScale = 1e-20 # ) flavorgetters1 = [] for ptype in jetFlags.truthFlavorTags(): flavorgetters1.append(getattr(jtm, "gtruthget_" + ptype)) jtm.gettersMap["lctopo"] += flavorgetters1 jtm.gettersMap["track"] += flavorgetters1 jtm.gettersMap["ztrack"] += flavorgetters1 jtm.gettersMap["pv0track"] += flavorgetters1
def addGhostAssociation(DerivationFrameworkJob): from JetRec.JetRecStandard import jtm # from JetSimTools.JetSimToolsConf import JetTruthParticleSelectorTool from JetRec.JetRecConf import PseudoJetGetter # from JetSimTools.JetSimToolsConf import TruthPseudoJetGetter # from ParticleJetTools.ParticleJetToolsConf import Analysis__JetQuarkLabel # Truth flavor tags. # for ptype in jetFlags.truthFlavorTags(): # jtm += PseudoJetGetter( # "gtruthget_" + ptype, # InputContainer = "TruthLabel" + ptype, # Label = "Ghost" + ptype, # OutputContainer = "PseudoJetGhost" + ptype, # SkipNegativeEnergy = True, # GhostScale = 1e-20 # ) flavorgetters1 = [] for ptype in jetFlags.truthFlavorTags(): flavorgetters1.append(getattr(jtm, "gtruthget_" + ptype)) jtm.gettersMap["lctopo"] += flavorgetters1 jtm.gettersMap["track"] += flavorgetters1 jtm.gettersMap["ztrack"] += flavorgetters1 jtm.gettersMap["pv0track"] += flavorgetters1
def scheduleCopyTruthParticles(): myname = "scheduleCopyTruthParticles: " from JetRec.JetRecStandardToolManager import jtm if not jtm.haveParticleJetTools: return from ParticleJetTools.ParticleJetToolsConf import CopyFlavorLabelTruthParticles from ParticleJetTools.ParticleJetToolsConf import CopyBosonTopLabelTruthParticles from ParticleJetTools.ParticleJetToolsConf import CopyTruthPartons from ParticleJetTools.CopyTruthParticlesAlg import CopyTruthParticlesAlg tools = [] for ptype in jetFlags.truthFlavorTags(): toolname = "CopyTruthTag" + ptype if toolname in jtm.tools: print myname + "Skipping previously-defined tool: " + toolname print jtm.tools[toolname] else: print myname + "Scheduling " + toolname ptmin = 5000 if ptype == "Partons": ctp = CopyTruthPartons(toolname) elif ptype in ["WBosons", "ZBosons", "HBosons", "TQuarksFinal"]: ctp = CopyBosonTopLabelTruthParticles(toolname) ctp.ParticleType = ptype ptmin = 100000 else: ctp = CopyFlavorLabelTruthParticles(toolname) ctp.ParticleType = ptype ctp.OutputName = "TruthLabel" + ptype ctp.PtMin = ptmin jtm += ctp #theJob += CopyTruthParticlesAlg(ctp, toolname + "Alg") print ctp tools.append( ctp ) return tools
def HITruthParticleCopy(): from JetRec.JetFlavorAlgs import scheduleCopyTruthParticles rtools = scheduleCopyTruthParticles() #following fixes oversight in schduleCopyTruthParticles for ptype in jetFlags.truthFlavorTags(): toolname = "CopyTruthTag" + ptype if toolname in jtm.tools and toolname not in rtools: rtools += [jtm.tools[toolname]] rtools += [jtm.truthpartcopy] #, jtm.truthpartcopywz ] return rtools
def scheduleCopyTruthParticles(theJob): myname = "scheduleCopyTruthParticles: " from ParticleJetTools.ParticleJetToolsConf import CopyTruthParticles for ptype in jetFlags.truthFlavorTags(): ctp = CopyTruthParticles("CopyTruthTag" + ptype + "Alg") print myname + "Scheduling " + ctp.name() ctp.OutputName = "TruthLabel" + ptype ctp.ParticleType = ptype ctp.PtMin = 50 theJob += ctp print ctp
def addGhostAssociation(DerivationFrameworkJob): from JetRec.JetRecStandard import jtm from JetRec.JetRecConf import PseudoJetGetter flavorgetters1 = [] for ptype in jetFlags.truthFlavorTags(): flavorgetters1.append(getattr(jtm, "gtruthget_" + ptype)) jtm.gettersMap["lctopo"] += flavorgetters1 jtm.gettersMap["emtopo"] += flavorgetters1 jtm.gettersMap["empflow"] += flavorgetters1 jtm.gettersMap["emcpflow"] += flavorgetters1 jtm.gettersMap["track"] += flavorgetters1 jtm.gettersMap["ztrack"] += flavorgetters1 jtm.gettersMap["pv0track"] += flavorgetters1
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration # JetFlavorAlgs.py # # David Adams # September 2014 from AthenaCommon import Logging jetlog = Logging.logging.getLogger('JetRec_jobOptions') # Import the jet reconstruction control flags. from JetRec.JetRecFlags import jetFlags jetlog.info(str(jetFlags.truthFlavorTags())) def scheduleCopyTruthParticles(): myname = "scheduleCopyTruthParticles: " from JetRec.JetRecStandardToolManager import jtm if not jtm.haveParticleJetTools: return from ParticleJetTools.ParticleJetToolsConf import CopyFlavorLabelTruthParticles from ParticleJetTools.ParticleJetToolsConf import CopyBosonTopLabelTruthParticles from ParticleJetTools.ParticleJetToolsConf import CopyTruthPartons from ParticleJetTools.CopyTruthParticlesAlg import CopyTruthParticlesAlg tools = [] for ptype in jetFlags.truthFlavorTags(): toolname = "CopyTruthTag" + ptype if toolname in jtm.tools: jetlog.info(myname + "Skipping previously-defined tool: " +
SkipNegativeEnergy = True, OutputContainer = "PseudoJetGhost" + HIJetFlags.TrackJetContainerName(), GhostScale = 1.e-20) HIgetters_ghost_track = [] HIgetters_common=[] if jetFlags.useMuonSegments(): HIgetters_common += [jtm.gmusegget] if jetFlags.useTracks(): HIgetters_ghost_track += [jtm.gakt4trackget_HI] if HIJetFlags.UseHITracks() : HIgetters_ghost_track += [jtm.gtrackget_HI] else: HIgetters_ghost_track += [jtm.gtrackget] if jetFlags.useTruth(): #HIgetters_common += [jtm.gtruthget] flavorgetters=[] for ptype in jetFlags.truthFlavorTags(): flavorgetters += [getattr(jtm, "gtruthget_" + ptype)] HIgetters_common += flavorgetters jtm.gettersMap['HI'] = [jtm.get_HI] jtm.gettersMap['HI'] += HIgetters_common jtm.gettersMap['HI'] += HIgetters_ghost_track jtm.gettersMap['HITrack'] = [] if HIJetFlags.UseHITracks() : jtm.gettersMap['HITrack'] += [jtm.trackget_HI] else : jtm.gettersMap['HITrack'] += [jtm.trackget] jtm.gettersMap['HITrack'] += HIgetters_common from JetRec.JetRecConf import JetFilterTool jetfil5=JetFilterTool("jetfil5", PtMin = 5*Units.GeV)
# Jet reco infrastructure. #-------------------------------------------------------------- # Jet pseudojet retriever. jtm += JetPseudojetRetriever("jpjretriever") # Jet constituent retriever. labs = [] if jetFlags.useTracks(): labs += ["Track"] labs += ["AntiKt3TrackJet", "AntiKt3TrackJet"] if jetFlags.useMuonSegments(): labs += ["MuonSegment",] if jetFlags.useTruth(): labs += ["Truth"] for lab in jetFlags.truthFlavorTags(): labs += [lab] jtm += JetConstituentsRetriever( "jconretriever", UsePseudojet = True, UseJetConstituents = True, PseudojetRetriever = jtm.jpjretriever, GhostLabels = labs, GhostScale = 1.e-20 ) #-------------------------------------------------------------- # Pseudojet builders. #-------------------------------------------------------------- # Clusters.
# JetFlavorAlgs.py # # David Adams # September 2014 # Import the jet reconstruction control flags. from JetRec.JetRecFlags import jetFlags print str(jetFlags.truthFlavorTags()) def scheduleCopyTruthParticles(): myname = "scheduleCopyTruthParticles: " from JetRec.JetRecStandardToolManager import jtm if not jtm.haveParticleJetTools: return from ParticleJetTools.ParticleJetToolsConf import CopyFlavorLabelTruthParticles from ParticleJetTools.ParticleJetToolsConf import CopyBosonTopLabelTruthParticles from ParticleJetTools.ParticleJetToolsConf import CopyTruthPartons from ParticleJetTools.CopyTruthParticlesAlg import CopyTruthParticlesAlg tools = [] for ptype in jetFlags.truthFlavorTags(): toolname = "CopyTruthTag" + ptype if toolname in jtm.tools: print myname + "Skipping previously-defined tool: " + toolname print jtm.tools[toolname] else: print myname + "Scheduling " + toolname ptmin = 5000 if ptype == "Partons": ctp = CopyTruthPartons(toolname) elif ptype in ["WBosons", "ZBosons", "HBosons", "TQuarksFinal"]:
jetFlags.useCaloQualityTool.lock() jetFlags.additionalTopoGetters.lock() jetFlags.truthFlavorTags.lock() jetFlags.skipTools.lock() # Display all flags used here. print myname + "jetFlags.useTruth: " + str(jetFlags.useTruth()) print myname + "jetFlags.useTopo: " + str(jetFlags.useTopo()) print myname + "jetFlags.useTracks: " + str(jetFlags.useTracks()) print myname + "jetFlags.useMuonSegments: " + str(jetFlags.useMuonSegments()) print myname + "jetFlags.useBTagging: " + str(jetFlags.useBTagging()) print myname + "jetFlags.useCaloQualityTool: " + str( jetFlags.useCaloQualityTool()) print myname + "jetFlags.additionalTopoGetters: " + str( jetFlags.additionalTopoGetters()) print myname + "jetFlags.truthFlavorTags: " + str(jetFlags.truthFlavorTags()) print myname + "jetFlags.skipTools: " + str(jetFlags.skipTools()) ######################################################### # Create standard tool manager. ######################################################### # Import the jet tool manager. from JetRec.JetToolSupport import JetToolManager # Global jet tool manager with standard definitions jtm = JetToolManager() # Pt thresholds in MeV jtm.ptminFinder = 2000 jtm.ptminFilter = 0
jetFlags.useMuonSegments.lock() jetFlags.useBTagging.lock() jetFlags.useCaloQualityTool.lock() jetFlags.additionalTopoGetters.lock() jetFlags.truthFlavorTags.lock() jetFlags.skipTools.lock() # Display all flags used here. print myname + "jetFlags.useTruth: " + str(jetFlags.useTruth()) print myname + "jetFlags.useTopo: " + str(jetFlags.useTopo()) print myname + "jetFlags.useTracks: " + str(jetFlags.useTracks()) print myname + "jetFlags.useMuonSegments: " + str(jetFlags.useMuonSegments()) print myname + "jetFlags.useBTagging: " + str(jetFlags.useBTagging()) print myname + "jetFlags.useCaloQualityTool: " + str(jetFlags.useCaloQualityTool()) print myname + "jetFlags.additionalTopoGetters: " + str(jetFlags.additionalTopoGetters()) print myname + "jetFlags.truthFlavorTags: " + str(jetFlags.truthFlavorTags()) print myname + "jetFlags.skipTools: " + str(jetFlags.skipTools()) ######################################################### # Create standard tool manager. ######################################################### # Import the jet tool manager. from JetRec.JetToolSupport import JetToolManager # Global jet tool manager with standard definitions jtm = JetToolManager() # Pt thresholds in MeV jtm.ptminFinder = 2000 jtm.ptminFilter = 0
def addTruthJetsEVNT(kernel=None, decorationDressing=None): # Ensure that we are running on something if kernel is None: from DerivationFrameworkCore.DerivationFrameworkMaster import DerivationFrameworkJob kernel = DerivationFrameworkJob # Add jet algorithms if they aren't there from JetRec.JetRecStandard import jtm from JetRec.JetRecConf import JetAlgorithm truth_modifiers = [ jtm.truthpartondr, jtm.partontruthlabel, jtm.jetdrlabeler, jtm.trackjetdrlabeler ] if not objKeyStore.isInInput("xAOD::JetContainer", "AntiKt4TruthJets") and not hasattr( kernel, 'jetalgAntiKt4Truth'): # Standard truth jets # To remove jet constituents add the modifier jtm.removeconstit from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets addStandardJets("AntiKt", 0.4, "Truth", 15000, mods=truth_modifiers, algseq=kernel, outputGroup="DFCommonMCTruthJets") if not objKeyStore.isInInput("xAOD::JetContainer", "AntiKt4TruthWZJets") and not hasattr( kernel, 'jetalgAntiKt4TruthWZ'): # WZ Truth Jets - handle non-dressed case from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets addStandardJets("AntiKt", 0.4, "TruthWZ", 15000, mods=truth_modifiers, algseq=kernel, outputGroup="DFCommonMCTruthJets") if not objKeyStore.isInInput( "xAOD::JetContainer", "AntiKt4TruthDressedWZJets") and decorationDressing is not None: # WZ Dressed Truth Jets - handle dressed case from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets addStandardJets("AntiKt", 0.4, "TruthDressedWZ", ptmin=15000, mods="truth_ungroomed", algseq=kernel, outputGroup="DFCommonMCTruthJets") if not objKeyStore.isInInput("xAOD::JetContainer", "AntiKt2TruthChargedJets"): # R=0.2 truth charged jets from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets addStandardJets("AntiKt", 0.2, "TruthCharged", 5000, mods=truth_modifiers, algseq=kernel, outputGroup="DFCommonMCTruthJets") if not objKeyStore.isInInput("xAOD::JetContainer", "AntiKt10TruthJets") and not hasattr( kernel, 'jetalgAntiKt10Truth'): # AntiKt2 truth charged jets ghost association from JetRec.JetRecConf import PseudoJetGetter if not 'gakt2truthchargedget' in jtm.tools: jtm += PseudoJetGetter( "gakt2truthchargedget", # give a unique name InputContainer="AntiKt2TruthChargedJets", # SG key Label= "GhostAntiKt2TruthChargedJets", # this is the name you'll use to retrieve associated ghosts OutputContainer="PseudoJetGhostAntiKt2TruthChargedJet", SkipNegativeEnergy=True, GhostScale= 1.e-20, # This makes the PseudoJet Ghosts, and thus the reco flow will treat them as so. ) trackjetgetters = [] trackjetgetters += [jtm.gakt2truthchargedget] truthgetters = [jtm.truthget] truthgetters += trackjetgetters flavorgetters = [] for ptype in jetFlags.truthFlavorTags(): flavorgetters += [getattr(jtm, "gtruthget_" + ptype)] truthgetters += flavorgetters jtm.gettersMap["truth"] = list(truthgetters) # NB! This line works together with the next block. Some care is required here! # If we build groomed jets, the jet code will automatically build ungroomed jets, so no need to add them separately #Large R ungroomed jets if objKeyStore.isInInput("xAOD::JetContainer", "AntiKt10TruthTrimmedPtFrac5SmallR20Jets"): from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets addStandardJets('AntiKt', 1.0, 'Truth', ptmin=50000, mods=truth_modifiers, algseq=kernel, outputGroup="DFCommonMCTruthJets") if not objKeyStore.isInInput( "xAOD::JetContainer", "AntiKt10TruthTrimmedPtFrac5SmallR20Jets") and not hasattr( kernel, 'jetalgAntiKt10TruthTrimmedPtFrac5SmallR20'): #Large R jets from DerivationFrameworkJetEtMiss.JetCommon import addTrimmedJets