22 {
23
24 RawDataAddress* pEFAddr;
25 uint32_t TEData[2];
26
27
28
30 pObj = digiCol;
31
33 if ( !evt )
34 {
35 cout << "RawDataHltRawCnv::createObj can't get event!" << endl;
36 return StatusCode::FAILURE;
37 }
38
39 int digiId = 0;
40 const BufferHolder& hltBuf = evt->
getHltBuf();
41 uint32_t nbuf = hltBuf.
nBuf();
42
43 uint32_t REId = 0, TEId = 0;
44 uint32_t nmdc = 0, ntof = 0, nemc = 0, nmuc = 0;
45 for ( uint32_t i = 0; i < nbuf; i++ )
46 {
47 uint32_t* buf = hltBuf( i );
48 uint32_t bufSize = hltBuf.
bufSize( i );
49 for ( uint32_t j = 0; j < bufSize; j++, digiId++ )
50 {
51
52 m_hltBuilder.unPack( buf[j], digiId, REId, TEData[0], TEData[1] );
53 TEId = m_hltBuilder.getTEID( REId );
54 if ( TEId == 0xFFFFFFFF ) continue;
55
56
57
58 for ( uint32_t k = 0; k < 2; k++ )
59 {
60
61 if ( k == 0 || ( k == 1 && TEData[k] ) )
62 {
63 if ( k == 1 ) TEId += 1;
65 {
66 nmdc = TEData[k] & 0xFF;
67 ntof = ( TEData[k] >> 8 ) & 0xFF;
68 nemc = ( TEData[k] >> 16 ) & 0xFF;
69 nmuc = ( TEData[k] >> 24 ) & 0xFF;
70
71 }
72 HltRaw* hltRaw =
new HltRaw(
HltID::convert( TEId, nmdc, ntof, nemc, nmuc ) );
74
76
77 digiCol->push_back( hltRaw );
78 }
79 }
80 }
81 }
82 return StatusCode::SUCCESS;
83 }
ObjectVector< HltRaw > HltRawCol
uint32_t bufSize(int i) const
static Identifier convert(const unsigned int id, const int nmdc=0, const int ntof=0, const int nemc=0, const int nmuc=0)
convert global id to sub-id(Identifier)
static bool is_number(const Identifier &id)
void setIntChannel(const unsigned int intChannel)
const BufferHolder & getHltBuf() const
IRawDataInputSvc * m_inputSvc
void setChargeChannel(const unsigned int chargeChannel)