Newer
Older
TB_Chris / TbUT / src / .svn / text-base / TbUTMambaDataReader.cpp.svn-base
  1. /*
  2. * TbUTMamdaDataReader.cpp
  3. *
  4. * Created on: Jun 24, 2015
  5. * Author: ADendek
  6. */
  7.  
  8. #include "TbUTMambaDataReader.h"
  9. #include <iostream>
  10.  
  11. using namespace TbUT;
  12. using namespace std;
  13.  
  14. MambaDataReader::MambaDataReader(std::string& p_fileName, IFileValidator& p_fileValidator, bool& p_isAType):
  15. m_fileName(p_fileName),
  16. m_fileValidator(p_fileValidator),
  17. m_decoder(p_isAType)
  18. {
  19. }
  20.  
  21. void MambaDataReader::checkInput()
  22. {
  23. if( ! m_fileValidator.validateFile() ){
  24. std::string errorMsg= "file validation error";
  25. throw IDataReader::InputFileError(errorMsg);
  26.  
  27. }
  28. if(! m_decoder.open(m_fileName.c_str())){
  29. std::string errorMsg= "cannot open input file";
  30. throw IDataReader::InputFileError(errorMsg);
  31. }
  32. }
  33.  
  34. RawData<>* MambaDataReader::getEventData()
  35. {
  36. while(true){
  37. if(m_decoder.eof()){
  38. string l_errorMsg ="No more event!";
  39. throw IDataReader::NoMoreEvents(l_errorMsg);
  40. }
  41. if(0==m_decoder.read_event()){
  42. continue;
  43. }
  44. else break;
  45. }
  46. RawData<> *l_outputData=new RawData<>();
  47. fillRawData(l_outputData);
  48. return l_outputData;
  49. }
  50.  
  51. void MambaDataReader::fillRawData(RawData<>* p_outputData)
  52. {
  53. auto signalVector=m_decoder.ADC();
  54. auto headerVector0=m_decoder.BHeader0();
  55. auto headerVector1=m_decoder.BHeader1();
  56. auto headerVector2=m_decoder.BHeader2();
  57. auto headerVector3=m_decoder.BHeader3();
  58. auto headerVector3P1=m_decoder.BHeader3P1();
  59. auto headerVector3P2=m_decoder.BHeader3P2();
  60. for( const auto& l_adc : signalVector) p_outputData->setSignal(l_adc);
  61. for( const auto& l_hdr0 : headerVector0) p_outputData->setHeader0(l_hdr0);
  62. for( const auto& l_hdr1 : headerVector1) p_outputData->setHeader1(l_hdr1);
  63. for( const auto& l_hdr2 : headerVector2) p_outputData->setHeader2(l_hdr2);
  64. for( const auto& l_hdr3 : headerVector3) p_outputData->setHeader3(l_hdr3);
  65. for( const auto& l_hdr3P1 : headerVector3P1) p_outputData->setHeader3P1(l_hdr3P1);
  66. for( const auto& l_hdr3P2 : headerVector3P2) p_outputData->setHeader3P2(l_hdr3P2);
  67. p_outputData->setTime(m_decoder.TsTimestamp());
  68. p_outputData->setTDC(m_decoder.TDC());
  69. }