diff --git a/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.cxx b/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.cxx index 9976127d1b53806ca760bd1ab4629ef3b99485c9..19e55a819bac0ebba19029624815bde1a87f2f1a 100644 --- a/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.cxx +++ b/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.cxx @@ -42,18 +42,19 @@ StatusCode TrigSignatureMoniMT::start() { const int x = nBinsX(hltMenuHandle); const int y = nBinsY(); + const int yr = nRateBinsY(); ATH_MSG_DEBUG( "Histogram " << x << " x " << y << " bins"); std::string outputName ("Rate" + std::to_string(m_duration) + "s"); std::unique_ptr<TH2> h1 = std::make_unique<TH2I>("SignatureAcceptance", "Raw acceptance of signatures in;chain;step", x, 1, x + 1, y, 1, y + 1); std::unique_ptr<TH2> h2 = std::make_unique<TH2I>("DecisionCount", "Positive decisions count per step;chain;step", x, 1, x + 1, y, 1, y + 1); - std::unique_ptr<TH2> h3 = std::make_unique<TH2I>("RateCountBuffer", "Rate of positive decisions buffer", x, 1, x + 1, y, 1, y + 1); - std::unique_ptr<TH2> ho = std::make_unique<TH2F>(outputName.c_str(), "Rate of positive decisions", x, 1, x + 1, y, 1, y + 1); + std::unique_ptr<TH2> h3 = std::make_unique<TH2I>("RateCountBuffer", "Rate of positive decisions buffer", x, 1, x + 1, yr, 1, yr + 1); + std::unique_ptr<TH2> ho = std::make_unique<TH2F>(outputName.c_str(), "Rate of positive decisions", x, 1, x + 1, yr, 1, yr + 1); ATH_CHECK( initHist( h1, hltMenuHandle ) ); ATH_CHECK( initHist( h2, hltMenuHandle ) ); - ATH_CHECK( initHist( h3, hltMenuHandle ) ); - ATH_CHECK( initHist( ho, hltMenuHandle ) ); + ATH_CHECK( initHist( h3, hltMenuHandle, false ) ); + ATH_CHECK( initHist( ho, hltMenuHandle, false ) ); ATH_CHECK( m_histSvc->regShared( m_bookingPath + "/" + name() + "/SignatureAcceptance", std::move(h1), m_passHistogram)); ATH_CHECK( m_histSvc->regShared( m_bookingPath + "/" + name() + "/DecisionCount", std::move(h2), m_countHistogram)); @@ -170,13 +171,14 @@ StatusCode TrigSignatureMoniMT::fillRate(const TrigCompositeUtils::DecisionIDCon } StatusCode TrigSignatureMoniMT::fillStreamsAndGroups(const std::map<std::string, TrigCompositeUtils::DecisionIDContainer>& map, const TrigCompositeUtils::DecisionIDContainer& dc) const { - const double row = m_passHistogram->GetYaxis()->GetNbins(); + const double row = nBinsY(); + const double rateRow = nRateBinsY(); for ( auto m : map ) { for ( auto id : dc ) { if ( m.second.find(id) != m.second.end() ){ double bin = m_nameToBinMap.at(m.first); m_countHistogram->Fill( bin, row ); - m_rateBufferHistogram->Fill( bin, row ); + m_rateBufferHistogram->Fill( bin, rateRow ); m_passHistogram->Fill( bin, row ); break; } @@ -250,12 +252,11 @@ StatusCode TrigSignatureMoniMT::execute( const EventContext& context ) const { TrigCompositeUtils::DecisionIDContainer stepUniqueSum( stepSum.begin(), stepSum.end() ); ATH_CHECK( fillPassEvents( stepUniqueSum, 3+step, m_passHistogram ) ); ATH_CHECK( fillDecisionCount( stepSum, 3+step ) ); - ATH_CHECK( fillRate( stepUniqueSum, 3+step ) ); - ++step; } - const int row = m_passHistogram->GetYaxis()->GetNbins(); + const int row = nBinsY(); + const int rateRow = nRateBinsY(); auto finalDecisionsHandle = SG::makeHandle( m_finalDecisionKey, context ); ATH_CHECK( finalDecisionsHandle.isValid() ); TrigCompositeUtils::DecisionIDContainer finalIDs; @@ -265,27 +266,33 @@ StatusCode TrigSignatureMoniMT::execute( const EventContext& context ) const { break; } } + ATH_CHECK( fillStreamsAndGroups( m_streamToChainMap, finalIDs ) ); ATH_CHECK( fillStreamsAndGroups( m_groupToChainMap, finalIDs ) ); ATH_CHECK( fillPassEvents( finalIDs, row, m_passHistogram ) ); - ATH_CHECK( fillRate( finalIDs, row ) ); + ATH_CHECK( fillRate( finalIDs, rateRow ) ); if ( not finalIDs.empty() ) { m_passHistogram->Fill( 1, double( row ) ); - m_rateBufferHistogram->Fill( 1, double( row ) ); + m_rateBufferHistogram->Fill( 1, double( rateRow ) ); } - + return StatusCode::SUCCESS; } int TrigSignatureMoniMT::nBinsX(SG::ReadHandle<TrigConf::HLTMenu>& hltMenuHandle) const { return hltMenuHandle->size() + m_groupToChainMap.size() + m_streamToChainMap.size() + 1; } -int TrigSignatureMoniMT::nBinsY() const { + +int TrigSignatureMoniMT::nBinsY() const { return m_collectorTools.size() + 3; // in, after ps, out } -StatusCode TrigSignatureMoniMT::initHist(std::unique_ptr<TH2>& hist, SG::ReadHandle<TrigConf::HLTMenu>& hltMenuHandle) { +int TrigSignatureMoniMT::nRateBinsY() const { + return 3; // in, after ps, out +} + +StatusCode TrigSignatureMoniMT::initHist(std::unique_ptr<TH2>& hist, SG::ReadHandle<TrigConf::HLTMenu>& hltMenuHandle, bool steps) { TAxis* x = hist->GetXaxis(); x->SetBinLabel(1, "All"); int bin = 2; // 1 is for total count, (remember bins numbering in ROOT start from 1) @@ -316,17 +323,12 @@ StatusCode TrigSignatureMoniMT::initHist(std::unique_ptr<TH2>& hist, SG::ReadHan TAxis* y = hist->GetYaxis(); - y->SetBinLabel( 1, "L1" ); + y->SetBinLabel( 1, steps ? "L1" : "Input" ); y->SetBinLabel( 2, "AfterPS" ); - for ( size_t i = 0; i < m_collectorTools.size(); ++i ) { + for ( size_t i = 0; steps && i < m_collectorTools.size(); ++i ) { y->SetBinLabel( 3+i, ("Step "+std::to_string(i)).c_str() ); } y->SetBinLabel( y->GetNbins(), "Output" ); // last bin - // loop until the last bin and assign labels Step # - for ( int bin = 3; std::string( y->GetBinLabel( bin ) ) != "Output" ; ++bin ) { - y->SetBinLabel(bin, ( "Step " + std::to_string( bin - 2 ) ).c_str() ); - } - return StatusCode::SUCCESS; } diff --git a/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.h b/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.h index 9332b02a50dbdbefa80bbe5775dfbb68259986e5..23110679f2e1bb0fb8c1b78ea4fa6f0bb9b8ae22 100644 --- a/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.h +++ b/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoniMT.h @@ -71,9 +71,10 @@ class TrigSignatureMoniMT : public ::AthReentrantAlgorithm int nBinsX(SG::ReadHandle<TrigConf::HLTMenu>& ) const; int nBinsY() const; + int nRateBinsY() const; void callback() const; void updatePublished(unsigned int duration) const; - StatusCode initHist(std::unique_ptr<TH2>&, SG::ReadHandle<TrigConf::HLTMenu>& ); + StatusCode initHist(std::unique_ptr<TH2>&, SG::ReadHandle<TrigConf::HLTMenu>&, bool = true); StatusCode fillDecisionCount(const std::vector<TrigCompositeUtils::DecisionID>& dc, int row) const; StatusCode fillPassEvents(const TrigCompositeUtils::DecisionIDContainer& dc, int row, LockedHandle<TH2>& histogram) const; StatusCode fillRate(const TrigCompositeUtils::DecisionIDContainer& dc, int row) const;