4 #include "utl/BinIO.hpp"
5 #include <boost/cstdint.hpp>
71 static const size_t SIZE_BYTES = 6u;
74 hit(uint8_t* data) : data(data) {}
87 static const size_t PREAMBLE_SIZE_BYTES = 32u;
88 frame() : rawPreamble(0), rawData(0) {}
89 ~frame() {
if (rawPreamble != 0)
delete [] rawPreamble;
if (rawData != 0)
delete [] rawData; }
90 frame(std::istream& input) : rawPreamble(0), rawData(0) { Read(input); }
91 bool Read(std::istream& input);
92 uint32_t
FrameSize() {
return GetNumber<uint32_t>( 0u); }
93 uint16_t
ItemType() {
return GetNumber<uint16_t>( 4u); }
95 uint64_t
FrameTime() {
return GetNumber<uint64_t>( 8u); }
96 uint32_t
FrameIndex() {
return GetNumber<uint32_t>(16u); }
99 uint16_t
DomId() {
return GetNumber<uint16_t>(24u); }
100 uint16_t
StreamId() {
return GetNumber<uint16_t>(26u); }
101 uint32_t
RunNumber() {
return GetNumber<uint32_t>(28u); }
102 hit CurHit(
size_t iHit);
103 void HexDumpPreamble();
108 void HexDumpAll() { HexDumpPreamble(); HexDumpHits(); HexDumpTail(); }
109 void DumpAll() { DumpPreamble(); DumpHits(); HexDumpTail(); }
113 template <
typename T >
114 T GetNumber(
size_t iFirstByte);
116 uint8_t* rawPreamble;
124 long long int FillRaw(std::ifstream& str, std::vector<dom>& vSlice,
long long int bitPosition,
bool toWrite);
129 bool IsNoisySlice(
const int signalNb,
const double limitNb);
131 template <
typename T >
132 T frame::GetNumber(
size_t iFirstByte) {
133 T n =
reinterpret_cast<T*
>(rawPreamble + iFirstByte)[0];
int GetFirstBit(size_t pattern, int firstBit)
organisation of the data - dom level
frame(std::istream &input)
long long int FillRaw(std::ifstream &str, std::vector< dom > &vSlice, long long int bitPosition, bool toWrite)
long long int GetFileLength(std::ifstream &str)
bool IsNoisySlice(const int signalNb, const double limitNb)
int GetLastBit(size_t pattern, int firstBit)
void WriteSlice(dom &curDom)