FairRoot/PandaRoot
PndMvdMQFileSamplerBursts.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  ********************************************************************************/
15 #ifndef PndMvdMQFileSamplerBursts_H_
16 #define PndMvdMQFileSamplerBursts_H_
17 
18 #include <string>
19 
20 #include "FairFileSource.h"
21 #include "FairRunAna.h"
22 #include "FairTimeStamp.h"
23 
24 #include "FairMQDevice.h"
25 
26 #include "PndBurstVectorBuilder.h"
27 
28 #include "TClonesArray.h"
29 
31 {
32  unsigned int fRunID;
33  unsigned int fBurstID;
34  std::string fBranchName;
35 
36  template<class Archive>
37  void serialize(Archive & ar, const unsigned int version)
38  {
39  ar & fRunID;
40  ar & fBurstID;
41  ar & fBranchName;
42  }
43 
44  #ifndef __CINT__ // for BOOST serialization
46  #endif // for BOOST serialization
47 
48 };
49 
50 struct BurstData
51 {
52  BurstData() : fHeader(), fData(){};
53  virtual ~BurstData(){
54  for (auto itr : fData){
55  for (auto dataItr : itr){
56  delete(dataItr);
57  }
58  itr.clear();
59  }
60  fData.clear();
61  };
63  std::vector<std::vector<FairTimeStamp*> > fData;
64 
65  virtual void Reset()
66  {
67 
68  }
69 
70  template<class Archive>
71  void serialize(Archive & ar, const unsigned int version)
72  {
73  ar & fHeader;
74  ar & fData;
75  }
76 
77  #ifndef __CINT__ // for BOOST serialization
79  #endif
80 
81 };
82 
83 class PndMvdMQFileSamplerBursts : public FairMQDevice
84 {
85  public:
86  enum
87  {
88  InputFileName = FairMQDevice::Last,
90  };
91 
94 
95  void AddInputFileName (std::string tempString) { fFileNames.push_back(tempString);}
96  void AddInputChannelBranchName(std::pair<std::string, std::string> tempString) {
97  fPortBranchNameMap.insert(std::pair<std::string, std::string>(tempString.first, tempString.second));
98  fBranchNames.push_back(tempString);
99  fPorts.insert(tempString.first);
100  }
101 
102  void SetMaxIndex(int64_t tempInt) {fMaxIndex=tempInt;}
103 
104  template<class Archive>
105  void serialize(Archive & ar, const unsigned int version)
106  {
107  ar & fHitVector;
108  }
109 
110  #ifndef __CINT__ // for BOOST serialization
112  #endif
113 
114  protected:
115  virtual void Run();
116  virtual void InitTask();
117 
118  virtual void InitBurstBuilder(std::string branchName);
119 
120  private:
121  FairRunAna* fRunAna;
122  FairFileSource* fSource;
123  std::set<std::string> fPorts; //< set of output ports
124  std::multimap<std::string, std::string> fPortBranchNameMap;
125  std::vector<std::pair<std::string, std::string> > fBranchNames; //< vector of output ports and branch names. One port can have multiple branches send to it
126  std::map<std::string, std::vector< std::vector<FairTimeStamp*> > > fOutputData; //< map of branch and data object to be send
127  std::map<std::string, TObject* > fInputBranches; //< branch name and TClonesArray in root tree
128  std::map<std::string, PndBurstVectorBuilderBase*> fBurstBuilder; //< branch name and associated burst builder
129  std::vector<FairTimeStamp*> fHitVector;
130  FairEventHeader* fEventHeader;
131 
132 
134  int64_t fMaxIndex;
135 
136  std::vector<std::string> fFileNames;
137 };
138 
139 #endif /* PndMvdMQFileSamplerBursts_H_ */
std::vector< std::pair< std::string, std::string > > fBranchNames
std::map< std::string, PndBurstVectorBuilderBase * > fBurstBuilder
void serialize(Archive &ar, const unsigned int version)
virtual void Reset()
void serialize(Archive &ar, const unsigned int version)
virtual void InitBurstBuilder(std::string branchName)
void AddInputFileName(std::string tempString)
std::vector< std::string > fFileNames
std::vector< FairTimeStamp * > fHitVector
void AddInputChannelBranchName(std::pair< std::string, std::string > tempString)
friend class boost::serialization::access
std::vector< std::vector< FairTimeStamp * > > fData
std::multimap< std::string, std::string > fPortBranchNameMap
void serialize(Archive &ar, const unsigned int version)
std::map< std::string, std::vector< std::vector< FairTimeStamp * > > > fOutputData
std::map< std::string, TObject * > fInputBranches
friend class boost::serialization::access
friend class boost::serialization::access