1 #include "artdaq-core/Data/Fragment.hh"
8 bool artdaq::fragmentSequenceIDCompare(Fragment i, Fragment j)
10 return i.sequenceID() < j.sequenceID();
13 artdaq::Fragment::Fragment() :
16 updateFragmentHeaderWC_();
17 fragmentHeader()->metadata_word_count = 0;
20 artdaq::Fragment::Fragment(std::size_t n) :
24 for (iterator ii=vals_.begin();
25 ii!=(vals_.begin()+RawFragmentHeader::num_words()); ++ii) *ii=0;
26 updateFragmentHeaderWC_();
27 fragmentHeader()->type = Fragment::InvalidFragmentType;
28 fragmentHeader()->sequence_id = Fragment::InvalidSequenceID;
29 fragmentHeader()->fragment_id = Fragment::InvalidFragmentID;
30 fragmentHeader()->timestamp = Fragment::InvalidTimestamp;
31 fragmentHeader()->metadata_word_count = 0;
34 artdaq::Fragment::Fragment(sequence_id_t sequenceID,
37 timestamp_t timestamp) :
40 updateFragmentHeaderWC_();
41 if (type == Fragment::DataFragmentType) {
44 fragmentHeader()->setSystemType(type);
46 fragmentHeader()->setUserType(type);
48 fragmentHeader()->sequence_id = sequenceID;
49 fragmentHeader()->fragment_id = fragID;
50 fragmentHeader()->timestamp = timestamp;
51 fragmentHeader()->metadata_word_count = 0;
56 artdaq::Fragment::print(std::ostream & os)
const
58 os <<
" Fragment " << fragmentID()
59 <<
", WordCount " << size()
60 <<
", Event " << sequenceID()
64 std::unique_ptr<artdaq::Fragment>
65 artdaq::Fragment::eodFrag(
size_t nFragsToExpect)
67 std::unique_ptr<artdaq::Fragment> result(
new Fragment(static_cast<size_t>(ceil(
sizeof(nFragsToExpect) /
68 static_cast<double>(
sizeof(value_type))))));
69 result->setSystemType(Fragment::EndOfDataFragmentType);
70 *result->dataBegin() = nFragsToExpect;
76 dataFrag(sequence_id_t sequenceID,
78 RawDataType
const * dataPtr,
80 timestamp_t timestamp)
82 Fragment result(sequenceID, fragID, Fragment::DataFragmentType, timestamp);
83 result.resize(dataSize);
84 memcpy(result.dataAddress(), dataPtr, (dataSize *
sizeof(RawDataType)));