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