Skip to content
Snippets Groups Projects
Commit 6ab2e536 authored by Daniel Charles Craik's avatar Daniel Charles Craik Committed by Rosen Matev
Browse files

change keys in decoded LumiSummary map to strings; remove old LumiWriter

parent f248ed7e
No related branches found
No related tags found
1 merge request!3518Extend HltLumiSummary decoding to Run 3 format
......@@ -36,7 +36,7 @@ namespace LHCb {
class HltLumiSummary final : public DataObject {
public:
/// User information
typedef GaudiUtils::VectorMap<int, int> ExtraInfo;
typedef GaudiUtils::VectorMap<std::string, int> ExtraInfo;
/// Default Constructor
HltLumiSummary() = default;
......@@ -55,21 +55,21 @@ namespace LHCb {
const ExtraInfo& extraInfo() const { return m_extraInfo; }
/// has information for specified key
bool hasInfo( int key ) const { return m_extraInfo.end() != m_extraInfo.find( key ); }
bool hasInfo( std::string key ) const { return m_extraInfo.end() != m_extraInfo.find( key ); }
/// Add new information associated with the specified key. This method cannot be used to modify information for a
/// pre-existing key.
bool addInfo( int key, int info ) { return m_extraInfo.insert( key, info ).second; }
bool addInfo( std::string key, int info ) { return m_extraInfo.insert( key, info ).second; }
/// extract the information associated with the given key. If there is no such infomration the default value will be
/// returned.
int info( const int key, const int def ) const {
int info( const std::string key, const int def ) const {
auto i = m_extraInfo.find( key );
return m_extraInfo.end() == i ? def : i->second;
}
/// erase the information associated with the given key
unsigned long eraseInfo( int key ) { return m_extraInfo.erase( key ); }
unsigned long eraseInfo( std::string key ) { return m_extraInfo.erase( key ); }
/// Update Some addtional user information. Don't use directly. Use *Info() methods.
HltLumiSummary& setExtraInfo( ExtraInfo value ) {
......
......@@ -10,7 +10,6 @@
\*****************************************************************************/
#include "Event/HltLumiSummary.h"
#include "Event/LumiCounters.h"
#include "Event/LumiSummaryOffsets_V1.h"
#include "Event/LumiSummaryOffsets_V2.h"
#include "Event/RawBank.h"
......@@ -73,45 +72,35 @@ namespace LHCb {
<< format( "%4d", LHCb::LumiSummaryOffsets::V1::TotalSize ) << ", found "
<< format( "%4d", ibank->size() ) << endmsg;
} else {
hltLumiSummary.addInfo( LHCb::LumiCounters::OdinT0Low,
getField( LHCb::LumiSummaryOffsets::V1::t0LowOffset,
LHCb::LumiSummaryOffsets::V1::t0LowSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::OdinT0High,
getField( LHCb::LumiSummaryOffsets::V1::t0HighOffset,
LHCb::LumiSummaryOffsets::V1::t0HighSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::OdinBcidLow,
getField( LHCb::LumiSummaryOffsets::V1::bcidLowOffset,
LHCb::LumiSummaryOffsets::V1::bcidLowSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::OdinBcidHigh,
getField( LHCb::LumiSummaryOffsets::V1::bcidHighOffset,
LHCb::LumiSummaryOffsets::V1::bcidHighSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::OdinBxType,
getField( LHCb::LumiSummaryOffsets::V1::bxTypeOffset,
LHCb::LumiSummaryOffsets::V1::bxTypeSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::GEC,
getField( LHCb::LumiSummaryOffsets::V1::GecOffset,
LHCb::LumiSummaryOffsets::V1::GecSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::VeloTracks,
hltLumiSummary.addInfo( "T0Low", getField( LHCb::LumiSummaryOffsets::V1::t0LowOffset,
LHCb::LumiSummaryOffsets::V1::t0LowSize, ibank->data() ) );
hltLumiSummary.addInfo( "T0High", getField( LHCb::LumiSummaryOffsets::V1::t0HighOffset,
LHCb::LumiSummaryOffsets::V1::t0HighSize, ibank->data() ) );
hltLumiSummary.addInfo( "BCIDLow", getField( LHCb::LumiSummaryOffsets::V1::bcidLowOffset,
LHCb::LumiSummaryOffsets::V1::bcidLowSize, ibank->data() ) );
hltLumiSummary.addInfo( "BCIDHigh", getField( LHCb::LumiSummaryOffsets::V1::bcidHighOffset,
LHCb::LumiSummaryOffsets::V1::bcidHighSize, ibank->data() ) );
hltLumiSummary.addInfo( "BXType", getField( LHCb::LumiSummaryOffsets::V1::bxTypeOffset,
LHCb::LumiSummaryOffsets::V1::bxTypeSize, ibank->data() ) );
hltLumiSummary.addInfo( "GEC", getField( LHCb::LumiSummaryOffsets::V1::GecOffset,
LHCb::LumiSummaryOffsets::V1::GecSize, ibank->data() ) );
hltLumiSummary.addInfo( "VeloTracks",
getField( LHCb::LumiSummaryOffsets::V1::VeloTracksOffset,
LHCb::LumiSummaryOffsets::V1::VeloTracksSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::VeloVertices,
hltLumiSummary.addInfo( "VeloVertices",
getField( LHCb::LumiSummaryOffsets::V1::VeloVerticesOffset,
LHCb::LumiSummaryOffsets::V1::VeloVerticesSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::SciFiClusters,
hltLumiSummary.addInfo( "SciFiClusters",
getField( LHCb::LumiSummaryOffsets::V1::SciFiClustersOffset,
LHCb::LumiSummaryOffsets::V1::SciFiClustersSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM2R2,
getField( LHCb::LumiSummaryOffsets::V1::M2R2Offset,
LHCb::LumiSummaryOffsets::V1::M2R2Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM2R3,
getField( LHCb::LumiSummaryOffsets::V1::M2R3Offset,
LHCb::LumiSummaryOffsets::V1::M2R3Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM3R2,
getField( LHCb::LumiSummaryOffsets::V1::M3R2Offset,
LHCb::LumiSummaryOffsets::V1::M3R2Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM3R3,
getField( LHCb::LumiSummaryOffsets::V1::M3R3Offset,
LHCb::LumiSummaryOffsets::V1::M3R3Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM2R2", getField( LHCb::LumiSummaryOffsets::V1::M2R2Offset,
LHCb::LumiSummaryOffsets::V1::M2R2Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM2R3", getField( LHCb::LumiSummaryOffsets::V1::M2R3Offset,
LHCb::LumiSummaryOffsets::V1::M2R3Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM3R2", getField( LHCb::LumiSummaryOffsets::V1::M3R2Offset,
LHCb::LumiSummaryOffsets::V1::M3R2Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM3R3", getField( LHCb::LumiSummaryOffsets::V1::M3R3Offset,
LHCb::LumiSummaryOffsets::V1::M3R3Size, ibank->data() ) );
}
} else if ( ibank->version() == 2 ) {
auto encodingKey = getField( LHCb::LumiSummaryOffsets::V2::encodingKeyOffset,
......@@ -126,105 +115,86 @@ namespace LHCb {
<< format( "%4d", LHCb::LumiSummaryOffsets::V2::TotalSize ) << ", found "
<< format( "%4d", ibank->size() ) << endmsg;
}
hltLumiSummary.addInfo( LHCb::LumiCounters::OdinT0Low,
getField( LHCb::LumiSummaryOffsets::V2::t0LowOffset,
LHCb::LumiSummaryOffsets::V2::t0LowSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::OdinT0High,
getField( LHCb::LumiSummaryOffsets::V2::t0HighOffset,
LHCb::LumiSummaryOffsets::V2::t0HighSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::OdinBcidLow,
getField( LHCb::LumiSummaryOffsets::V2::bcidLowOffset,
LHCb::LumiSummaryOffsets::V2::bcidLowSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::OdinBcidHigh,
getField( LHCb::LumiSummaryOffsets::V2::bcidHighOffset,
LHCb::LumiSummaryOffsets::V2::bcidHighSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::OdinBxType,
getField( LHCb::LumiSummaryOffsets::V2::bxTypeOffset,
LHCb::LumiSummaryOffsets::V2::bxTypeSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::GEC,
getField( LHCb::LumiSummaryOffsets::V2::GecOffset,
LHCb::LumiSummaryOffsets::V2::GecSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::VeloTracks,
hltLumiSummary.addInfo( "T0Low", getField( LHCb::LumiSummaryOffsets::V2::t0LowOffset,
LHCb::LumiSummaryOffsets::V2::t0LowSize, ibank->data() ) );
hltLumiSummary.addInfo( "T0High", getField( LHCb::LumiSummaryOffsets::V2::t0HighOffset,
LHCb::LumiSummaryOffsets::V2::t0HighSize, ibank->data() ) );
hltLumiSummary.addInfo( "BCIDLow", getField( LHCb::LumiSummaryOffsets::V2::bcidLowOffset,
LHCb::LumiSummaryOffsets::V2::bcidLowSize, ibank->data() ) );
hltLumiSummary.addInfo( "BCIDHigh", getField( LHCb::LumiSummaryOffsets::V2::bcidHighOffset,
LHCb::LumiSummaryOffsets::V2::bcidHighSize, ibank->data() ) );
hltLumiSummary.addInfo( "BXType", getField( LHCb::LumiSummaryOffsets::V2::bxTypeOffset,
LHCb::LumiSummaryOffsets::V2::bxTypeSize, ibank->data() ) );
hltLumiSummary.addInfo( "GEC", getField( LHCb::LumiSummaryOffsets::V2::GecOffset,
LHCb::LumiSummaryOffsets::V2::GecSize, ibank->data() ) );
hltLumiSummary.addInfo( "VeloTracks",
getField( LHCb::LumiSummaryOffsets::V2::VeloTracksOffset,
LHCb::LumiSummaryOffsets::V2::VeloTracksSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::VeloVertices,
hltLumiSummary.addInfo( "VeloVertices",
getField( LHCb::LumiSummaryOffsets::V2::VeloVerticesOffset,
LHCb::LumiSummaryOffsets::V2::VeloVerticesSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::SciFiClustersS1M45,
hltLumiSummary.addInfo( "SciFiClustersS1M45",
getField( LHCb::LumiSummaryOffsets::V2::SciFiM45S1Offset,
LHCb::LumiSummaryOffsets::V2::SciFiM45S1Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::SciFiClustersS2M45,
hltLumiSummary.addInfo( "SciFiClustersS2M45",
getField( LHCb::LumiSummaryOffsets::V2::SciFiM45S2Offset,
LHCb::LumiSummaryOffsets::V2::SciFiM45S2Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::SciFiClustersS3M45,
hltLumiSummary.addInfo( "SciFiClustersS3M45",
getField( LHCb::LumiSummaryOffsets::V2::SciFiM45S3Offset,
LHCb::LumiSummaryOffsets::V2::SciFiM45S3Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::SciFiClusters,
hltLumiSummary.addInfo( "SciFiClusters",
getField( LHCb::LumiSummaryOffsets::V2::SciFiClustersOffset,
LHCb::LumiSummaryOffsets::V2::SciFiClustersSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::SciFiClustersS2M123,
hltLumiSummary.addInfo( "SciFiClustersS2M123",
getField( LHCb::LumiSummaryOffsets::V2::SciFiM123S2Offset,
LHCb::LumiSummaryOffsets::V2::SciFiM123S2Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::SciFiClustersS3M123,
hltLumiSummary.addInfo( "SciFiClustersS3M123",
getField( LHCb::LumiSummaryOffsets::V2::SciFiM123S3Offset,
LHCb::LumiSummaryOffsets::V2::SciFiM123S3Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::ECalET,
getField( LHCb::LumiSummaryOffsets::V2::ECalETOffset,
LHCb::LumiSummaryOffsets::V2::ECalETSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::ECalEInnerTop,
hltLumiSummary.addInfo( "ECalET", getField( LHCb::LumiSummaryOffsets::V2::ECalETOffset,
LHCb::LumiSummaryOffsets::V2::ECalETSize, ibank->data() ) );
hltLumiSummary.addInfo( "ECalEInnerTop",
getField( LHCb::LumiSummaryOffsets::V2::ECalEITOffset,
LHCb::LumiSummaryOffsets::V2::ECalEITSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::ECalEInnerBottom,
hltLumiSummary.addInfo( "ECalEInnerBottom",
getField( LHCb::LumiSummaryOffsets::V2::ECalEIBOffset,
LHCb::LumiSummaryOffsets::V2::ECalEIBSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::ECalEMiddleTop,
hltLumiSummary.addInfo( "ECalEMiddleTop",
getField( LHCb::LumiSummaryOffsets::V2::ECalEMTOffset,
LHCb::LumiSummaryOffsets::V2::ECalEMTSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::ECalEMiddleBottom,
hltLumiSummary.addInfo( "ECalEMiddleBottom",
getField( LHCb::LumiSummaryOffsets::V2::ECalEMBOffset,
LHCb::LumiSummaryOffsets::V2::ECalEMBSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::ECalEOuterTop,
hltLumiSummary.addInfo( "ECalEOuterTop",
getField( LHCb::LumiSummaryOffsets::V2::ECalEOTOffset,
LHCb::LumiSummaryOffsets::V2::ECalEOTSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::ECalEOuterBottom,
hltLumiSummary.addInfo( "ECalEOuterBottom",
getField( LHCb::LumiSummaryOffsets::V2::ECalEOBOffset,
LHCb::LumiSummaryOffsets::V2::ECalEOBSize, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM2R1,
getField( LHCb::LumiSummaryOffsets::V2::M2R1Offset,
LHCb::LumiSummaryOffsets::V2::M2R1Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM2R2,
getField( LHCb::LumiSummaryOffsets::V2::M2R2Offset,
LHCb::LumiSummaryOffsets::V2::M2R2Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM2R3,
getField( LHCb::LumiSummaryOffsets::V2::M2R3Offset,
LHCb::LumiSummaryOffsets::V2::M2R3Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM2R4,
getField( LHCb::LumiSummaryOffsets::V2::M2R4Offset,
LHCb::LumiSummaryOffsets::V2::M2R4Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM3R1,
getField( LHCb::LumiSummaryOffsets::V2::M3R1Offset,
LHCb::LumiSummaryOffsets::V2::M3R1Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM3R2,
getField( LHCb::LumiSummaryOffsets::V2::M3R2Offset,
LHCb::LumiSummaryOffsets::V2::M3R2Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM3R3,
getField( LHCb::LumiSummaryOffsets::V2::M3R3Offset,
LHCb::LumiSummaryOffsets::V2::M3R3Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM3R4,
getField( LHCb::LumiSummaryOffsets::V2::M3R4Offset,
LHCb::LumiSummaryOffsets::V2::M3R4Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM4R1,
getField( LHCb::LumiSummaryOffsets::V2::M4R1Offset,
LHCb::LumiSummaryOffsets::V2::M4R1Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM4R2,
getField( LHCb::LumiSummaryOffsets::V2::M4R2Offset,
LHCb::LumiSummaryOffsets::V2::M4R2Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM4R3,
getField( LHCb::LumiSummaryOffsets::V2::M4R3Offset,
LHCb::LumiSummaryOffsets::V2::M4R3Size, ibank->data() ) );
hltLumiSummary.addInfo( LHCb::LumiCounters::MuonHitsM4R4,
getField( LHCb::LumiSummaryOffsets::V2::M4R4Offset,
LHCb::LumiSummaryOffsets::V2::M4R4Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM2R1", getField( LHCb::LumiSummaryOffsets::V2::M2R1Offset,
LHCb::LumiSummaryOffsets::V2::M2R1Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM2R2", getField( LHCb::LumiSummaryOffsets::V2::M2R2Offset,
LHCb::LumiSummaryOffsets::V2::M2R2Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM2R3", getField( LHCb::LumiSummaryOffsets::V2::M2R3Offset,
LHCb::LumiSummaryOffsets::V2::M2R3Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM2R4", getField( LHCb::LumiSummaryOffsets::V2::M2R4Offset,
LHCb::LumiSummaryOffsets::V2::M2R4Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM3R1", getField( LHCb::LumiSummaryOffsets::V2::M3R1Offset,
LHCb::LumiSummaryOffsets::V2::M3R1Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM3R2", getField( LHCb::LumiSummaryOffsets::V2::M3R2Offset,
LHCb::LumiSummaryOffsets::V2::M3R2Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM3R3", getField( LHCb::LumiSummaryOffsets::V2::M3R3Offset,
LHCb::LumiSummaryOffsets::V2::M3R3Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM3R4", getField( LHCb::LumiSummaryOffsets::V2::M3R4Offset,
LHCb::LumiSummaryOffsets::V2::M3R4Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM4R1", getField( LHCb::LumiSummaryOffsets::V2::M4R1Offset,
LHCb::LumiSummaryOffsets::V2::M4R1Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM4R2", getField( LHCb::LumiSummaryOffsets::V2::M4R2Offset,
LHCb::LumiSummaryOffsets::V2::M4R2Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM4R3", getField( LHCb::LumiSummaryOffsets::V2::M4R3Offset,
LHCb::LumiSummaryOffsets::V2::M4R3Size, ibank->data() ) );
hltLumiSummary.addInfo( "MuonHitsM4R4", getField( LHCb::LumiSummaryOffsets::V2::M4R4Offset,
LHCb::LumiSummaryOffsets::V2::M4R4Size, ibank->data() ) );
}
} else {
warning() << "Unknown HltLumiSummary version: " << format( "%4d", ibank->version() ) << endmsg;
......
......@@ -20,10 +20,9 @@ gaudi_add_module(HltDAQ
src/component/HltDecoderUtils.cpp
src/component/HltDecReportsWriter.cpp
src/component/HltDiffHltDecReports.cpp
src/component/HltLumiWriter.cpp
src/component/HltPackedBufferWriter.cpp
src/component/HltPackedBufferDecoder.cpp
src/component/HltPackedBufferChecker.cpp
src/component/HltPackedBufferDecoder.cpp
src/component/HltPackedBufferChecker.cpp
src/component/HltRawDataMonitor.cpp
src/component/HltRoutingBitsFilter.cpp
src/component/HltSelReportsDecoder.cpp
......
/*****************************************************************************\
* (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration *
* *
* This software is distributed under the terms of the GNU General Public *
* Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". *
* *
* In applying this licence, CERN does not waive the privileges and immunities *
* granted to it by virtue of its status as an Intergovernmental Organization *
* or submit itself to any jurisdiction. *
\*****************************************************************************/
#include "Event/HltLumiSummary.h"
#include "Event/LumiCounters.h"
#include "Event/RawEvent.h"
#include "Kernel/STLExtensions.h"
#include "LHCbAlgs/Transformer.h"
//-----------------------------------------------------------------------------
// Implementation file for class : HltLumiWriter
//
//-----------------------------------------------------------------------------
/** @class HltLumiWriter HltLumiWriter.h
* Fills the Raw Buffer banks for the LumiSummary
*/
class HltLumiWriter : public LHCb::Algorithm::Transformer<LHCb::RawBank::View( const LHCb::HltLumiSummary& )> {
DataObjectWriteHandle<LHCb::RawEvent> m_outputRawEvent{this, "RawEventLocation", LHCb::RawEventLocation::Default};
mutable Gaudi::Accumulators::AveragingCounter<> m_totDataSize{this, "Average event size / 32-bit words"};
public:
HltLumiWriter( const std::string& name, ISvcLocator* pSvcLocator )
: Transformer{name, pSvcLocator, KeyValue{"InputBank", LHCb::HltLumiSummaryLocation::Default},
KeyValue{"OutputBank", "DAQ/RawBanks/HltLumiSummary"}} {}
//=============================================================================
// Main execution
// Fill the data bank, structure: Key (upper 16 bits) + value
//=============================================================================
LHCb::RawBank::View operator()( const LHCb::HltLumiSummary& summary ) const override {
std::vector<unsigned int> bank;
bank.reserve( 20 );
for ( const auto& info : summary.extraInfo() ) {
bank.push_back( ( std::min( info.first, 0xFFFF ) << 16 ) | ( std::min( info.second, 0xFFFF ) & 0xFFFF ) );
if ( msgLevel( MSG::VERBOSE ) ) {
auto word = bank.back();
verbose() << format( " %8x %11d %11d %11d ", word, word, word >> 16, word & 0xFFFF ) << endmsg;
}
}
auto rawEvent = m_outputRawEvent.getOrCreate();
if ( !rawEvent->banks( LHCb::RawBank::HltLumiSummary ).empty() ) {
throw std::runtime_error( "RawEvent already contains HltLumiSummary raw bank" );
}
// set source, type, version
rawEvent->addBank( 0, LHCb::RawBank::HltLumiSummary, 0, bank );
m_totDataSize += bank.size();
if ( msgLevel( MSG::DEBUG ) ) {
debug() << "Bank size: " << format( "%4d ", bank.size() ) << "Total Data bank size " << bank.size() << endmsg;
}
if ( msgLevel( MSG::VERBOSE ) ) {
verbose() << "DATA bank : " << endmsg;
for ( const auto& [k, w] : LHCb::range::enumerate( bank, 1 ) ) {
verbose() << format( " %8x %11d ", w, w );
if ( k % 4 == 0 ) verbose() << endmsg;
}
verbose() << endmsg;
}
return rawEvent->banks( LHCb::RawBank::HltLumiSummary );
}
};
DECLARE_COMPONENT( HltLumiWriter )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment