PandaRoot
tools/PndMQ/PndMapSorter.h
Go to the documentation of this file.
1 /********************************************************************************
2  * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3  * *
4  * This software is distributed under the terms of the *
5  * GNU Lesser General Public Licence version 3 (LGPL) version 3, *
6  * copied verbatim in the file "LICENSE" *
7  ********************************************************************************/
8 /*
9  * PndMapSorter.h
10  *
11  * Created on: Jul 15, 2010
12  * Author: stockman
13  */
14 
15 #ifndef PndMapSorter_H_
16 #define PndMapSorter_H_
17 
18 //#include "TObject.h" // for TObject
19 
20 #include <iosfwd> // for ostream
21 #include "Rtypes.h" // for PndMapSorter::Class, etc
22 
23 #include <iostream> // for operator<<, ostream, etc
24 #include <map> // for multimap
25 #include <utility> // for pair
26 #include <vector> // for vector
27 
28 #include "FairTimeStamp.h"
29 
30 class PndMapSorter //: public TObject
31 {
32  public:
33  PndMapSorter(double timeOffset = 1000000) : fOutputData(), fVerbose(0), fTimeOffset(timeOffset), fOldTS(0) {}
34 
35  virtual ~PndMapSorter(){};
36 
37  virtual FairTimeStamp *CreateElement(FairTimeStamp *data);
38 
39  virtual void AddElement(FairTimeStamp *digi, double timestamp);
40  virtual void AddElements(std::vector<FairTimeStamp *> dataArray)
41  {
42  for (auto dataItr : dataArray)
43  AddElement(dataItr, dataItr->GetTimeStamp());
44  }
45  virtual void WriteOutAll();
46  virtual void WriteOutData(double time);
47  virtual std::vector<FairTimeStamp *> GetOutputData() { return fOutputData; }
48 
49  virtual void DeleteOutputData()
50  {
51  // std::cout << "DeleteOutputData size: " << fOutputData.size() << std::endl;
52  for (int itr = 0; itr < fOutputData.size(); itr++) {
53  // std::cout << itr << " " << fOutputData[itr] << std::endl;
54  // delete(fOutputData[itr]);
55  }
56  fOutputData.clear();
57  }
58 
59  virtual void print(std::ostream &out = std::cout) {}
60 
61  virtual void PrintMap(std::ostream &out = std::cout)
62  {
63  int i = 0;
64  out << "PndMapsSorter Print Map: " << std::endl;
65  for (std::multimap<double, FairTimeStamp *>::iterator itr = fMapBuffer.begin(); itr != fMapBuffer.end(); itr++) {
66  out << i++ << " : " << itr->first << std::endl;
67  }
68  out << std::endl;
69  }
70 
71  private:
72  std::multimap<double, FairTimeStamp *> fMapBuffer;
73  std::vector<FairTimeStamp *> fOutputData;
74  double fOldTS;
75  double fTimeOffset;
76  int fVerbose;
77 
78  // ClassDef(PndMapSorter,1)
79 };
80 
81 #endif /* PndMapSorter_H_ */
virtual std::vector< FairTimeStamp * > GetOutputData()
virtual void WriteOutData(double time)
virtual FairTimeStamp * CreateElement(FairTimeStamp *data)
virtual void WriteOutAll()
virtual void DeleteOutputData()
unsigned int i
Definition: P4_F32vec4.h:21
virtual void PrintMap(std::ostream &out=std::cout)
virtual void AddElements(std::vector< FairTimeStamp *> dataArray)
PndMapSorter(double timeOffset=1000000)
virtual void print(std::ostream &out=std::cout)
virtual void AddElement(FairTimeStamp *digi, double timestamp)