28 uint32_t REId, TEId, TEData, TEOverflow, TETorQ;
29 uint32_t n1buf = tof.
nBuf();
30 uint32_t n2buf = etf.
nBuf();
31 uint32_t nbuf = n1buf + n2buf;
34 typedef std::multimap<uint32_t, TofDigi*>::iterator my_iter;
35 std::multimap<uint32_t, TofDigi*> mapIdData;
38 for ( uint32_t i = 0; i < nbuf; ++i )
40 bool isTof = ( i < n1buf );
42 uint32_t ii = isTof ? i : ( i - n1buf );
43 uint32_t* buf = rBH( ii );
44 uint32_t bufSize = rBH.
bufSize( ii );
45 for ( uint32_t j = 0; j < bufSize; ++j )
49 m_builder.unPack( buf[j], REId, TEData, TEOverflow, TETorQ );
50 TEId = m_builder.getTEID( REId );
54 this->unPackETF( buf[j], TEId, TEData, TEOverflow, TETorQ );
57 if ( TEId == 0xFFFFFFFF )
59 uint32_t data_unit = buf[j];
60 if ( ( data_unit >> 25 ) == 0x7F )
64 des->push_back( tofDigi );
69 uint32_t
count = mapIdData.count( TEId );
83 mapIdData.insert( make_pair( TEId, tofDigi ) );
87 pair<my_iter, my_iter> range = mapIdData.equal_range( TEId );
96 while ( ( ++it ) != range.second )
105 while ( it != range.second )
107 tofDigi = ( it++ )->second;
112 mapIdData.insert( make_pair( TEId, tofDigi ) );
121 while ( ( ++it ) != range.second )
123 tofDigi = it->second;
130 while ( it != range.second )
132 tofDigi = ( it++ )->second;
137 mapIdData.insert( make_pair( TEId, tofDigi ) );
144 my_iter end = mapIdData.end();
145 for ( it = mapIdData.begin(); it != end; ++it )
148 tofDigi = it->second;
149 if ( ( TEId & 0xFFFF7FFF ) != 0x20000060 ) { des->push_back( tofDigi ); }
153 if ( des2 != 0 ) { des2->push_back(
new LumiDigi( tofDigi ) ); }
158 return StatusCode::SUCCESS;
169void TofConverter::unPackETF( uint32_t reDigi, uint32_t& TEId, uint32_t& TEData,