Exemple #1
0
def JetBuildAlgCfg(ConfigFlags, buildjetsname):
    buildcfg = ComponentAccumulator()

    # Create a sequence that holds a set of algorithms
    # -- mainly for understanding how chunks of the job
    #    relate to each other

    sequencename = "JetBuildSeq"
    buildcfg.addSequence(CompFactory.AthSequencer(sequencename))
    # Merge in config to get jet inputs
    inputcfg, pjcs = JetInputCfg(ConfigFlags)
    buildcfg.merge(inputcfg)

    # Create a merger to build the PseudoJetContainer for this specific jet collection
    mergepjalg = CompFactory.PseudoJetMerger(
        "pjmergealg_" + buildjetsname,
        InputPJContainers=pjcs,
        OutputContainer="PseudoJetMerged_" + buildjetsname)

    buildcfg.addEventAlgo(mergepjalg)

    # Create the JetClusterer, set some standard options
    jclust = CompFactory.JetClusterer("builder")
    jclust.JetAlgorithm = "AntiKt"
    jclust.JetRadius = 1.0
    jclust.PtMin = 10e3  # MeV
    jclust.InputPseudoJets = "PseudoJetMerged_" + buildjetsname
    jclust.JetInputType = 1  # Hardcoded "magic number" for now
    # See https://gitlab.cern.ch/atlas/athena/blob/master/Event/xAOD/xAODJet/xAODJet/JetContainerInfo.h
    # This should get its own dictionary.

    # Add a simple jet modifier to the JetRecAlg
    jclsmoms = CompFactory.JetClusterMomentsTool("clsmoms",
                                                 JetContainer=buildjetsname)

    # Create the JetRecAlg, configure it to use the builder
    # using constructor syntax instead
    # (equivalent to setting properties with "=")
    jra = CompFactory.JetRecAlg(
        "JRA_build",
        Provider=jclust,  # Single ToolHandle
        Modifiers=[jclsmoms],  # ToolHandleArray
        OutputContainer=buildjetsname)

    # Add the alg to the ComponentAccumulator in the named sequence
    buildcfg.addEventAlgo(jra, sequencename)
    return buildcfg
Exemple #2
0
def getJetRecAlg(jetname, jetdef, pjs, modlist):

    jclust = CompFactory.JetClusterer("builder")
    jclust.JetAlgorithm = jetdef.algorithm
    jclust.JetRadius = jetdef.radius
    jclust.PtMin = jetdef.ptmin
    jclust.InputPseudoJets = pjs
    jclust.GhostArea = 0.01  # In which cases do we not want areas?
    jclust.JetInputType = jetdef.inputdef.basetype

    from . import JetModConfig
    mods = []
    for moddef, modspec in modlist:
        mod = JetModConfig.getModifier(jetdef, moddef, modspec)
        mods.append(mod)

    jra = CompFactory.JetRecAlg("jetrecalg_" + jetname,
                                Provider=jclust,
                                Modifiers=mods,
                                OutputContainer=jetname)

    autoconfigureModifiers(jra.Modifiers, jetname)

    return jra