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