PandaRoot
PndRingSorter.h
Go to the documentation of this file.
1 /*
2  * PndRingSorter.h
3  *
4  * Created on: Jul 15, 2010
5  * Author: stockman
6  */
7 
8 #ifndef PndRingSorter_H_
9 #define PndRingSorter_H_
10 
11 #include "TObject.h"
12 #include "FairTimeStamp.h"
13 
14 #include <vector>
15 #include <stack>
16 #include <map>
17 
18 #include <iostream>
19 
20 class PndRingSorter : public TObject {
21  public:
22  PndRingSorter(int size = 100, double width = 10) : fLowerBoundPointer(0, 0), fCellWidth(width), fVerbose(0) { fRingBuffer.resize(size); }
23 
24  virtual ~PndRingSorter(){};
25 
26  virtual FairTimeStamp *CreateElement(FairTimeStamp *data) = 0;
27 
28  virtual void AddElement(FairTimeStamp *digi, double timestamp);
29  virtual void WriteOutElements(int index);
30  virtual void WriteOutElement(int index);
31  virtual void WriteOutAll() { WriteOutElements(fLowerBoundPointer.first); }
32  virtual double GetBufferSize() { return fCellWidth * fRingBuffer.size(); }
33  virtual std::vector<FairTimeStamp *> GetOutputData() { return fOutputData; }
34 
35  virtual void DeleteOutputData() { fOutputData.clear(); }
36  virtual void SetLowerBound(double timestampOfHitToWrite);
37 
38  virtual void Print(std::ostream &out = std::cout)
39  {
40  out << "RingSorter: Size " << fRingBuffer.size() << " CellWidth: " << fCellWidth << std::endl;
41  out << "LowerBoundPointer at index: " << fLowerBoundPointer.first << " Time: " << fLowerBoundPointer.second << std::endl;
42  out << "| ";
43  for (int i = 0; i < fRingBuffer.size(); i++) {
44  out << fRingBuffer[i].size() << " |";
45  }
46  out << std::endl;
47  }
48 
49  private:
50  int CalcIndex(double val);
51  std::vector<std::multimap<double, FairTimeStamp *>> fRingBuffer;
52  std::vector<FairTimeStamp *> fOutputData;
53  std::pair<int, double> fLowerBoundPointer;
54  double fCellWidth;
55  int fVerbose;
56 
57  ClassDef(PndRingSorter, 1)
58 };
59 
60 #endif /* PndRingSorter_H_ */
virtual std::vector< FairTimeStamp * > GetOutputData()
Definition: PndRingSorter.h:33
virtual void SetLowerBound(double timestampOfHitToWrite)
virtual ~PndRingSorter()
Definition: PndRingSorter.h:24
virtual FairTimeStamp * CreateElement(FairTimeStamp *data)=0
virtual void Print(std::ostream &out=std::cout)
Definition: PndRingSorter.h:38
unsigned int i
Definition: P4_F32vec4.h:21
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()
Definition: PndRingSorter.h:31
virtual void WriteOutElements(int index)
writes out the entries from LowerBoundPointer up to index
virtual void DeleteOutputData()
Definition: PndRingSorter.h:35
virtual double GetBufferSize()
Definition: PndRingSorter.h:32
PndRingSorter(int size=100, double width=10)
Definition: PndRingSorter.h:22