15#include "FairLogger.h"
20using std::setprecision;
21using std::stringstream;
34BmnDaqBuffer::BmnDaqBuffer() {
49 Bool_t firstDetector = kTRUE;
52 if ( firstDetector ) {
54 firstDetector = kFALSE;
67 if ( iDet < kREF || iDet >=
kNOFDETS )
return -1.;
68 if ( !
GetSize(iDet) )
return -1.;
69 assert ( (fData[iDet].begin())->second );
70 return (fData[iDet].begin())->second->GetTime();
79 Bool_t firstDetector = kTRUE;
82 if ( firstDetector ) {
84 firstDetector = kFALSE;
97 if ( iDet < kREF || iDet >=
kNOFDETS )
return -1.;
98 if ( !
GetSize(iDet) )
return -1.;
99 assert ( (--fData[iDet].end())->second );
100 return (--fData[iDet].end())->second->GetTime();
111 LOG(WARNING) <<
"DaqBuffer: Illegal system ID " << iDet;
116 if ( ! fData[iDet].size() )
return NULL;
120 multimap<Double_t, BmnDigi*>::iterator it = fData[iDet].begin();
123 fData[iDet].erase(it);
137 LOG(WARNING) <<
"DaqBuffer: Illegal system ID " << iDet;
142 if ( ! fData[iDet].size() )
return NULL;
146 multimap<Double_t, BmnDigi*>::iterator it = fData[iDet].begin();
148 if ( test->
GetTime() < time ) {
150 fData[iDet].erase(it);
164 size += fData[iDet].size();
174 if ( det < kREF || det >
kNOFDETS)
return 0;
175 return fData[det].size();
184 if ( ! digi ) LOG(fatal) <<
"DaqBuffer: invalid digi pointer";
188 LOG(WARNING) <<
"DaqBuffer: Illegal system ID " << iDet;
192 pair<Double_t, BmnDigi*> value (digi->
GetTime(), digi);
193 fData[iDet].insert(value);
195 LOG(debug2) <<
"DaqBuffer: Inserting digi, detectorID "
216 LOG(info) <<
"DaqBuffer: Status ";
218 LOG(info) <<
"empty";
224 LOG(info) << sysName <<
" " <<
GetSize(det) <<
" ";
227 LOG(info) <<
"\t " <<
"Total: " <<
GetSize() <<
" from "
228 << fixed << setprecision(3) <<
GetFirstTime() <<
" ns to "
248 ss << sysName <<
" " <<
GetSize(det) <<
" ";
251 ss <<
"Total: " << size <<
" from " << fixed << setprecision(3)
Singleton buffer class for BMN raw data.
BmnDigi * GetNextData(Int_t iDet)
Pointer to next raw data object for a given detector.
Double_t GetFirstTime() const
Double_t GetLastTime() const
std::string ToString() const
static BmnDaqBuffer * Instance()
void InsertData(BmnDigi *digi)
Base class for persistent representation of digital information.
virtual Int_t GetSystemId() const =0
virtual Double_t GetTime() const =0
virtual Int_t GetAddress() const =0
static TString GetModuleNameCaps(Int_t moduleId)