14{
15 static const uint32_t s_min_packet_size = 3;
16
17 robFrag.check ();
18
20 const uint32_t *bs = robFrag.rod_data ();
22
24
25 ERS_DEBUG (1, "NDATA FROM ROB HEADER: " << nw);
26
28
29 while (remaining >= s_min_packet_size)
30 {
31 try
32 {
33 Muon::nsw::NSWElink *elink = new Muon::nsw::NSWElink (current_data_pointer, remaining);
35
36
37
38 const std::vector <Muon::nsw::VMMChannel *> vchan = elink->
get_channels ();
39 for (auto i = vchan.begin (); i != vchan.end (); ++i)
41
42 wcount += elink->
nwords ();
43 current_data_pointer += elink->
nwords ();
44
45 ERS_DEBUG (1, "NDATA: " << nw << " WORD COUNTER: " << wcount);
46 ERS_DEBUG (1,
"NPACKETS: " <<
m_elinks.size ());
47
48 remaining = nw - wcount;
49 }
50
51 catch (Muon::nsw::MuonNSWCommonDecoder::NSWElinkFelixHeaderException &e)
52 {
54 ERS_DEBUG (1,
e.what());
55 break;
56 }
57
58 catch (Muon::nsw::MuonNSWCommonDecoder::NSWElinkROCHeaderException &e)
59 {
61 ERS_DEBUG (1,
e.what());
62
63
64
65 wcount += s_min_packet_size;
66 current_data_pointer += s_min_packet_size;
67 remaining = nw - wcount;
68 continue;
69 }
70 }
71}
std::vector< Muon::nsw::NSWElink * > m_elinks
std::vector< Muon::nsw::VMMChannel * > m_channels
unsigned int nwords() const
const std::vector< Muon::nsw::VMMChannel * > & get_channels() const