Skip to content
Snippets Groups Projects
Commit 21b45ce6 authored by Rosen Matev's avatar Rosen Matev :sunny:
Browse files

Merge branch 'rm-muon-encoding-sourceid' into 'master'

Use proper SourceID in Muon encoding

See merge request !3764
parents 3bcb18a4 02ce3248
No related branches found
No related tags found
1 merge request!3764Use proper SourceID in Muon encoding
Pipeline #4472387 passed
......@@ -137,7 +137,6 @@ void MuonDigitToTell40RawBuffer::operator()( LHCb::RawEvent const& raw, LHCb::Mu
<< &( synch[ODENumber - 1][frame] ) << endmsg;
}
unsigned int PCINumber = 0;
for ( unsigned int i = 0; i < MuonUpgradeDAQHelper_maxTell40Number; i++ ) {
for ( unsigned int j = 0; j < MuonUpgradeDAQHelper_maxTell40PCINumber; j++ ) {
unsigned int bank_size_words = 0;
......@@ -146,7 +145,7 @@ void MuonDigitToTell40RawBuffer::operator()( LHCb::RawEvent const& raw, LHCb::Mu
ByteType data = 0;
data = ( 0x5 );
bank.emplace_back( data );
debug() << " started new bank with data = " << std::bitset<8>( data ) << endmsg;
if ( msgLevel( MSG::DEBUG ) ) debug() << " started new bank with data = " << std::bitset<8>( data ) << endmsg;
data = 0;
bank_size_bytes++;
for ( unsigned int m = 0; m < MuonUpgradeDAQHelper_linkNumber; m++ ) {
......@@ -158,7 +157,7 @@ void MuonDigitToTell40RawBuffer::operator()( LHCb::RawEvent const& raw, LHCb::Mu
ProcessSynchFrameV2( synch[a][b], frame_length_byte, out_frame );
unsigned int jbyte = 0;
// insert first byte
debug() << " synch frame length in byte " << frame_length_byte << endmsg;
if ( msgLevel( MSG::DEBUG ) ) debug() << " synch frame length in byte " << frame_length_byte << endmsg;
for ( jbyte = 0; jbyte < frame_length_byte + 1; jbyte++ ) {
bank_size_bytes++;
......@@ -166,22 +165,25 @@ void MuonDigitToTell40RawBuffer::operator()( LHCb::RawEvent const& raw, LHCb::Mu
unsigned int data_frame = jbyte / 4;
unsigned int data_pos_in_input = 3 - jbyte % 4;
unsigned int tmp = out_frame[data_frame];
debug() << " synch frame and byte " << jbyte << " = " << std::bitset<32>( tmp ) << endmsg;
if ( msgLevel( MSG::DEBUG ) )
debug() << " synch frame and byte " << jbyte << " = " << std::bitset<32>( tmp ) << endmsg;
// fill staring from MSB
data |= ( ( tmp >> data_pos_in_input * 8 ) & 0xFF );
debug() << " data after byte insertion " << jbyte << " " << std::bitset<8>( data ) << endmsg;
if ( msgLevel( MSG::DEBUG ) )
debug() << " data after byte insertion " << jbyte << " " << std::bitset<8>( data ) << endmsg;
bank.emplace_back( data );
data = 0;
bank_size_words++;
debug() << "data stored " << bank_size_words << endmsg;
if ( msgLevel( MSG::DEBUG ) ) debug() << "data stored " << bank_size_words << endmsg;
}
}
PCINumber = i * 2 + j;
// alessia -- Not functional ! One should not modify RawEvent
info() << " source ID " << i + 1 << " " << j << " " << muonDet.getUpgradeDAQInfo()->getSourceID( i + 1, j );
// unsigned int PCINumber = i * 2 + j;
auto sourceID = muonDet.getUpgradeDAQInfo()->getSourceID( i + 1, j );
if ( msgLevel( MSG::DEBUG ) ) debug() << " source ID " << i + 1 << " " << j << " " << sourceID << endmsg;
const_cast<LHCb::RawEvent&>( raw ).addBank( PCINumber, LHCb::RawBank::Muon, bankVersion, bank );
// alessia -- Not functional ! One should not modify RawEvent
const_cast<LHCb::RawEvent&>( raw ).addBank( sourceID, LHCb::RawBank::Muon, bankVersion, bank );
unsigned int bankwrittem = bank_size_bytes / 4;
if ( bank_size_bytes % 4 ) bankwrittem++;
......@@ -196,16 +198,19 @@ void MuonDigitToTell40RawBuffer::ProcessSynchFrameV2( MuonSynchFrame& frame, uns
bool edac = false;
ShortType synch_frame[3] = {0, 0, 0};
ShortType hits = frame.getSynchFrame( synch_frame, edac );
if ( hits > 12 ) debug() << "TDC trunctation " << hits << endmsg;
debug() << " synch 1 = " << std::bitset<32>( synch_frame[0] ) << endmsg;
debug() << " synch 2 = " << std::bitset<32>( synch_frame[1] ) << endmsg;
debug() << " synch 3 = " << std::bitset<32>( synch_frame[2] ) << endmsg;
debug() << " formato naturale synch = " << std::bitset<32>( synch_frame[0] );
debug() << std::bitset<16>( synch_frame[1] >> 16 ) << endmsg;
debug() << " synch TDC = " << std::bitset<16>( synch_frame[1] );
debug() << std::bitset<32>( synch_frame[2] ) << endmsg;
debug() << " hits nel frame " << hits << endmsg;
if ( msgLevel( MSG::DEBUG ) ) {
if ( hits > 12 ) debug() << "TDC trunctation " << hits << endmsg;
debug() << " synch 1 = " << std::bitset<32>( synch_frame[0] ) << endmsg;
debug() << " synch 2 = " << std::bitset<32>( synch_frame[1] ) << endmsg;
debug() << " synch 3 = " << std::bitset<32>( synch_frame[2] ) << endmsg;
debug() << " formato naturale synch = " << std::bitset<32>( synch_frame[0] );
debug() << std::bitset<16>( synch_frame[1] >> 16 ) << endmsg;
debug() << " synch TDC = " << std::bitset<16>( synch_frame[1] );
debug() << std::bitset<32>( synch_frame[2] ) << endmsg;
debug() << " hits nel frame " << hits << endmsg;
}
out_frame[0] = 0;
out_frame[1] = 0;
out_frame[2] = 0;
......@@ -239,20 +244,20 @@ void MuonDigitToTell40RawBuffer::ProcessSynchFrameV2( MuonSynchFrame& frame, uns
// fill frame length in output frame
// use frame start at MSB
out_frame[0] = ( frame_leght_byte & 0xF ) << 28;
debug() << " frame after length = " << std::bitset<32>( out_frame[0] ) << endmsg;
if ( msgLevel( MSG::DEBUG ) ) debug() << " frame after length = " << std::bitset<32>( out_frame[0] ) << endmsg;
// copy hitsmap is non empty
if ( hits > 0 ) {
// out_frame[0] |= (synch_frame[0] & 0xFFFFFFF0) <<4;
out_frame[0] |= ( synch_frame[0] >> 4 );
debug() << " first frame = " << std::bitset<32>( out_frame[0] ) << endmsg;
if ( msgLevel( MSG::DEBUG ) ) debug() << " first frame = " << std::bitset<32>( out_frame[0] ) << endmsg;
out_frame[1] = ( synch_frame[0] & 0xF ) << 28;
out_frame[1] |= ( synch_frame[1] >> 4 );
debug() << " second frame = " << std::bitset<32>( out_frame[1] ) << endmsg;
if ( msgLevel( MSG::DEBUG ) ) debug() << " second frame = " << std::bitset<32>( out_frame[1] ) << endmsg;
out_frame[2] = ( synch_frame[1] & 0xF ) << 28;
out_frame[2] |= ( synch_frame[2] >> 4 );
debug() << " third frame = " << std::bitset<32>( out_frame[2] ) << endmsg;
if ( msgLevel( MSG::DEBUG ) ) debug() << " third frame = " << std::bitset<32>( out_frame[2] ) << endmsg;
out_frame[3] = ( synch_frame[2] & 0xF ) << 28;
}
}
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