PandaRoot
PndDiscWriteoutBuffer.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 // Author: Oliver Merle (Oliver.Merle@exp2.physik.uni-giessen.de)
15 // Changes: Mustafa Schmidt (Mustafa.A.Schmidt@physik.uni-giessen.de)
16 // Date: 30.11.2015
17 // Description: Customization of FairRoot Write out buffer
18 // for time-based simulations
19 //-------------------------------------------------------------------------
20 
21 #ifndef DISCDIRCWRITEOUTBUFFER_H
22 #define DISCDIRCWRITEOUTBUFFER_H
23 
24 // ---------------------------
25 // vanilla PROOT
26 // ---------------------------
27 //#define RRTTI
28 #define FWB_USE_INHERITANCE
29 // ---------------------------
30 
31 #include "FairWriteoutBuffer.h"
32 #include "PndDiscDigitizedHit.h"
33 #include <iostream>
34 
35 class PndDiscWriteoutBuffer : public FairWriteoutBuffer {
36  public:
37 #ifdef RRTTI
38  struct CompareDigits {
40  bool operator()(const FairTimeStamp *const &p1, const FairTimeStamp *const &p2) const { return (*p1) < (*p2); }
41  };
42 #endif
43 
44  public:
46  PndDiscWriteoutBuffer(TString branchName, TString folderName, Bool_t persistance);
47  virtual ~PndDiscWriteoutBuffer();
48 
49  // the following should become a functor:
50  virtual std::vector<std::pair<double, FairTimeStamp *>> Modify(std::pair<double, FairTimeStamp *> oldData, std::pair<double, FairTimeStamp *> newData);
51 
52 #ifdef FWB_USE_INHERITANCE
53  // Interface due to lack of templates, will be replaced by
54  // RTTI based implementations in the base class:
55  virtual void AddNewDataToTClonesArray(FairTimeStamp *);
56  virtual double FindTimeForData(FairTimeStamp *data);
57  virtual void FillDataMap(FairTimeStamp *data, double activeTime);
58  virtual void EraseDataFromDataMap(FairTimeStamp *data);
59 #endif
60 
61  protected:
62 #ifndef RRTTI
63  std::map<PndDiscDigitizedHit, double> fData_map;
64 #else
65  typedef std::map<FairTimeStamp *, double, CompareDigits> DataMap_t;
66  DataMap_t fData_map;
67  TBuffer *buffer;
68 #endif
69 
71 };
72 
73 #endif // DISCDIRCWRITEOUTBUFFER_H
ClassDef(PndDiscWriteoutBuffer, 1)
virtual ~PndDiscWriteoutBuffer()
virtual void FillDataMap(FairTimeStamp *data, double activeTime)
virtual void EraseDataFromDataMap(FairTimeStamp *data)
virtual std::vector< std::pair< double, FairTimeStamp * > > Modify(std::pair< double, FairTimeStamp *> oldData, std::pair< double, FairTimeStamp *> newData)
std::map< PndDiscDigitizedHit, double > fData_map
virtual double FindTimeForData(FairTimeStamp *data)
virtual void AddNewDataToTClonesArray(FairTimeStamp *)