00001 #ifndef CSPAD_MOD_CSPAD2X2ELEMENTV1_H
00002 #define CSPAD_MOD_CSPAD2X2ELEMENTV1_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "psddl_psana/cspad2x2.ddl.h"
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 namespace cspad_mod {
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 class CsPad2x2ElementV1 : public Psana::CsPad2x2::ElementV1 {
00055 public:
00056
00057 enum {
00058 Nsbtemp = Psana::CsPad2x2::ElementV1::Nsbtemp
00059 };
00060
00061
00062
00063
00064
00065
00066 CsPad2x2ElementV1 (const Psana::CsPad2x2::ElementV1& elem,
00067 int16_t* data,
00068 const float* common_mode) ;
00069
00070
00071 virtual ~CsPad2x2ElementV1 () ;
00072
00073
00074 virtual uint32_t virtual_channel() const { return m_virtual_channel; }
00075
00076 virtual uint32_t lane() const { return m_lane; }
00077 virtual uint32_t tid() const { return m_tid; }
00078 virtual uint32_t acq_count() const { return m_acq_count; }
00079 virtual uint32_t op_code() const { return m_op_code; }
00080
00081 virtual uint32_t quad() const { return m_quad; }
00082 virtual uint32_t seq_count() const { return m_seq_count; }
00083 virtual uint32_t ticks() const { return m_ticks; }
00084 virtual uint32_t fiducials() const { return m_fiducials; }
00085 virtual ndarray<const uint16_t, 1> sb_temp() const { return make_ndarray(m_sb_temp, Nsbtemp); }
00086 virtual uint32_t frame_type() const { return m_frame_type; }
00087 virtual ndarray<const int16_t, 3> data() const { return ndarray<const int16_t, 3>(m_data, m_data_shape); }
00088 virtual float common_mode(uint32_t section) const { return m_common_mode[section]; }
00089
00090 protected:
00091
00092 private:
00093
00094 uint32_t m_virtual_channel;
00095 uint32_t m_lane;
00096 uint32_t m_tid;
00097 uint32_t m_acq_count;
00098 uint32_t m_op_code;
00099 uint32_t m_quad;
00100 uint32_t m_seq_count;
00101 uint32_t m_ticks;
00102 uint32_t m_fiducials;
00103 uint16_t m_sb_temp[Nsbtemp];
00104 uint32_t m_frame_type;
00105 int16_t* m_data;
00106 float m_common_mode[2];
00107 unsigned m_data_shape[3];
00108
00109
00110 CsPad2x2ElementV1 ( const CsPad2x2ElementV1& ) ;
00111 CsPad2x2ElementV1& operator = ( const CsPad2x2ElementV1& ) ;
00112
00113 };
00114
00115 }
00116
00117 #endif // CSPAD_MOD_CSPAD2X2ELEMENTV1_H