Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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
Example #5
0
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
Example #6
0
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
Example #7
0
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
Example #8
0
# 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: " +
Example #9
0
                       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)
Example #10
0
# 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.
Example #11
0
# 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"]:
Example #12
0
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
Example #14
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