Newer
Older
TB_Chris / TbUT / src / .svn / text-base / TbUTRawData.h.svn-base
  1. #pragma once
  2. #include "GaudiKernel/DataObject.h"
  3. #include <string>
  4. #include <vector>
  5. #include "TbUTDataLocations.h"
  6. #include "TbUTSensor.h"
  7.  
  8. namespace TbUT
  9. {
  10. template<typename DATA_TYPE = int>
  11. class RawData
  12. {
  13. public:
  14. typedef std::vector<DATA_TYPE> SignalVector;
  15. typedef DATA_TYPE DataType;
  16.  
  17. static void setSensor(Sensor p_sensor)
  18. {
  19. s_sensor=p_sensor;
  20. }
  21. static int getMaxChannel()
  22. {
  23. return s_sensor.maxChannel();
  24. }
  25.  
  26. static int getMinChannel()
  27. {
  28. return s_sensor.minChannel();
  29. }
  30. static int getnChannelNumber()
  31. {
  32. return s_sensor.channelNumber*s_sensor.sensorNumber();
  33. }
  34.  
  35. static int getSensorNumber()
  36. {
  37. return s_sensor.sensorNumber();
  38. }
  39.  
  40. RawData<DATA_TYPE>():
  41. m_signal(),
  42. m_header0(),
  43. m_header1(),
  44. m_header2(),
  45. m_header3(),
  46. m_header3P1(),
  47. m_header3P2(),
  48. m_time(),
  49. m_temperature(),
  50. m_tdc()
  51. {
  52. };
  53.  
  54. RawData<DATA_TYPE>& operator=( const RawData<DATA_TYPE>& rhs )
  55. {
  56. if( this != &rhs ) {
  57. m_signal=rhs.m_signal;
  58. m_header0=rhs.m_header0;
  59. m_header1=rhs.m_header1;
  60. m_header2=rhs.m_header2;
  61. m_header3=rhs.m_header3;
  62. m_header3P1=rhs.m_header3P1;
  63. m_header3P2=rhs.m_header3P2;
  64. m_time=rhs.m_time;
  65. m_temperature=rhs.m_temperature;
  66. m_tdc=rhs.m_tdc;
  67. }
  68. return *this;
  69. }
  70. RawData<DATA_TYPE>(const RawData<DATA_TYPE> &rhs):
  71. m_signal(rhs.m_signal),
  72. m_header0(rhs.m_header0),
  73. m_header1(rhs.m_header1),
  74. m_header2(rhs.m_header2),
  75. m_header3(rhs.m_header3),
  76. m_header3P1(rhs.m_header3P1),
  77. m_header3P2(rhs.m_header3P2),
  78. m_time(rhs.m_time),
  79. m_temperature(rhs.m_temperature),
  80. m_tdc(rhs.m_tdc)
  81. {
  82. }
  83. void setTemp(double p_temp)
  84. {
  85. m_temperature = p_temp;
  86. }
  87. void setTime(unsigned long long p_time)
  88. {
  89. m_time = p_time;
  90. }
  91. void setSignal(DATA_TYPE p_signal)
  92. {
  93. m_signal.push_back(p_signal);
  94. }
  95. void setHeader0(DATA_TYPE p_header)
  96. {
  97. m_header0.push_back(p_header);
  98. }
  99. void setHeader1(DATA_TYPE p_header)
  100. {
  101. m_header1.push_back(p_header);
  102. }
  103. void setHeader2(DATA_TYPE p_header)
  104. {
  105. m_header2.push_back(p_header);
  106. }
  107. void setHeader3(DATA_TYPE p_header)
  108. {
  109. m_header3.push_back(p_header);
  110. }
  111. void setHeader3P1(DATA_TYPE p_header)
  112. {
  113. m_header3P1.push_back(p_header);
  114. }
  115. void setHeader3P2(DATA_TYPE p_header)
  116. {
  117. m_header3P2.push_back(p_header);
  118. }
  119. SignalVector& getSignal()
  120. {
  121. return m_signal;
  122. }
  123. SignalVector& getHeader0()
  124. {
  125. return m_header0;
  126. }
  127. SignalVector& getHeader1()
  128. {
  129. return m_header1;
  130. }
  131. SignalVector& getHeader2()
  132. {
  133. return m_header2;
  134. }
  135. SignalVector& getHeader3()
  136. {
  137. return m_header3;
  138. }
  139. SignalVector& getHeader3P1()
  140. {
  141. return m_header3P1;
  142. }
  143. SignalVector& getHeader3P2()
  144. {
  145. return m_header3P2;
  146. }
  147.  
  148. unsigned long long getTime() const
  149. {
  150. return m_time;
  151. }
  152. double getTemp() const
  153. {
  154. return m_temperature;
  155. }
  156.  
  157. DATA_TYPE getSignal(int channel) const
  158. {
  159. return m_signal[channel];
  160. }
  161. DATA_TYPE getHeader0(int subset) const
  162. {
  163. return m_header0[subset];
  164. }
  165. DATA_TYPE getHeader1(int subset) const
  166. {
  167. return m_header1[subset];
  168. }
  169. DATA_TYPE getHeader2(int subset) const
  170. {
  171. return m_header2[subset];
  172. }
  173. DATA_TYPE getHeader3(int subset) const
  174. {
  175. return m_header3[subset];
  176. }
  177. DATA_TYPE getHeader3P1(int subset) const
  178. {
  179. return m_header3P1[subset];
  180. }
  181. DATA_TYPE getHeader3P2(int subset) const
  182. {
  183. return m_header3P2[subset];
  184. }
  185.  
  186. unsigned int getTDC() const
  187. {
  188. return m_tdc;
  189. }
  190.  
  191. void setTDC(unsigned int p_tdc)
  192. {
  193. m_tdc=p_tdc;
  194. }
  195.  
  196. protected:
  197. SignalVector m_signal;
  198. SignalVector m_header0;
  199. SignalVector m_header1;
  200. SignalVector m_header2;
  201. SignalVector m_header3;
  202. SignalVector m_header3P1;
  203. SignalVector m_header3P2;
  204. unsigned long long m_time;
  205. double m_temperature;
  206. unsigned int m_tdc;
  207.  
  208. static Sensor s_sensor;
  209. };
  210.  
  211.  
  212. template<typename DataType = int>
  213. class RawDataContainer: public DataObject
  214. {
  215. public:
  216. typedef std::vector<RawData<DataType> > RawDataVec;
  217.  
  218. RawDataContainer<DataType>():
  219. empty(true),
  220. m_dataVector()
  221. {};
  222.  
  223. void addData(RawData<DataType> rawData)
  224. {
  225. m_dataVector.push_back(rawData);
  226. empty=false;
  227. }
  228. bool isEmpty(){return empty;}
  229. RawDataVec getData(){return m_dataVector;}
  230. private:
  231. bool empty;
  232. RawDataVec m_dataVector;
  233.  
  234. };
  235.  
  236.  
  237. }
  238.