FRIBParallelanalysis  1.0
FrameworkforMPIParalleldataanalysisatFRIB
DataWriter.h
Go to the documentation of this file.
1 /*
2  This software is Copyright by the Board of Trustees of Michigan
3  State University (c) Copyright 2017.
4 
5  You may use this software under the terms of the GNU public license
6  (GPL). The terms of this license are described at:
7 
8  http://www.gnu.org/licenses/gpl.txt
9 
10  Authors:
11  Ron Fox
12  Giordano Cerriza
13  FRIB
14  Michigan State University
15  East Lansing, MI 48824-1321
16 */
17 
21 #ifndef DATAWRITER_H
22 #define DATAWRITER_H
23 #include <vector>
24 #include <cstdint>
25 
26 #include "TreeVariable.h"
27 #include "TreeParameter.h"
28 
29 namespace frib {
30  namespace analysis {
40  class CDataWriter {
41  private:
42  int m_fd;
43  public:
44  CDataWriter(const char* pFilename);
45  CDataWriter(int fd);
46  virtual ~CDataWriter();
47  private:
48  CDataWriter(const CDataWriter& rhs);
49  CDataWriter& operator=(const CDataWriter& rhs);
50  int operator==(const CDataWriter& rhs) const;
51  int operator!=(const CDataWriter& rhs) const;
52  public:
53  void writeEvent(
54  const std::vector<std::pair<unsigned, double>>& event,
55  std::uint64_t eventNum
56  );
57  void writeItem(const void* pItem);
58  private:
59  void writeFrontMatter();
60  void writeParameterDefs();
61  void writeVariableDefs();
62  size_t sizeParameterDefItem(const std::vector<std::pair<std::string, CTreeParameter::SharedData>>& defs);
63  size_t sizeVariableDefItem(const std::vector<std::pair<std::string, const CTreeVariable::Definition*>>& defs);
64  size_t sizeEvent(const std::vector<std::pair<unsigned, double>>& event);
65  void writeHeader(size_t nBytes, unsigned type);
66  };
67  }
68 }
69 
70 #endif
Definition: DataWriter.h:40
: Define a class that holds variables that steer computations.
virtual ~CDataWriter()
Definition: DataWriter.cpp:67
void writeEvent(const std::vector< std::pair< unsigned, double >> &event, std::uint64_t eventNum)
Definition: DataWriter.cpp:78
CDataWriter(const char *pFilename)
Definition: DataWriter.cpp:41
: Define the tree parameter class.
void writeItem(const void *pItem)
Definition: DataWriter.cpp:108
Definition: AbstractApplication.cpp:30