Esempio n. 1
0
    def runTest(self):
        destinationCA = ComponentAccumulator()
        destinationCA.addSequence(seqAND("dest"))

        sourceCA = ComponentAccumulator()
        sourceCA.addEventAlgo(TestAlgo("alg1"))
        sourceCA.addEventAlgo(TestAlgo("alg2"))
        sourceCA.addSequence(seqAND("innerSeq"))
        sourceCA.addEventAlgo(TestAlgo("alg3"), sequenceName="innerSeq")

        destinationCA.merge(sourceCA, sequenceName="dest")

        #destinationCA.merge( sourceCA )
        self.assertIsNotNone(
            findAlgorithm(destinationCA.getSequence("dest"), "alg1"),
            "Algorithm not placed in sub-sequence")
        self.assertIsNotNone(
            findSubSequence(destinationCA.getSequence(), "innerSeq"),
            "The sequence is not added")
        self.assertIsNotNone(
            findAlgorithm(destinationCA.getSequence("dest"), "alg3"),
            "Algorithm deep in thesource CA not placed in sub-sequence of destiantion CA"
        )
        destinationCA.wasMerged()
        sourceCA.wasMerged()
Esempio n. 2
0
 def test_sequencesAreAdded(self):
     self.assertIsNotNone(self.acc.getSequence("subSequence1"),
                          "Adding sub-sequence failed")
     self.assertIsNotNone(self.acc.getSequence("subSequence2"),
                          "Adding sub-sequence failed")
     self.assertIsNotNone(self.acc.getSequence("sub2Sequence1"),
                          "Adding sub-sequence failed")
     self.assertIsNotNone(
         findSubSequence(self.acc.getSequence("subSequence1"),
                         "sub2Sequence1"),
         "Adding sub-sequence done in a wrong place")
Esempio n. 3
0
 def test_algorithmsInNestedSequences(self):
     self.assertIsNotNone(
         findAlgorithm(self.acc.getSequence(), "NestedAlgo1"),
         "Algorithm added to nested sequence")
     self.assertIsNotNone(
         findAlgorithm(self.acc.getSequence(), "NestedAlgo1", 1) is None,
         "Algorithm mistakenly in top sequence")
     self.assertIsNotNone(
         findAlgorithm(
             findSubSequence(self.acc.getSequence(), "sub2Sequence1"),
             "NestedAlgo1", 1), "Algorithm not in right sequence")
Esempio n. 4
0
def generateJSON():
    __log.info("Generating HLT Menu JSON in the rec-ex-common job")
    from AthenaConfiguration.AllConfigFlags import ConfigFlags
    from TriggerMenuMT.HLTMenuConfig.Menu.TriggerConfigHLT import TriggerConfigHLT
    from AthenaCommon.AlgSequence import AlgSequence
    from AthenaCommon.CFElements import findSubSequence

    return __generateJSON( TriggerConfigHLT.dictsList(), 
                           TriggerConfigHLT.configsList(), 
                           findSubSequence(AlgSequence(), "HLTAllSteps"),
                           ConfigFlags.Trigger.triggerMenuSetup,
                           getHLTMenuFileName(ConfigFlags) )
Esempio n. 5
0
def makeHLTTree(newJO=False, triggerConfigHLT=None):
    """ creates the full HLT tree"""

    # Check if triggerConfigHLT exits, if yes, derive information from this
    # this will be in use once TrigUpgrade test has migrated to TriggerMenuMT completely

    # get topSequnece
    from AthenaCommon.AlgSequence import AlgSequence
    topSequence = AlgSequence()

    # find main HLT top sequence (already set up in runHLT_standalone)
    from AthenaCommon.CFElements import findSubSequence, findAlgorithm
    l1decoder = findAlgorithm(topSequence, "L1Decoder")

    # add the HLT steps Node
    steps = seqAND("HLTAllSteps")
    hltTop = findSubSequence(topSequence, "HLTTop")
    hltTop += steps

    hltEndSeq = parOR("HLTEndSeq")
    hltTop += hltEndSeq

    hltFinalizeSeq = seqAND("HLTFinalizeSeq")

    # make DF and CF tree from chains
    finalDecisions = decisionTreeFromChains(steps,
                                            triggerConfigHLT.configsList(),
                                            triggerConfigHLT.dictsList(),
                                            newJO)

    flatDecisions = []
    for step in finalDecisions:
        flatDecisions.extend(step)

    summary = makeSummary("Final", flatDecisions)
    hltEndSeq += summary

    # TODO - check we are not running things twice. Once here and once in TriggerConfig.py

    from TriggerJobOpts.TriggerConfig import collectHypos, collectFilters, collectViewMakers, collectDecisionObjects,\
        triggerMonitoringCfg, triggerSummaryCfg, triggerMergeViewsAndAddMissingEDMCfg, collectHypoDecisionObjects
    from AthenaConfiguration.AllConfigFlags import ConfigFlags

    from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable, appendCAtoAthena

    # Collections required to configure the algs below
    hypos = collectHypos(steps)
    filters = collectFilters(steps)
    viewMakers = collectViewMakers(steps)

    Configurable.configurableRun3Behavior = 1
    summaryAcc, summaryAlg = triggerSummaryCfg(ConfigFlags, hypos)
    Configurable.configurableRun3Behavior = 0
    # A) First we check if any chain accepted the event
    hltFinalizeSeq += conf2toConfigurable(summaryAlg)
    appendCAtoAthena(summaryAcc)

    # B) Then (if true), we run the accepted event algorithms.
    # Add any required algs to hltFinalizeSeq here

    # More collections required to configure the algs below
    decObj = collectDecisionObjects(hypos, filters, l1decoder, summaryAlg)
    decObjHypoOut = collectHypoDecisionObjects(hypos,
                                               inputs=False,
                                               outputs=True)

    Configurable.configurableRun3Behavior = 1
    monAcc, monAlg = triggerMonitoringCfg(ConfigFlags, hypos, filters,
                                          l1decoder)
    Configurable.configurableRun3Behavior = 0
    hltEndSeq += conf2toConfigurable(monAlg)
    appendCAtoAthena(monAcc)

    Configurable.configurableRun3Behavior = 1
    edmAlg = triggerMergeViewsAndAddMissingEDMCfg(['AOD', 'ESD'], hypos,
                                                  viewMakers, decObj,
                                                  decObjHypoOut)
    Configurable.configurableRun3Behavior = 0
    # C) Finally, we create the EDM output
    hltFinalizeSeq += conf2toConfigurable(edmAlg)

    hltEndSeq += hltFinalizeSeq

    # Test the configuration
    from TriggerMenuMT.HLTMenuConfig.Menu.CFValidation import testHLTTree
    testHLTTree(hltTop)
Esempio n. 6
0
    from JetTagCalibration.JetTagCalibConfig import JetTagCalibCfg
    alias = ["HLT_b->HLT_b,AntiKt4EMTopo"
             ]  #"HLT_bJets" is the name of the b-jet JetContainer
    condSeq += JetTagCalibCfg(ConfigFlags,
                              scheme="Trig",
                              TaggerList=ConfigFlags.BTagging.Run2TrigTaggers +
                              ConfigFlags.BTagging.Run3NewTrigTaggers,
                              NewChannel=alias)

#-------------------------------------------------------------
# Output configuration
#-------------------------------------------------------------
if opt.doWriteBS or opt.doWriteRDOTrigger:
    from TriggerJobOpts.TriggerConfig import collectHypos, collectFilters, collectDecisionObjects, collectHypoDecisionObjects, triggerOutputCfg
    from AthenaCommon.CFElements import findAlgorithm, findSubSequence
    hypos = collectHypos(findSubSequence(topSequence, "HLTAllSteps"))
    filters = collectFilters(findSubSequence(topSequence, "HLTAllSteps"))

    summaryMakerAlg = findAlgorithm(topSequence, "DecisionSummaryMakerAlg")
    l1decoder = findAlgorithm(topSequence, "L1Decoder")

    if l1decoder and summaryMakerAlg:
        decObj = collectDecisionObjects(hypos, filters, l1decoder,
                                        summaryMakerAlg)
        decObjHypoOut = collectHypoDecisionObjects(hypos,
                                                   inputs=False,
                                                   outputs=True)
        log.debug(
            "Decision Objects to write to output [hack method - should be replaced with triggerRunCfg()]"
        )
        log.debug(decObj)