FairRoot/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)
23  {
24  fRingBuffer.resize(size);
25  }
26 
27  virtual ~PndRingSorter(){};
28 
29  virtual FairTimeStamp* CreateElement(FairTimeStamp* data) = 0;
30 
31  virtual void AddElement(FairTimeStamp* digi, double timestamp);
32  virtual void WriteOutElements(int index);
33  virtual void WriteOutElement(int index);
34  virtual void WriteOutAll(){
36  }
37  virtual double GetBufferSize(){return fCellWidth * fRingBuffer.size();}
38  virtual std::vector<FairTimeStamp*> GetOutputData(){
39  return fOutputData;
40  }
41 
42  virtual void DeleteOutputData(){fOutputData.clear(); }
43  virtual void SetLowerBound(double timestampOfHitToWrite);
44 
45  virtual void Print(std::ostream& out = std::cout){
46  out << "RingSorter: Size " << fRingBuffer.size() << " CellWidth: " << fCellWidth << std::endl;
47  out << "LowerBoundPointer at index: " << fLowerBoundPointer.first << " Time: " << fLowerBoundPointer.second << std::endl;
48  out << "| ";
49  for (int i = 0; i < fRingBuffer.size(); i++){
50  out << fRingBuffer[i].size() << " |";
51  }
52  out << std::endl;
53  }
54 
55 
56 private:
57  int CalcIndex(double val);
58  std::vector<std::multimap<double, FairTimeStamp*> > fRingBuffer;
59  std::vector<FairTimeStamp*> fOutputData;
60  std::pair<int, double> fLowerBoundPointer;
61  double fCellWidth;
62  int fVerbose;
63 
64  ClassDef(PndRingSorter,1)
65 
66 };
67 
68 #endif /* PndRingSorter_H_ */
virtual void AddElement(FairTimeStamp *digi, double timestamp)
virtual ~PndRingSorter()
Definition: PndRingSorter.h:27
std::vector< FairTimeStamp * > fOutputData
Definition: PndRingSorter.h:59
TClonesArray * digi
virtual std::vector< FairTimeStamp * > GetOutputData()
Definition: PndRingSorter.h:38
Int_t i
Definition: run_full.C:25
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
virtual FairTimeStamp * CreateElement(FairTimeStamp *data)=0
virtual void Print(std::ostream &out=std::cout)
Definition: PndRingSorter.h:45
double fCellWidth
Definition: PndRingSorter.h:61
virtual void WriteOutAll()
Definition: PndRingSorter.h:34
int CalcIndex(double val)
virtual void SetLowerBound(double timestampOfHitToWrite)
TFile * out
Definition: reco_muo.C:20
virtual void DeleteOutputData()
Definition: PndRingSorter.h:42
virtual double GetBufferSize()
Definition: PndRingSorter.h:37
std::pair< int, double > fLowerBoundPointer
Definition: PndRingSorter.h:60
virtual void WriteOutElement(int index)
writes out the entry at the index and clears it
virtual void WriteOutElements(int index)
writes out the entries from LowerBoundPointer up to index
PndRingSorter(int size=100, double width=10)
Definition: PndRingSorter.h:22
std::vector< std::multimap< double, FairTimeStamp * > > fRingBuffer
Definition: PndRingSorter.h:58