ant
A2 ant: class-based analysis framework
ant::unpacker::acqu::FileFormatMk2 Class Reference

#include <UnpackerAcqu_FileFormatMk2.h>

+ Inheritance diagram for ant::unpacker::acqu::FileFormatMk2:
+ Collaboration diagram for ant::unpacker::acqu::FileFormatMk2:

Protected Member Functions

virtual size_t SizeOfHeader () const override
 
virtual bool InspectHeader (const std::vector< std::uint32_t > &buffer) const override
 
virtual void FillInfo (reader_t &reader, buffer_t &buffer, Info &info) override
 
virtual void FillFirstDataBuffer (reader_t &reader, buffer_t &buffer) const override
 
virtual void UnpackEvent (TEventData &eventdata, it_t &it, const it_t &it_endbuffer, bool &good) noexcept override
 
void HandleScalerBuffer (scalers_t &scalers, it_t &it, const it_t &it_end, bool &good, std::vector< TDAQError > &errors) const noexcept
 
void HandleDAQError (std::vector< TDAQError > &errors, it_t &it, const it_t &it_end, bool &good) const noexcept
 
void HandleEPICSBuffer (std::vector< TSlowControl > &slowcontrols, it_t &it, const it_t &it_end, bool &good) const noexcept
 
- Protected Member Functions inherited from ant::unpacker::acqu::FileFormatBase
void Setup (reader_t &&reader_, buffer_t &&buffer_) override
 
void FillEvents (queue_t &queue) noexcept override
 FillEvents fills the given queue with more TEvent items (if any left) More...
 
void LogMessage (TUnpackerMessage::Level_t level, const std::string &msg, bool emit_warning=false) const
 
void AppendMessagesToEvent (TEvent &event) const
 
bool UnpackDataBuffer (queue_t &queue, it_t &it, const it_t &it_endbuffer) noexcept
 
std::uint32_t GetDataBufferMarker () const
 
bool SearchFirstDataBuffer (reader_t &reader, buffer_t &buffer, size_t offset) const
 
bool FindFirstDataBuffer (reader_t &reader, buffer_t &buffer, const size_t max_multiplier=32, const bool assert_multiplicity=true) const
 
- Protected Member Functions inherited from ant::UnpackerAcquFileFormat
virtual bool InspectHeader (const std::vector< uint32_t > &buffer) const =0
 
virtual void Setup (std::unique_ptr< RawFileReader > &&reader_, std::vector< std::uint32_t > &&buffer_)=0
 

Additional Inherited Members

- Public Types inherited from ant::UnpackerAcquFileFormat
using queue_t = std::list< TEvent >
 
- Public Member Functions inherited from ant::unpacker::acqu::FileFormatBase
virtual ~FileFormatBase ()
 
virtual double PercentDone () const override
 
- Public Member Functions inherited from ant::UnpackerAcquFileFormat
virtual ~UnpackerAcquFileFormat ()
 
- Static Public Member Functions inherited from ant::UnpackerAcquFileFormat
static std::unique_ptr< UnpackerAcquFileFormatGet (const std::string &filename)
 Get a suitable instance for the given filename. More...
 
- Protected Types inherited from ant::unpacker::acqu::FileFormatBase
using reader_t = decltype(reader)
 
using buffer_t = decltype(buffer)
 
using it_t = buffer_t::const_iterator
 
using scalers_t = std::map< uint32_t, std::vector< uint32_t > >
 
using hit_mappings_ptr_t = std::vector< std::vector< const UnpackerAcquConfig::hit_mapping_t *> >
 
using hit_storage_t = std_ext::mapped_vectors< std::uint16_t, std::uint16_t >
 
using scaler_mappings_t = std::vector< UnpackerAcquConfig::scaler_mapping_t >
 
- Static Protected Member Functions inherited from ant::unpacker::acqu::FileFormatBase
static void FillDetectorReadHits (const hit_storage_t &hit_storage, const hit_mappings_ptr_t &hit_mappings_ptr, std::vector< TDetectorReadHit > &hits) noexcept
 
static void FillSlowControls (const scalers_t &scalers, const scaler_mappings_t &scaler_mappings, std::vector< TSlowControl > &slowcontrols) noexcept
 
- Protected Attributes inherited from ant::unpacker::acqu::FileFormatBase
Info info
 
TID id
 
unsigned AcquID_last = 0
 
std::vector< UnpackerAcquConfig::hit_mapping_thit_mappings
 
hit_mappings_ptr_t hit_mappings_ptr
 
hit_storage_t hit_storage
 
scaler_mappings_t scaler_mappings
 

Member Function Documentation

◆ FillFirstDataBuffer()

void acqu::FileFormatMk2::FillFirstDataBuffer ( reader_t reader,
buffer_t buffer 
) const
overrideprotectedvirtual

◆ FillInfo()

void acqu::FileFormatMk2::FillInfo ( reader_t reader,
buffer_t buffer,
Info info 
)
overrideprotectedvirtual
Todo:
Check for overlapping of raw channels?

Implements ant::unpacker::acqu::FileFormatBase.

◆ HandleDAQError()

void acqu::FileFormatMk2::HandleDAQError ( std::vector< TDAQError > &  errors,
it_t it,
const it_t it_end,
bool &  good 
) const
protectednoexcept

◆ HandleEPICSBuffer()

void acqu::FileFormatMk2::HandleEPICSBuffer ( std::vector< TSlowControl > &  slowcontrols,
it_t it,
const it_t it_end,
bool &  good 
) const
protectednoexcept
Todo:
Find some way without copying the data?
Todo:
correct for endian-ness / machine byte ordering?

◆ HandleScalerBuffer()

void acqu::FileFormatMk2::HandleScalerBuffer ( scalers_t scalers,
it_t it,
const it_t it_end,
bool &  good,
std::vector< TDAQError > &  errors 
) const
protectednoexcept

◆ InspectHeader()

bool acqu::FileFormatMk2::InspectHeader ( const std::vector< std::uint32_t > &  buffer) const
overrideprotectedvirtual

◆ SizeOfHeader()

size_t acqu::FileFormatMk2::SizeOfHeader ( ) const
overrideprotectedvirtual

◆ UnpackEvent()

void acqu::FileFormatMk2::UnpackEvent ( TEventData eventdata,
it_t it,
const it_t it_endbuffer,
bool &  good 
)
overrideprotectedvirtualnoexcept
Todo:
Scan mappings if there's an ADC channel defined which mimicks those blocks
Todo:
Implement better handling of malformed event buffers
Todo:
Implement more fine-grained unpacking error handling

Implements ant::unpacker::acqu::FileFormatBase.


The documentation for this class was generated from the following files: