PandaRoot
PndWriteoutBuffer.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 
36 #ifndef PNDWRITEOUTBUFFER_H_
37 #define PNDWRITEOUTBUFFER_H_
38 
39 #include "TObject.h"
40 #include "TString.h"
41 #include "FairWriteoutBuffer.h"
42 #include "FairTimeStamp.h"
43 #include <map>
44 
45 class PndWriteoutBuffer : public FairWriteoutBuffer {
46  public:
48  PndWriteoutBuffer(TString branchName, TString className, TString folderName, Bool_t persistance);
49  virtual ~PndWriteoutBuffer(){};
50 
51  virtual void WriteOutData(double time);
52  virtual void WriteOutAllData();
53 
54  virtual void SaveDataToTree(Bool_t val = kTRUE) { fTreeSave = val; }
55  virtual void ActivateBuffering(Bool_t val = kTRUE)
56  {
57  fActivateBuffering = val;
58  }
59 
60  virtual std::vector<FairTimeStamp *> GetRemoveOldData(double time);
61  virtual std::vector<FairTimeStamp *> GetAllData();
62  virtual void FillNewData(FairTimeStamp *data, double activeTime);
63  virtual Int_t GetNData() { return fDeadTime_map.size(); }
64 
65  virtual void AddNewDataToTClonesArray(FairTimeStamp *data) = 0;
66  virtual void DeleteOldData()
67  {
68  TClonesArray *myArray = FairRootManager::Instance()->GetTClonesArray(fBranchName);
69  myArray->Delete();
70  }
71 
72  virtual double FindTimeForData(
73  FairTimeStamp *data) = 0;
74  virtual void FillDataMap(FairTimeStamp *data, double activeTime) = 0;
75  virtual void EraseDataFromDataMap(FairTimeStamp *data) = 0;
76 
77  virtual void SetVerbose(Int_t val) { fVerbose = val; }
78 
79  protected:
82  virtual std::vector<std::pair<double, FairTimeStamp *>> Modify(std::pair<double, FairTimeStamp *> oldData, std::pair<double, FairTimeStamp *> newData)
83  {
84  std::vector<std::pair<double, FairTimeStamp *>> result;
85  result.push_back(oldData);
86  return result;
87  }
88 
89  std::multimap<double, FairTimeStamp *> fDeadTime_map;
90 
91  TString fBranchName;
92  TString fClassName;
93  Bool_t fTreeSave;
95  Int_t fVerbose;
97 };
98 
99 #endif /* PNDWRITEOUTBUFFER_H_ */
virtual void FillDataMap(FairTimeStamp *data, double activeTime)=0
add a new element in the search buffer
virtual void DeleteOldData()
virtual Int_t GetNData()
virtual ~PndWriteoutBuffer()
virtual void EraseDataFromDataMap(FairTimeStamp *data)=0
delete the element from the search buffer (see PndSdsDigiPixelWriteoutBuffer)
virtual void WriteOutData(double time)
virtual void WriteOutAllData()
virtual std::vector< FairTimeStamp * > GetRemoveOldData(double time)
virtual std::vector< FairTimeStamp * > GetAllData()
virtual void FillNewData(FairTimeStamp *data, double activeTime)
virtual void AddNewDataToTClonesArray(FairTimeStamp *data)=0
store the data from the FairTimeStamp pointer in a TClonesArray (you have to cast it to your type of ...
virtual std::vector< std::pair< double, FairTimeStamp * > > Modify(std::pair< double, FairTimeStamp *> oldData, std::pair< double, FairTimeStamp *> newData)
std::multimap< double, FairTimeStamp * > fDeadTime_map
virtual double FindTimeForData(FairTimeStamp *data)=0
if the same data object (like a pad or a pixel) is already present in the buffer, the time of this ob...
virtual void SaveDataToTree(Bool_t val=kTRUE)
If SaveDataToTree is set the data is stored at the end of the buffering into the given TClonesArray...
A container class to store digi data during events.
virtual void ActivateBuffering(Bool_t val=kTRUE)
fActivateBuffering has to be set to kTRUE to use the buffering. Otherwise the data is directly stored...
virtual void SetVerbose(Int_t val)
ClassDef(PndWriteoutBuffer, 1)