EUDAQ
 All Classes Namespaces Files Functions Variables Pages
EUDRBEvent.hh
1 #ifndef EUDAQ_INCLUDED_EUDRBEvent
2 #define EUDAQ_INCLUDED_EUDRBEvent
3 
4 #include <vector>
5 #include <ostream>
6 #include "eudaq/DetectorEvent.hh"
7 
8 namespace eudaq {
9 
10  class DLLEXPORT EUDRBBoard : public Serializable {
11  public:
12  typedef std::vector<unsigned char> vec_t;
13  EUDRBBoard(unsigned id = 0) : m_id(id) {}
14  // template <typename T>
15  // EUDRBBoard(unsigned id, const std::vector<T> & data) :
16  // m_id(id), m_data(make_vector(data)) {}
17  // template <typename T>
18  // EUDRBBoard(unsigned id, const T * data, size_t bytes) :
19  // m_id(id), m_data(make_vector(data, bytes)) {}
21  virtual void Serialize(Serializer &) const;
22  unsigned GetID() const { return m_id; }
23  // unsigned LocalEventNumber() const;
24  // unsigned TLUEventNumber() const;
25  // unsigned FrameNumber() const;
26  // unsigned PivotPixel() const;
27  // unsigned WordCount() const;
28  // size_t DataSize() const;
29  // const unsigned char * GetData() const { return &m_data[8]; }
30  const vec_t &GetDataVector() const { return m_data; }
31  void Print(std::ostream &) const;
32 
33  private:
34  // unsigned char GetByte(size_t i) const { return m_data[i]; }
35  template <typename T>
36  static vec_t make_vector(const T *data, size_t bytes) {
37  const unsigned char *ptr = reinterpret_cast<const unsigned char *>(data);
38  return vec_t(ptr, ptr + bytes);
39  }
40  template <typename T> static vec_t make_vector(const std::vector<T> &data) {
41  const unsigned char *ptr =
42  reinterpret_cast<const unsigned char *>(&data[0]);
43  return vec_t(ptr, ptr + data.size() * sizeof(T));
44  }
45  unsigned m_id;
46  vec_t m_data;
47  };
48 
49  inline std::ostream &operator<<(std::ostream &os, const EUDRBBoard &fr) {
50  fr.Print(os);
51  return os;
52  }
53 
57  class DLLEXPORT EUDRBEvent : public Event {
58  EUDAQ_DECLARE_EVENT(EUDRBEvent);
59 
60  public:
61  virtual void Serialize(Serializer &) const;
62  // EUDRBEvent(unsigned run, unsigned event) :
63  // Event(run, event) {}
64  // template <typename T>
65  // EUDRBEvent(unsigned run, unsigned event, const std::vector<T> & data)
66  // :
67  // Event(run, event),
68  // m_boards(1, EUDRBBoard(data)) {}
69  // template <typename T>
70  // EUDRBEvent(unsigned run, unsigned event, const T * data, size_t
71  // bytes) :
72  // Event(run, event),
73  // m_boards(1, EUDRBBoard(data, bytes)) {}
75  // template <typename T>
76  // void AddBoard(unsigned id, const std::vector<T> & data) {
77  // m_boards.push_back(EUDRBBoard(id, data));
78  // }
79  // template <typename T>
80  // void AddBoard(unsigned id, const T * data, size_t bytes) {
81  // m_boards.push_back(EUDRBBoard(id, data, bytes));
82  // }
83  virtual void Print(std::ostream &) const;
84 
85  // virtual std::string GetSubType() const { return ""; }
86 
87  unsigned NumBoards() const { return m_boards.size(); }
88  EUDRBBoard &GetBoard(unsigned i) { return m_boards[i]; }
89  const EUDRBBoard &GetBoard(unsigned i) const { return m_boards[i]; }
90  void Debug();
91  // static EUDRBEvent BORE(unsigned run) {
92  // return EUDRBEvent((void*)0, run);
93  // }
94  // static EUDRBEvent EORE(unsigned run, unsigned event) {
95  // return EUDRBEvent((void*)0, run, event);
96  // }
97  private:
98  // EUDRBEvent(void *, unsigned run, unsigned event = 0)
99  // : Event(run, event, NOTIMESTAMP, event ? Event::FLAG_EORE :
100  // Event::FLAG_BORE)
101  // {}
102  // void Analyze();
103  // bool m_analyzed;
104  std::vector<EUDRBBoard> m_boards;
105  };
106 
107  // class EUDRBDecoder {
108  // public:
109  // enum E_DET { DET_MIMOSTAR2, DET_MIMOTEL, DET_MIMOTEL_NEWORDER,
110  // DET_MIMOSA18, DET_MIMOSA5 };
111  // enum E_MODE { MODE_RAW3, MODE_RAW2, MODE_ZS };
112 
113  // EUDRBDecoder(const DetectorEvent & bore);
114 
115  // unsigned NumFrames(const EUDRBBoard & brd) const { return
116  // GetInfo(brd).NumFrames(); }
117  // unsigned NumPixels(const EUDRBBoard & brd) const { return
118  // GetInfo(brd).NumPixels(brd); }
119  // unsigned Width(const EUDRBBoard & brd) const;
120  // unsigned Height(const EUDRBBoard & brd) const;
121 
122  // typedef std::vector<short> column_t;
123  // typedef std::vector<column_t> frame_t;
124  // typedef std::vector<frame_t> data_t;
125  // data_t GetData(const EUDRBBoard & brd);
126 
127  // template <typename T_coord, typename T_adc = T_coord>
128  // struct arrays_t {
129  // arrays_t(size_t numpix, size_t numframes)
130  // : m_x(numpix, 0),
131  // m_y(numpix, 0),
132  // m_adc(numframes, std::vector<T_adc>(numpix, 0)),
133  // m_pivot(numpix, false)
134  // {}
135  // std::vector<T_coord> m_x, m_y;
136  // std::vector<std::vector<T_adc> > m_adc;
137  // std::vector<bool> m_pivot;
138  // };
139  // template <typename T_coord, typename T_adc>
140  // arrays_t<T_coord, T_adc> GetArrays(const EUDRBBoard & brd) const;
141 
142  // struct BoardInfo {
143  // BoardInfo();
144  // BoardInfo(const EUDRBEvent & ev, unsigned brd);
145  // void Check();
146  // unsigned NumFrames() const;
147  // unsigned NumPixels(const EUDRBBoard & brd) const;
148  // E_DET m_det;
149  // E_MODE m_mode;
150  // unsigned m_rows, m_cols, m_mats;
151  // std::vector<int> m_order;
152  // int m_version;
153  // };
154  // private:
155  // const BoardInfo & GetInfo(const EUDRBBoard & brd) const;
156  // std::map<unsigned, BoardInfo> m_info;
157  // };
158 }
159 
160 #endif // EUDAQ_INCLUDED_EUDRBEvent
Definition: EUDRBEvent.hh:57
Definition: Serializer.hh:156
Definition: Serializable.hh:13
Definition: EUDRBEvent.hh:10
Definition: Serializer.hh:19
Definition: Event.hh:38