diff --git a/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoROBMonitor.cxx b/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoROBMonitor.cxx index 9643dbe7cc0ebc2e39cae2509b318586d01d5d58..44bf20bff5a48cb4fb9ddbf538b74e2db2a99c1c 100644 --- a/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoROBMonitor.cxx +++ b/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoROBMonitor.cxx @@ -104,6 +104,10 @@ TrigL1TopoROBMonitor::TrigL1TopoROBMonitor(const std::string& name, ISvcLocator* m_histTopoHdwNotSimOverflow(0), m_histTopoProblems(0), m_histInputLinkCRCfromROIConv(0), + m_histTopoDaqRobSimResult(0), + m_histTopoDaqRobHdwResult(0), + m_histTopoDaqRobSimNotHdwResult(0), + m_histTopoDaqRobHdwNotSimResult(0), m_setTopoSimResult(false), m_firstEvent(true) { @@ -300,6 +304,10 @@ StatusCode TrigL1TopoROBMonitor::beginRun() { unsigned int nProblems=m_problems.size(); CHECK( bookAndRegisterHist(rootHistSvc, m_histTopoProblems, "Problems", "Counts of various problems", nProblems, 0, nProblems) ) ; CHECK( bookAndRegisterHist(rootHistSvc, m_histInputLinkCRCfromROIConv, "InputLinkCRCs","CRC flags for input links, from ROI via converter", 5, 0, 5) ); + CHECK( bookAndRegisterHist(rootHistSvc, m_histTopoDaqRobSimResult, "SimDaqRobResults", "L1Topo simulation accepts, events with no overflows (DAQ ROB)", m_nTopoCTPOutputs, 0, m_nTopoCTPOutputs) ); + CHECK( bookAndRegisterHist(rootHistSvc, m_histTopoDaqRobHdwResult, "HdwDaqRobResults", "L1Topo hardware accepts, events with no overflows (DAQ ROB)", m_nTopoCTPOutputs, 0, m_nTopoCTPOutputs) ) ; + CHECK( bookAndRegisterHist(rootHistSvc, m_histTopoDaqRobSimNotHdwResult, "SimNotHdwDaqRobResult", "L1Topo events with simulation accept and hardware fail, events with no overflows (DAQ ROB)", m_nTopoCTPOutputs, 0, m_nTopoCTPOutputs) ); + CHECK( bookAndRegisterHist(rootHistSvc, m_histTopoDaqRobHdwNotSimResult, "HdwNotSimDaqRobResult", "L1Topo events with hardware accept and simulation fail, events with no overflows (DAQ ROB)", m_nTopoCTPOutputs, 0, m_nTopoCTPOutputs) ); // Next, apply x-bin labels to some histograms @@ -366,6 +374,10 @@ StatusCode TrigL1TopoROBMonitor::beginRun() { m_histTopoCtpSimHdwEventComparison->GetXaxis()->SetBinLabel(binIndex+1,label.c_str()); m_histTopoCtpHdwEventComparison->GetXaxis()->SetBinLabel(binIndex+1,label.c_str()); m_histTopoDaqRobEventComparison->GetXaxis()->SetBinLabel(binIndex+1,label.c_str()); + m_histTopoDaqRobSimResult->GetXaxis()->SetBinLabel(binIndex+1,label.c_str()); + m_histTopoDaqRobHdwResult->GetXaxis()->SetBinLabel(binIndex+1,label.c_str()); + m_histTopoDaqRobSimNotHdwResult->GetXaxis()->SetBinLabel(binIndex+1,label.c_str()); + m_histTopoDaqRobHdwNotSimResult->GetXaxis()->SetBinLabel(binIndex+1,label.c_str()); } } @@ -675,6 +687,18 @@ StatusCode TrigL1TopoROBMonitor::doCnvMon(bool prescalForDAQROBAccess) { compBitSets("L1Topo hardware", "L1Topo DAQ ROB", m_triggerBits, m_triggerBitsDaqRob, m_histTopoDaqRobEventComparison); + if(m_overflowBitsDaqRob.none()){ + for (unsigned int i=0; i< m_nTopoCTPOutputs; ++i){ + m_histTopoHdwResult->Fill(i,m_triggerBitsDaqRob.test(i)); + } + for (unsigned int i=0; i< m_nTopoCTPOutputs; ++i){ + m_histTopoSimResult->Fill(i,m_topoSimResult.test(i)); + } + for (unsigned int i=0; i< m_nTopoCTPOutputs; ++i){ + m_histTopoSimNotHdwResult->Fill(i, m_topoSimResult.test(i) and not m_triggerBitsDaqRob.test(i)); + m_histTopoHdwNotSimResult->Fill(i, m_triggerBitsDaqRob.test(i) and not m_topoSimResult.test(i)); + } + } // if(overflow.none) } // if(prescalForDAQROBAccess) else { ATH_MSG_DEBUG( "L1Topo DAQ ROB access via converter skipped due to prescale" ); diff --git a/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoROBMonitor.h b/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoROBMonitor.h index a9c52cfb4cd6c7f03f1697ad2b71aaade04d12e6..70f9089bb5de41815d7dc19920287cbed5e0a500 100644 --- a/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoROBMonitor.h +++ b/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoROBMonitor.h @@ -99,6 +99,10 @@ class TrigL1TopoROBMonitor:public AthAlgorithm { TH1F* m_histInputLinkCRCfromROIConv; TH1F* m_histTopoSimOverfl; TH1F* m_histTopoHdwOverfl; + TH1F* m_histTopoDaqRobSimResult; + TH1F* m_histTopoDaqRobHdwResult; + TH1F* m_histTopoDaqRobSimNotHdwResult; + TH1F* m_histTopoDaqRobHdwNotSimResult; std::bitset<m_nTopoCTPOutputs> m_triggerBits; //! trigger bits sent to CTP std::bitset<m_nTopoCTPOutputs> m_overflowBits; //! overflow bits corresponding to CTP output std::bitset<m_nTopoCTPOutputs> m_topoSimResult; //! simulation of CTP output