/* * TbUTMamdaDataReader.cpp * * Created on: Jun 24, 2015 * Author: ADendek */ #include "TbUTMambaDataReader.h" #include <iostream> using namespace TbUT; using namespace std; MambaDataReader::MambaDataReader(std::string& p_fileName, IFileValidator& p_fileValidator, bool& p_isAType): m_fileName(p_fileName), m_fileValidator(p_fileValidator), m_decoder(p_isAType) { } void MambaDataReader::checkInput() { if( ! m_fileValidator.validateFile() ){ std::string errorMsg= "file validation error"; throw IDataReader::InputFileError(errorMsg); } if(! m_decoder.open(m_fileName.c_str())){ std::string errorMsg= "cannot open input file"; throw IDataReader::InputFileError(errorMsg); } } RawData<>* MambaDataReader::getEventData() { while(true){ if(m_decoder.eof()){ string l_errorMsg ="No more event!"; throw IDataReader::NoMoreEvents(l_errorMsg); } if(0==m_decoder.read_event()){ continue; } else break; } RawData<> *l_outputData=new RawData<>(); fillRawData(l_outputData); return l_outputData; } void MambaDataReader::fillRawData(RawData<>* p_outputData) { auto signalVector=m_decoder.ADC(); auto headerVector0=m_decoder.BHeader0(); auto headerVector1=m_decoder.BHeader1(); auto headerVector2=m_decoder.BHeader2(); auto headerVector3=m_decoder.BHeader3(); auto headerVector3P1=m_decoder.BHeader3P1(); auto headerVector3P2=m_decoder.BHeader3P2(); for( const auto& l_adc : signalVector) p_outputData->setSignal(l_adc); for( const auto& l_hdr0 : headerVector0) p_outputData->setHeader0(l_hdr0); for( const auto& l_hdr1 : headerVector1) p_outputData->setHeader1(l_hdr1); for( const auto& l_hdr2 : headerVector2) p_outputData->setHeader2(l_hdr2); for( const auto& l_hdr3 : headerVector3) p_outputData->setHeader3(l_hdr3); for( const auto& l_hdr3P1 : headerVector3P1) p_outputData->setHeader3P1(l_hdr3P1); for( const auto& l_hdr3P2 : headerVector3P2) p_outputData->setHeader3P2(l_hdr3P2); p_outputData->setTime(m_decoder.TsTimestamp()); p_outputData->setTDC(m_decoder.TDC()); }