diff --git a/Control/AthenaMonitoring/python/DefineHistogram.py b/Control/AthenaMonitoring/python/DefineHistogram.py new file mode 100644 index 0000000000000000000000000000000000000000..bb7e2993423696a1fa712ba50de6a238ef09e3e0 --- /dev/null +++ b/Control/AthenaMonitoring/python/DefineHistogram.py @@ -0,0 +1,25 @@ +def defineHistogram(varname, type='TH1F', path='EXPERT', + title='Unspecified_title_for_the_histogram_is_truly_annoying,_because_this_default_is_long;unspecified_label;unspecified_label', + xbins=100, xmin=0, xmax=1, + ybins=None, ymin=None, ymax=None, zmin=None, zmax=None, opt='', labels=None): + """ Generates the histogram definition string which is digestable by TrigGenericMonitoringTool. + + + Note that defaults are compleetly unreasonable. The tile is intentionally made annoying. + For histogras types supported and allowed paths have a look at TrigGenericMonitoringTool documentation. + """ + coded = "%s, %s, %s, %s, %d, %f, %f" % (path, type, varname, title, xbins, xmin, xmax) + if ybins is not None: + coded += ",%d, %f, %f" % (ybins, ymin, ymax) + if zmin is not None: + coded += ", %f, %f" % (zmin, zmax) + if ybins is None and ymin is not None: + coded += ", %f, %f" % (ymin, ymax) + if labels is not None: + labels = labels.strip() # remove spurious white-spaces + if len(labels)>0: + if labels[-1]!=':': labels += ':' # C++ parser expects at least one ":" + coded += ",%s " % labels + coded += ", %s" % opt + + return coded diff --git a/Trigger/TrigMonitoring/TrigMonitorBase/python/TrigGenericMonitoringToolConfig.py b/Trigger/TrigMonitoring/TrigMonitorBase/python/TrigGenericMonitoringToolConfig.py index a3ac8ec2222d8bcb32b5f8c00e035998d0ad8f87..ef91cf401263d354ce6b36cd79d7ae5e3b7d4e2b 100755 --- a/Trigger/TrigMonitoring/TrigMonitorBase/python/TrigGenericMonitoringToolConfig.py +++ b/Trigger/TrigMonitoring/TrigMonitorBase/python/TrigGenericMonitoringToolConfig.py @@ -19,32 +19,8 @@ else: as TrigGenericMonitoringTool log.info("Using thread-safe TrigGenericMonitoringTool") - -def defineHistogram(varname, type='TH1F', path='EXPERT', - title='Unspecified_title_for_the_histogram_is_truly_annoying,_because_this_default_is_long;unspecified_label;unspecified_label', - xbins=100, xmin=0, xmax=1, - ybins=None, ymin=None, ymax=None, zmin=None, zmax=None, opt='', labels=None): - """ Generates the histogram definition string which is digestable by TrigGenericMonitoringTool. - - - Note that defaults are compleetly unreasonable. The tile is intentionally made annoying. - For histogras types supported and allowed paths have a look at TrigGenericMonitoringTool documentation. - """ - coded = "%s, %s, %s, %s, %d, %f, %f" % (path, type, varname, title, xbins, xmin, xmax) - if ybins is not None: - coded += ",%d, %f, %f" % (ybins, ymin, ymax) - if zmin is not None: - coded += ", %f, %f" % (zmin, zmax) - if ybins is None and ymin is not None: - coded += ", %f, %f" % (ymin, ymax) - if labels is not None: - labels = labels.strip() # remove spurious white-spaces - if len(labels)>0: - if labels[-1]!=':': labels += ':' # C++ parser expects at least one ":" - coded += ",%s " % labels - coded += ", %s" % opt - - return coded +from AthenaMonitoring.DefineHistogram import defineHistogram as __defineHistogram +defineHistogram = __defineHistogram class TrigGenericMonitoringToolConfig(TrigGenericMonitoringTool): diff --git a/Trigger/TrigSteer/L1Decoder/CMakeLists.txt b/Trigger/TrigSteer/L1Decoder/CMakeLists.txt index 7711fd4b891f4b8550f7682403435dcec2f6816b..560d50baa503ddbae48d812599c90a21f352d657 100644 --- a/Trigger/TrigSteer/L1Decoder/CMakeLists.txt +++ b/Trigger/TrigSteer/L1Decoder/CMakeLists.txt @@ -52,6 +52,7 @@ atlas_add_component( L1Decoder L1DecoderLib ) +atlas_install_python_modules( python/*.py) # Install files from the package: atlas_install_headers( L1Decoder ) atlas_install_joboptions( share/*.py ) diff --git a/Trigger/TrigSteer/L1Decoder/python/L1DecoderMonitoring.py b/Trigger/TrigSteer/L1Decoder/python/L1DecoderMonitoring.py new file mode 100644 index 0000000000000000000000000000000000000000..b262ca91a19f26f27b22518441484b45d6193118 --- /dev/null +++ b/Trigger/TrigSteer/L1Decoder/python/L1DecoderMonitoring.py @@ -0,0 +1,12 @@ +from AthenaMonitoring.AthenaMonitoringConf import GenericMonitoringTool +from AthenaMonitoring.DefineHistogram import defineHistogram + + +def CTPUnpackingMonitoring(maxItems, maxChains): + tool = GenericMonitoringTool('CTPUnpackingMonitoring') + tool.HistogramsGroupName="L1Decoder"; + tool.Histograms = [defineHistogram('TAVItems', path='EXPERT', type='TH1F', title='Number of active L1 TAV items;N Items;N Events', + xbins=maxItems, xmin=0, xmax=maxItems), + defineHistogram('Chains', path='EXPERT', type='TH1F', title='Number of activated Chains;N Chains;N Events', + xbins=maxChains, xmin=0, xmax=maxChains) ] + return tool diff --git a/Trigger/TrigSteer/L1Decoder/share/decodeBS.py b/Trigger/TrigSteer/L1Decoder/share/decodeBS.py index 12ca54b270c2f47d2426bfb087993c9624bfd5a5..8ebd64b2d903c9bf1c592545b2fb0737213f8ab5 100755 --- a/Trigger/TrigSteer/L1Decoder/share/decodeBS.py +++ b/Trigger/TrigSteer/L1Decoder/share/decodeBS.py @@ -60,6 +60,11 @@ if not hasattr( svcMgr, "ByteStreamAddressProviderSvc" ): from ByteStreamCnvSvcBase.ByteStreamCnvSvcBaseConf import ByteStreamAddressProviderSvc svcMgr += ByteStreamAddressProviderSvc() +if not hasattr(svcMgr, 'THistSvc'): + from GaudiSvc.GaudiSvcConf import THistSvc + svcMgr += THistSvc() +svcMgr.THistSvc.Output = ["EXPERT DATAFILE='expert-monitoring.root', OPT='RECREATE'"] + from TrigConfigSvc.TrigConfigSvcConf import TrigConf__LVL1ConfigSvc l1svc = TrigConf__LVL1ConfigSvc("LVL1ConfigSvc") @@ -83,30 +88,21 @@ if nThreads >= 1: topSequence += SGInputLoader( OutputLevel=INFO, ShowEventDump=False ) topSequence.SGInputLoader.Load = [ ('ROIB::RoIBResult','RoIBResult') ] - -doL1Emulation=False +from L1Decoder.L1DecoderMonitoring import * from L1Decoder.L1DecoderConf import CTPUnpackingTool, EMRoIsUnpackingTool, L1Decoder, MURoIsUnpackingTool from L1Decoder.L1DecoderConf import CTPUnpackingEmulationTool, RoIsUnpackingEmulationTool l1Decoder = L1Decoder( OutputLevel=DEBUG ) -if doL1Emulation: - ctpUnpacker = CTPUnpackingEmulationTool( OutputLevel = DEBUG, ForceEnableAllChains=True ) -else: - ctpUnpacker = CTPUnpackingTool( OutputLevel = DEBUG, ForceEnableAllChains=True ) +ctpUnpacker = CTPUnpackingTool( OutputLevel = DEBUG, ForceEnableAllChains=True ) + l1Decoder.ctpUnpacker = ctpUnpacker +l1Decoder.ctpUnpacker.MonTool = CTPUnpackingMonitoring(512, 200) l1Decoder.ctpUnpacker.CTPToChainMapping = ["0:HLT_e3", "0:HLT_g5", "1:HLT_e7", "2:HLT_2e3", "15:HLT_mu6", "33:HLT_2mu6", "15:HLT_mu6idperf", "42:HLT_e15mu4"] # this are real IDs of L1_* items in pp_v5 menu -if doL1Emulation: - emUnpacker = RoIsUnpackingEmulationTool("EMRoIsUnpackingTool", OutputLevel=DEBUG ) -else: - emUnpacker = EMRoIsUnpackingTool( OutputLevel=DEBUG ) - +emUnpacker = EMRoIsUnpackingTool( OutputLevel=DEBUG ) emUnpacker.ThresholdToChainMapping = ["EM3 : HLT_e3", "EM3 : HLT_g5", "EM7 : HLT_e7", "EM15 : HLT_e15mu4" ] -if doL1Emulation: - muUnpacker = RoIsUnpackingEmulationTool("MURoIsUnpackingTool", OutputLevel=DEBUG ) -else: - muUnpacker = MURoIsUnpackingTool( OutputLevel=DEBUG ) +muUnpacker = MURoIsUnpackingTool( OutputLevel=DEBUG ) muUnpacker.ThresholdToChainMapping = ["MU6 : HLT_mu6", "MU6 : HLT_mu6idperf", "MU4 : HLT_e15mu4"] # do not know yet how to configure the services for it @@ -125,18 +121,6 @@ chainSeedingDumper.Decisions = "HLTChainsResult" topSequence += chainSeedingDumper - -# caloDecoder = L1CaloDecoder() # by default it is steered towards the RoIBResult of the name above -# caloDecoder.OutputLevel=VERBOSE -# topSequence += caloDecoder - -# #Dumper -# from ViewAlgs.ViewAlgsConf import DumpDecisions -# dumper = DumpDecisions("L1CaloDecisions") -# dumper.OutputLevel=VERBOSE -# topSequence += dumper - - #-------------------------------------------------------------- # Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL) #-------------------------------------------------------------- diff --git a/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.cxx b/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.cxx index ff1d559876a0a614eaf02c0d5897237bc5a7ad16..d15026af6fba21510c912480740446f2d83d58cd 100644 --- a/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.cxx +++ b/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.cxx @@ -11,20 +11,29 @@ using namespace HLT; CTPUnpackingTool::CTPUnpackingTool( const std::string& type, const std::string& name, const IInterface* parent ) - : AthAlgTool(type, name, parent) { + : AthAlgTool(type, name, parent), + m_monTool("GenericMonitoringTool/MonTool", this) { declareProperty("CTPToChainMapping", m_ctpToChainProperty, "Mapping of the form: '34:HLT_x', '35:HLT_y', ..., both CTP ID and chain may appear many times"); declareProperty("ForceEnableAllChains", m_forceEnable=false, "Enables all chains in each event, testing mode"); + declareProperty("MonTool", m_monTool=ToolHandle<GenericMonitoringTool>("", this), "Basic Monitoring"); } - CTPUnpackingTool::~CTPUnpackingTool() {} +StatusCode CTPUnpackingTool::initialize() { + if ( not m_monTool.name().empty() ) + CHECK( m_monTool.retrieve() ); + return decodeCTPToChainMapping(); +} + StatusCode CTPUnpackingTool::decode( const ROIB::RoIBResult& roib, HLT::IDVec& enabledChains ) const { - size_t numberPfActivatedBits= 0; - + using namespace Monitored; + auto nTAVItems = MonitoredScalar::declare("TAVItems", 0); + auto nChains = MonitoredScalar::declare("Chains", 0); + auto monitorit = MonitoredScope::declare(m_monTool, nTAVItems, nChains); auto tav = roib.cTPResult().TAV(); const size_t tavSize = tav.size(); @@ -34,19 +43,24 @@ StatusCode CTPUnpackingTool::decode( const ROIB::RoIBResult& roib, HLT::IDVec& const bool decision = ( tav[wordCounter].roIWord() & (1 << bitCounter) ) > 0; if ( decision == true or m_forceEnable ) { - if ( decision ) + if ( decision ) { + nTAVItems = nTAVItems + 1; ATH_MSG_DEBUG( "L1 item " << ctpIndex << " active, enabling chains"); - numberPfActivatedBits++; + } + auto itr = m_ctpToChain.find(ctpIndex); - if ( itr != m_ctpToChain.end() ) + if ( itr != m_ctpToChain.end() ) { enabledChains.insert( enabledChains.end(), itr->second.begin(), itr->second.end() ); + + } } } } + nChains = enabledChains.size(); for ( auto chain: enabledChains ) { ATH_MSG_DEBUG( "Enabling chain: " << chain ); } - if ( numberPfActivatedBits == 0 ) { + if ( nTAVItems == 0 ) { ATH_MSG_ERROR( "All CTP bits were disabled, this event shoudl not have shown here" ); return StatusCode::FAILURE; } diff --git a/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.h b/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.h index dffc7967c6478b43ef85355bb2e473cc0de57726..3c4f412affa6a37c4874f8b1c92eab713d3ac99b 100644 --- a/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.h +++ b/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.h @@ -9,6 +9,7 @@ #include "GaudiKernel/IAlgTool.h" #include "AthenaBaseComps/AthAlgTool.h" #include "DecisionHandling/HLTIdentifier.h" +#include "AthenaMonitoring/GenericMonitoringTool.h" #include "./ICTPUnpackingTool.h" @@ -17,6 +18,8 @@ namespace ROIB { } + + class CTPUnpackingTool: public AthAlgTool, virtual public ::ICTPUnpackingTool{ public: @@ -35,12 +38,12 @@ public: */ StatusCode decode(const ROIB::RoIBResult& roib, HLT::IDVec& enabledChains) const override; - StatusCode initialize() override { return decodeCTPToChainMapping(); } + StatusCode initialize() override; private: - + ToolHandle<GenericMonitoringTool> m_monTool; }; diff --git a/Trigger/TrigSteer/L1Decoder/src/FakeCTP.cxx b/Trigger/TrigSteer/L1Decoder/src/FakeCTP.cxx index fcb7fbf0c7d3f6fcdea3ccd096f9991c8abaaf6b..fffa8998f5268b8b455295a7e5020db35eb63206 100644 --- a/Trigger/TrigSteer/L1Decoder/src/FakeCTP.cxx +++ b/Trigger/TrigSteer/L1Decoder/src/FakeCTP.cxx @@ -49,6 +49,9 @@ StatusCode FakeCTP::execute() { m_decisions = CxxUtils::make_unique< xAOD::TrigCompositeContainer >(); m_decisionsAux = CxxUtils::make_unique< xAOD::TrigCompositeAuxContainer>(); m_decisions->setStore(m_decisionsAux.ptr()); + + + for ( const auto& chain : m_events[m_currentEvent] ) { ATH_MSG_DEBUG("Enabling chain " << TrigConf::HLTUtils::hash2string(chain, "chain")); diff --git a/Trigger/TrigSteer/L1Decoder/src/IRoIsUnpackingTool.h b/Trigger/TrigSteer/L1Decoder/src/IRoIsUnpackingTool.h index d402cac5839f5b18c73a862aef6644c0e7807c35..c561ac43e9e8105af7dd578edee7678417dfee08 100644 --- a/Trigger/TrigSteer/L1Decoder/src/IRoIsUnpackingTool.h +++ b/Trigger/TrigSteer/L1Decoder/src/IRoIsUnpackingTool.h @@ -52,6 +52,8 @@ protected: std::vector<std::string> m_thresholdToChainProperty; std::map<HLT::Identifier, HLT::IDVec> m_thresholdToChainMapping; + // ToolHandle<GenericMonitoringTool> m_monTool; + StatusCode decodeMapping(); void addChainsToDecision( HLT::Identifier thresholdId, TrigCompositeUtils::Decision* d, diff --git a/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt b/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt index 207226f2f1673b4e0f464a710af3bae039b46b20..50cef248d0e24208eed5fcf5d382a151fabea921 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt +++ b/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt @@ -58,5 +58,7 @@ atlas_add_test( caloRunData SCRIPT scripts/caloRunData.sh atlas_add_test( EmuL1DecodingTest SCRIPT scripts/EmuL1DecodingTest.sh) +atlas_add_test( DataL1DecodingTest SCRIPT scripts/DataL1DecodingTest.sh ) + atlas_install_joboptions( share/*.py ) atlas_install_python_modules( python/*.py ) diff --git a/Trigger/TrigValidation/TrigUpgradeTest/scripts/DataL1DecodingTest.sh b/Trigger/TrigValidation/TrigUpgradeTest/scripts/DataL1DecodingTest.sh new file mode 100755 index 0000000000000000000000000000000000000000..56c20b088502c5324c1c81615fe0f5105c5926cc --- /dev/null +++ b/Trigger/TrigValidation/TrigUpgradeTest/scripts/DataL1DecodingTest.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env sh + +get_files -xmls LVL1config_Physics_pp_v5.xml +ln -s /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data15_13TeV.00266904.physics_EnhancedBias.merge.RAW._lb0452._SFO-1._0001.1 input.data + +athena.py --threads=1 L1Decoder/decodeBS.py + +cat <<EOF > hasStat.C +void hasStat( const char* hname) { + + TH1* h = (TH1*)_file0->Get( hname ); + if ( h == 0 ) { + cout << "Missing histogram " << hname << "\n"; + exit (EXIT_FAILURE); + } + Long_t entries = h->GetEntries(); + if ( entries == 0 ) { + cout << "Histogram " << hname << " has ) entries \n"; + exit (EXIT_FAILURE); + } + cout << "Histogram " << hname << " has " << entries << " entries \n"; +} +EOF + + +root -b -q expert-monitoring.root 'hasStat.C("L1Decoder/TAVItems")' +root -b -q expert-monitoring.root 'hasStat.C("L1Decoder/Chains")' diff --git a/Trigger/TrigValidation/TrigUpgradeTest/scripts/EmuL1DecodingTest.sh b/Trigger/TrigValidation/TrigUpgradeTest/scripts/EmuL1DecodingTest.sh index e465237de8d3e80382cce9e298afee3febc60105..30f0f8b3de3db5f898e331b6c55ed8fbefb3fca4 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/scripts/EmuL1DecodingTest.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/scripts/EmuL1DecodingTest.sh @@ -1,6 +1,6 @@ #!/usr/bin/env sh -get_files -xmls LVL1config_Physics_pp_v5.xml +#get_files -xmls LVL1config_Physics_pp_v5.xml #get_files -data CTPEmulation.dat -ln -s /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data15_13TeV.00266904.physics_EnhancedBias.merge.RAW._lb0452._SFO-1._0001.1 input.data +#ln -s /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data15_13TeV.00266904.physics_EnhancedBias.merge.RAW._lb0452._SFO-1._0001.1 input.data athena.py --threads=1 TrigUpgradeTest/EmuL1DecodingTest.py diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuL1DecodingTest.py b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuL1DecodingTest.py index b0230b84c0a615cbefcd98f79a5a3a9bf4b6395a..53663aaff37398467e7c5d2b15cbe652cebbe932 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuL1DecodingTest.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuL1DecodingTest.py @@ -2,30 +2,13 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration # -# -# get_files LVL1config_Physics_pp_v5.xml -# ln -s /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data15_13TeV.00266904.physics_EnhancedBias.merge.RAW._lb0452._SFO-1._0001.1 input.data -# exact config for this data is: https://atlas-trigconf.cern.ch/run2/smkey/2142/l1key/1077/hltkey/765/ - import os.path -assert os.path.isfile('input.data'), 'No input file: see the JO to see how to get it' - -## @file L1Topo_ReadBS_test.py -## @brief Example job options file to read BS file to test a converter -## $Id: decodeBS.parallel.py 717359 2016-01-12 14:40:21Z bwynne $ -############################################################### -# -# This Job option: -# ---------------- -# 1. Read ByteStream test data file and decode the L1Topo part -# -#============================================================== ## basic job configuration import AthenaCommon.AtlasUnixStandardJob #import AthenaCommon.AtlasThreadedJob -include( "ByteStreamCnvSvc/BSEventStorageEventSelector_jobOptions.py" ) +#include( "ByteStreamCnvSvc/BSEventStorageEventSelector_jobOptions.py" ) ## get a handle on the ServiceManager from AthenaCommon.AppMgr import ServiceMgr as svcMgr @@ -46,79 +29,34 @@ if nThreads >= 1: from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() -# older file, has wrong ROD id: svcMgr.ByteStreamInputSvc.FullFileName = [ "/afs/cern.ch/user/m/mzinser/public/l1calo-event.sim"] -#svcMgr.ByteStreamInputSvc.FullFileName = [ "/afs/cern.ch/user/m/mzinser/public/InputSimon/Mode7/l1calo-event.sim" ] -svcMgr.ByteStreamInputSvc.FullFileName = [ "./input.data" ] -#svcMgr.ByteStreamInputSvc.FullFileName = [ "/afs/cern.ch/user/s/sgeorge/atlaspublic/L1TopoCnv/mergedsim._0001.data" ] - -svcMgr.ByteStreamInputSvc.ValidateEvent = True -svcMgr.EventSelector.ProcessBadEvent = True - - - -if not hasattr( svcMgr, "ByteStreamAddressProviderSvc" ): - from ByteStreamCnvSvcBase.ByteStreamCnvSvcBaseConf import ByteStreamAddressProviderSvc - svcMgr += ByteStreamAddressProviderSvc() - - -from TrigConfigSvc.TrigConfigSvcConf import TrigConf__LVL1ConfigSvc -l1svc = TrigConf__LVL1ConfigSvc("LVL1ConfigSvc") -l1svc.XMLMenuFile = "LVL1config_Physics_pp_v5.xml" -svcMgr += l1svc - - -# This is the list of proxies to set up so that retrieval attempt will trigger the BS conversion -svcMgr.ByteStreamAddressProviderSvc.TypeNames += [ - "ROIB::RoIBResult/RoIBResult" ] - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -# Load "user algorithm" top algorithms to be run, and the libraries that house them - - -if nThreads >= 1: - #Retrieve input data - from SGComps.SGCompsConf import SGInputLoader - topSequence += SGInputLoader( OutputLevel=INFO, ShowEventDump=False ) - topSequence.SGInputLoader.Load = [ ('ROIB::RoIBResult','RoIBResult') ] - - -doL1Emulation=True from L1Decoder.L1DecoderConf import CTPUnpackingTool, EMRoIsUnpackingTool, L1Decoder, MURoIsUnpackingTool from L1Decoder.L1DecoderConf import CTPUnpackingEmulationTool, RoIsUnpackingEmulationTool l1Decoder = L1Decoder( OutputLevel=DEBUG ) -if doL1Emulation: - data = {} - data['CTPEmulation'] = ['HLT_e3 HLT_g5 HLT_e7 HLT_2e3 HLT_mu6 HLT_2mu6 HLT_mu6idperf HLT_e15mu4'] - data['RoIEmulation'] = ['1.3,2.9,2704088841,EM3,EM7; 1.2,3.1,2972524297,EM3,EM7,EM10,EM15; -3.2,-2.0,3103727387,MU0,MU4,MU6,MU8', - '1.2,1.9,2733969453,MU0,MU4,MU6,MU8,MU10;2.2,1.0,2733969453,MU0,MU4,MU6', - '-3.2,3.0,2704088841,MU0,MU4,MU6,MU8;3.0,1.6,2972524297,MU0,MU4', - '1.3,1.9,3103727387,MU0,MU10;1.2,2.6,2733969453,MU6;-1.1,2.6,2972524297,MU6; -1.2,2.6,2704088842,MU20'] +l1Decoder.RoIBResult="" - from TrigUpgradeTest.TestUtils import writeEmulationFiles - writeEmulationFiles(data) +data = {} +data['CTPEmulation'] = ['HLT_e3 HLT_g5 HLT_e7 HLT_2e3 HLT_mu6 HLT_2mu6 HLT_mu6idperf HLT_e15mu4', + 'HLT_e3 HLT_g5 HLT_mu6 HLT_2mu6 HLT_mu6idperf HLT_e15mu4', + 'HLT_e3 HLT_g5 HLT_e7 HLT_2e3 HLT_mu6 HLT_2mu6', + 'HLT_mu6 HLT_2mu6 HLT_mu6idperf HLT_e15mu4', ] # just to see some change +data['RoIEmulation'] = ['1.3,2.9,2704088841,EM3,EM7; 1.2,3.1,2972524297,EM3,EM7,EM10,EM15; -3.2,-2.0,3103727387,MU0,MU4,MU6,MU8', + '1.2,1.9,2733969453,MU0,MU4,MU6,MU8,MU10;2.2,1.0,2733969453,MU0,MU4,MU6', + '-3.2,3.0,2704088841,MU0,MU4,MU6,MU8;3.0,1.6,2972524297,MU0,MU4', + '1.3,1.9,3103727387,MU0,MU10;1.2,2.6,2733969453,MU6;-1.1,2.6,2972524297,MU6; -1.2,2.6,2704088842,MU20'] +from TrigUpgradeTest.TestUtils import writeEmulationFiles +writeEmulationFiles(data) - ctpUnpacker = CTPUnpackingEmulationTool( OutputLevel = DEBUG, ForceEnableAllChains=True ) -else: - ctpUnpacker = CTPUnpackingTool( OutputLevel = DEBUG, ForceEnableAllChains=True ) +ctpUnpacker = CTPUnpackingEmulationTool( OutputLevel = DEBUG, ForceEnableAllChains=True ) l1Decoder.ctpUnpacker = ctpUnpacker l1Decoder.ctpUnpacker.CTPToChainMapping = ["0:HLT_e3", "0:HLT_g5", "1:HLT_e7", "2:HLT_2e3", "15:HLT_mu6", "33:HLT_2mu6", "15:HLT_mu6idperf", "42:HLT_e15mu4"] # this are real IDs of L1_* items in pp_v5 menu -if doL1Emulation: - emUnpacker = RoIsUnpackingEmulationTool("EMRoIsUnpackingTool", OutputLevel=DEBUG ) -else: - emUnpacker = EMRoIsUnpackingTool( OutputLevel=DEBUG ) - +emUnpacker = RoIsUnpackingEmulationTool("EMRoIsUnpackingTool", OutputLevel=DEBUG ) emUnpacker.ThresholdToChainMapping = ["EM3 : HLT_e3", "EM3 : HLT_g5", "EM7 : HLT_e7", "EM15 : HLT_e15mu4" ] -if doL1Emulation: - muUnpacker = RoIsUnpackingEmulationTool("MURoIsUnpackingTool", OutputLevel=DEBUG ) -else: - muUnpacker = MURoIsUnpackingTool( OutputLevel=DEBUG ) +muUnpacker = RoIsUnpackingEmulationTool("MURoIsUnpackingTool", OutputLevel=DEBUG ) muUnpacker.ThresholdToChainMapping = ["MU6 : HLT_mu6", "MU6 : HLT_mu6idperf", "MU4 : HLT_e15mu4"] # do not know yet how to configure the services for it @@ -138,15 +76,6 @@ topSequence += chainSeedingDumper -# caloDecoder = L1CaloDecoder() # by default it is steered towards the RoIBResult of the name above -# caloDecoder.OutputLevel=VERBOSE -# topSequence += caloDecoder - -# #Dumper -# from ViewAlgs.ViewAlgsConf import DumpDecisions -# dumper = DumpDecisions("L1CaloDecisions") -# dumper.OutputLevel=VERBOSE -# topSequence += dumper #-------------------------------------------------------------- @@ -157,18 +86,15 @@ svcMgr.MessageSvc.Format = "% F%42W%S%7W%R%T %0W%M" svcMgr.MessageSvc.verboseLimit = 0 svcMgr.StoreGateSvc.OutputLevel = INFO svcMgr.StoreGateSvc.Dump=False #This is required to avoid a bug in bytestream decoding in AthenaMT mode -svcMgr.ByteStreamAddressProviderSvc.OutputLevel = INFO -svcMgr.ByteStreamCnvSvc.OutputLevel = INFO -svcMgr.ByteStreamInputSvc.OutputLevel = INFO +# svcMgr.ByteStreamAddressProviderSvc.OutputLevel = INFO +# svcMgr.ByteStreamCnvSvc.OutputLevel = INFO +# svcMgr.ByteStreamInputSvc.OutputLevel = INFO svcMgr.AthDictLoaderSvc.OutputLevel = INFO svcMgr.EventPersistencySvc.OutputLevel = INFO -svcMgr.ROBDataProviderSvc.OutputLevel = INFO +#svcMgr.ROBDataProviderSvc.OutputLevel = INFO print svcMgr - -theApp.EvtMax = 100 -if doL1Emulation: - theApp.EvtMax = len(data['RoIEmulation']) +theApp.EvtMax = len(data['RoIEmulation']) print "topSequence dump:", topSequence #