8 #ifndef PndRingSorter_H_ 9 #define PndRingSorter_H_ 12 #include "FairTimeStamp.h" 22 PndRingSorter(
int size = 100,
double width = 10) : fLowerBoundPointer(0, 0), fCellWidth(width), fVerbose(0) { fRingBuffer.resize(size); }
26 virtual FairTimeStamp *
CreateElement(FairTimeStamp *data) = 0;
28 virtual void AddElement(FairTimeStamp *digi,
double timestamp);
32 virtual double GetBufferSize() {
return fCellWidth * fRingBuffer.size(); }
33 virtual std::vector<FairTimeStamp *>
GetOutputData() {
return fOutputData; }
38 virtual void Print(std::ostream &out = std::cout)
40 out <<
"RingSorter: Size " << fRingBuffer.size() <<
" CellWidth: " << fCellWidth << std::endl;
41 out <<
"LowerBoundPointer at index: " << fLowerBoundPointer.first <<
" Time: " << fLowerBoundPointer.second << std::endl;
43 for (
int i = 0;
i < fRingBuffer.size();
i++) {
44 out << fRingBuffer[
i].size() <<
" |";
50 int CalcIndex(
double val);
51 std::vector<std::multimap<double, FairTimeStamp *>> fRingBuffer;
52 std::vector<FairTimeStamp *> fOutputData;
53 std::pair<int, double> fLowerBoundPointer;
virtual std::vector< FairTimeStamp * > GetOutputData()
virtual void SetLowerBound(double timestampOfHitToWrite)
virtual FairTimeStamp * CreateElement(FairTimeStamp *data)=0
virtual void Print(std::ostream &out=std::cout)
virtual void AddElement(FairTimeStamp *digi, double timestamp)
virtual void WriteOutElement(int index)
writes out the entry at the index and clears it
virtual void WriteOutAll()
virtual void WriteOutElements(int index)
writes out the entries from LowerBoundPointer up to index
virtual void DeleteOutputData()
virtual double GetBufferSize()
PndRingSorter(int size=100, double width=10)