/* * CbmDaqBuffer.cxx * * Created on: 17.07.2012 * Author: friese */ #include "CbmDaqBuffer.h" #include "FairLogger.h" CbmDaqBuffer* CbmDaqBuffer::fgInstance = NULL; CbmDaqBuffer::CbmDaqBuffer() { // TODO Auto-generated constructor stub } CbmDaqBuffer::~CbmDaqBuffer() { // TODO Auto-generated destructor stub } Double_t CbmDaqBuffer::GetFirstTime() const { Double_t time = -1.; for (Int_t iDet = kREF; iDet < kNOFDETS; iDet++) time = ( time < GetFirstTime(iDet) ? time : GetFirstTime(iDet) ); return time; } Double_t CbmDaqBuffer::GetLastTime() const { Double_t time = -1.; for (Int_t iDet = kREF; iDet < kNOFDETS; iDet++) time = ( time > GetLastTime(iDet) ? time : GetLastTime(iDet) ); return time; } CbmDigi* CbmDaqBuffer::GetNextData(Int_t iDet, Double_t time) { if ( iDet >= kNOFDETS ) { FairLogger::GetLogger()->Warning(MESSAGE_ORIGIN, "Illegal system ID %d ", iDet); return NULL; } CbmDigi* digi = NULL; multimap::iterator it = fData[iDet].begin(); CbmDigi* test = it->second; if ( digi->GetTime() < time ) { digi = test; fData[iDet].erase(it); } return digi; } Int_t CbmDaqBuffer::GetSize() const { Int_t size = 0; for (Int_t iDet = kREF; iDet < kNOFDETS; iDet++) size += fData[iDet].size(); return size; } void CbmDaqBuffer::InsertData(CbmDigi* digi) { Int_t iDet = digi->GetSystemId(); if ( iDet >= kNOFDETS) { FairLogger::GetLogger()->Warning(MESSAGE_ORIGIN, "Unknown System ID %i", iDet); return; } pair value (digi->GetTime(), digi); fData[iDet].insert(value); } // ----- Instance -------------------------------------------------------- CbmDaqBuffer* CbmDaqBuffer::Instance() { if ( ! fgInstance ) fgInstance = new CbmDaqBuffer(); return fgInstance; } // ---------------------------------------------------------------------------