// ----------------------------------------------------------------------------- // ----- ----- // ----- CbmRocSource ----- // ----- Created 01.11.2013 by F. Uhlig ----- // ----- ----- // ----------------------------------------------------------------------------- #include #include "CbmRocSource.h" #include "FairLogger.h" CbmRocSource::CbmRocSource() : FairSource(), fInputFileName(""), fNofMessages(0), fRocIter(NULL), fCurrentMessage(NULL) { } CbmRocSource::CbmRocSource(const char * inFile) : FairSource(), fInputFileName(inFile), fNofMessages(0), fRocIter(NULL), fCurrentMessage(NULL) { } CbmRocSource::CbmRocSource(const CbmRocSource& source) : FairSource(source) { } CbmRocSource::~CbmRocSource() { } Bool_t CbmRocSource::Init() { roc::Iterator iter("./Be_run15_0000.lmd"); LOG(INFO) << "Test "<< FairLogger::endl; int numdata = 0; int types[8]; for (int n=0;n<8;n++) types[n] = 0; const char* names[8] = { "NOP", "HIT", "EPOCH", "SYNC", "AUX", "EPOCH2", "GET4", "SYS" }; while (iter.next() && numdata < 10) { if (numdata++) iter.printMessage(7); if (iter.msg().getMessageType()<8) types[iter.msg().getMessageType()]++; } printf ("Num messages:%d \n", numdata); for (int n=0;n<8;n++) printf(" Type: %d %7s cnt: %d\n", n, names[n], types[n]); LOG(INFO) << "Initialising " << GetName() << FairLogger::endl; LOG(INFO) << "Open input file " << fInputFileName << FairLogger::endl; // fRocIter = new roc::Iterator(fInputFileName.Data()); /* int numdata = 0; int types[8]; for (int n=0;n<8;n++) types[n] = 0; const char* names[8] = { "NOP", "HIT", "EPOCH", "SYNC", "AUX", "EPOCH2", "GET4", "SYS" }; while (fRocIter->next() && numdata < 10) { if (numdata++) fRocIter->printMessage(7); if (fRocIter->msg().getMessageType()<8) types[fRocIter->msg().getMessageType()]++; } printf ("Num messages:%d \n", numdata); for (int n=0;n<8;n++) printf(" Type: %d %7s cnt: %d\n", n, names[n], types[n]); */ /* if ( ! fRocIter->next() ) { LOG(FATAL) << "Input file does not exist or is empty!" << FairLogger::endl; } fCurrentMessage = &fRocIter->msg(); fNofMessages++; */ return kTRUE; } Int_t CbmRocSource::ReadEvent() { LOG(INFO) << "Read event " << fNofMessages << FairLogger::endl; // No action if no message available if ( ! fCurrentMessage ) { LOG(ERROR) << "No more mssages in input file." << FairLogger::endl; return -42; } // --- Loop over messages until event end while (fCurrentMessage) { LOG_IF(INFO, fCurrentMessage->isEpochMsg()) << "This is an epoch message" << FairLogger::endl; LOG_IF(INFO, fCurrentMessage->isAuxMsg()) << "This is an aux message" << FairLogger::endl; LOG_IF(INFO, fCurrentMessage->isHitMsg()) << "This is a hit message" << FairLogger::endl; LOG_IF(INFO, fCurrentMessage->isEpochMsg()) << "This is an epoch message" << FairLogger::endl; LOG_IF(INFO, fCurrentMessage->isEpochMsg()) << "This is an epoch message" << FairLogger::endl; } // Next ROC message if ( fRocIter->next() ) { fCurrentMessage = &fRocIter->msg(); fNofMessages++; } else { fCurrentMessage = NULL; } return 1; } void CbmRocSource::Close() { } void CbmRocSource::Reset() { } ClassImp(CbmRocSource)