diff --git a/Control/AthenaCommon/python/CFElements.py b/Control/AthenaCommon/python/CFElements.py index 815c30237151f64d720de1d92b08416f5c0f50b9..c638273b3cb3c1d477862c608944f82eb50c1a95 100644 --- a/Control/AthenaCommon/python/CFElements.py +++ b/Control/AthenaCommon/python/CFElements.py @@ -21,8 +21,20 @@ def seqAND(name, subs=[]): seq += s return seq +def seqOR(name, subs=[]): + """ sequential OR sequencer, used when a barier needs to be set but all subs reached irresepectively of the decision """ + seq = AthSequencer( name ) + seq.ModeOR = True + seq.Sequential = True + seq.StopOverride = True + for s in subs: + seq += s + return seq + def stepSeq(name, filterAlg, rest): """ elementary HLT step sequencer, filterAlg is gating, rest is anything that needs to happe within the step """ stepReco = parOR(name+"_reco", rest) stepAnd = seqAND(name, [ filterAlg, stepReco ]) return stepAnd + + diff --git a/Trigger/TrigSteer/DecisionHandling/src/TriggerSummaryAlg.h b/Trigger/TrigSteer/DecisionHandling/src/TriggerSummaryAlg.h index a6bef5084b44f1e3716e6a220607d5d5c0c4468d..446e7204e63560ab47c4b28d701f9f56f53e2463 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/TriggerSummaryAlg.h +++ b/Trigger/TrigSteer/DecisionHandling/src/TriggerSummaryAlg.h @@ -31,8 +31,11 @@ class TriggerSummaryAlg : public ::AthReentrantAlgorithm { // "Chain names maping to counters. In the form of: name counter" }; SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer> m_l1decisionKey{ this, "L1Decision", "", "Partial decisions from the last stage of chains processing, they nay be missing from event to event"}; + + SG::ReadHandleKeyArray<TrigCompositeUtils::DecisionContainer> m_finalDecisionKeys{ this, "FinalDecisions", {}, "Object ontaining all the HLT input and outpu decision sets"}; + SG::WriteHandleKey<TrigCompositeUtils::DecisionContainer> m_summaryKey { this, "HLTSummary", "HLTSummary", "Output summary" }; // SG::WriteHandleKey m_hltResultKey{ this, "HLTResult", "", "Output HLT Result" }; diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py b/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py index bac3917e15c9d805d1fd9c23d56ab7676b117af1..2aaa6575f25ca3393463fc0ba2d50f79c701dea9 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py @@ -51,7 +51,7 @@ theFastCaloAlgo.OutputLevel=VERBOSE theFastCaloAlgo.ClustersName="L2CaloClusters" svcMgr.ToolSvc.TrigDataAccess.ApplyOffsetCorrection=False -from AthenaCommon.CFElements import parOR, seqAND, stepSeq +from AthenaCommon.CFElements import parOR, seqOR, seqAND, stepSeq from DecisionHandling.DecisionHandlingConf import RoRSeqFilter @@ -325,15 +325,24 @@ else: # CF construction + + step0 = parOR("step0", [ egammaCaloStep ] ) step1 = parOR("step1", [ egammaIDStep ] ) from DecisionHandling.DecisionHandlingConf import TriggerSummaryAlg -summary = TriggerSummaryAlg("TriggerSummaryAlg") +summary = TriggerSummaryAlg( "TriggerSummaryAlg" ) summary.L1Decision = "HLTChains" summary.FinalDecisions = [ "ElectronL2Decisions", "MuonL2Decisions" ] summary.OutputLevel = DEBUG steps = seqAND("HLTSteps", [ step0, step1, summary ] ) -topSequence += steps + +mon = TriggerSummaryAlg( "TriggerMonitoringAlg" ) +mon.L1Decision = "HLTChains" +mon.FinalDecisions = [ "ElectronL2Decisions", "MuonL2Decisions", "WhateverElse" ] +mon.OutputLevel = DEBUG + +hltTop = seqOR( "hltTop", [ steps ] ) +topSequence += hltTop