00001
00002
00003
00004 #include "psddl_pds2psana/quartz.ddl.h"
00005
00006 #include <cstddef>
00007
00008 #include <stdexcept>
00009
00010 namespace psddl_pds2psana {
00011 namespace Quartz {
00012 Psana::Quartz::ConfigV1::Depth pds_to_psana(Pds::Quartz::ConfigV1::Depth e)
00013 {
00014 return Psana::Quartz::ConfigV1::Depth(e);
00015 }
00016
00017 Psana::Quartz::ConfigV1::Binning pds_to_psana(Pds::Quartz::ConfigV1::Binning e)
00018 {
00019 return Psana::Quartz::ConfigV1::Binning(e);
00020 }
00021
00022 Psana::Quartz::ConfigV1::Mirroring pds_to_psana(Pds::Quartz::ConfigV1::Mirroring e)
00023 {
00024 return Psana::Quartz::ConfigV1::Mirroring(e);
00025 }
00026
00027 ConfigV1::ConfigV1(const boost::shared_ptr<const XtcType>& xtcPtr)
00028 : Psana::Quartz::ConfigV1()
00029 , m_xtcObj(xtcPtr)
00030 {
00031 {
00032 typedef ndarray<Psana::Camera::FrameCoord, 1> NDArray;
00033 typedef ndarray<const Pds::Camera::FrameCoord, 1> XtcNDArray;
00034 const XtcNDArray& xtc_ndarr = xtcPtr->defect_pixel_coordinates();
00035 _defectPixels_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00036 NDArray::iterator out = _defectPixels_ndarray_storage_.begin();
00037 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00038 *out = psddl_pds2psana::Camera::pds_to_psana(*it);
00039 }
00040 }
00041 }
00042 ConfigV1::~ConfigV1()
00043 {
00044 }
00045
00046
00047 uint16_t ConfigV1::black_level() const {
00048 return m_xtcObj->black_level();
00049 }
00050
00051
00052 uint16_t ConfigV1::gain_percent() const {
00053 return m_xtcObj->gain_percent();
00054 }
00055
00056
00057 Psana::Quartz::ConfigV1::Depth ConfigV1::output_resolution() const {
00058 return pds_to_psana(m_xtcObj->output_resolution());
00059 }
00060
00061
00062 Psana::Quartz::ConfigV1::Binning ConfigV1::horizontal_binning() const {
00063 return pds_to_psana(m_xtcObj->horizontal_binning());
00064 }
00065
00066
00067 Psana::Quartz::ConfigV1::Binning ConfigV1::vertical_binning() const {
00068 return pds_to_psana(m_xtcObj->vertical_binning());
00069 }
00070
00071
00072 Psana::Quartz::ConfigV1::Mirroring ConfigV1::output_mirroring() const {
00073 return pds_to_psana(m_xtcObj->output_mirroring());
00074 }
00075
00076
00077 uint8_t ConfigV1::output_lookup_table_enabled() const {
00078 return m_xtcObj->output_lookup_table_enabled();
00079 }
00080
00081
00082 uint8_t ConfigV1::defect_pixel_correction_enabled() const {
00083 return m_xtcObj->defect_pixel_correction_enabled();
00084 }
00085
00086
00087 uint32_t ConfigV1::number_of_defect_pixels() const {
00088 return m_xtcObj->number_of_defect_pixels();
00089 }
00090
00091
00092 ndarray<const uint16_t, 1> ConfigV1::output_lookup_table() const {
00093 return m_xtcObj->output_lookup_table(m_xtcObj);
00094 }
00095
00096 ndarray<const Psana::Camera::FrameCoord, 1> ConfigV1::defect_pixel_coordinates() const { return _defectPixels_ndarray_storage_; }
00097
00098 uint16_t ConfigV1::output_offset() const {
00099 return m_xtcObj->output_offset();
00100 }
00101
00102
00103 uint32_t ConfigV1::output_resolution_bits() const {
00104 return m_xtcObj->output_resolution_bits();
00105 }
00106
00107 Psana::Quartz::ConfigV2::Depth pds_to_psana(Pds::Quartz::ConfigV2::Depth e)
00108 {
00109 return Psana::Quartz::ConfigV2::Depth(e);
00110 }
00111
00112 Psana::Quartz::ConfigV2::Binning pds_to_psana(Pds::Quartz::ConfigV2::Binning e)
00113 {
00114 return Psana::Quartz::ConfigV2::Binning(e);
00115 }
00116
00117 Psana::Quartz::ConfigV2::Mirroring pds_to_psana(Pds::Quartz::ConfigV2::Mirroring e)
00118 {
00119 return Psana::Quartz::ConfigV2::Mirroring(e);
00120 }
00121
00122 ConfigV2::ConfigV2(const boost::shared_ptr<const XtcType>& xtcPtr)
00123 : Psana::Quartz::ConfigV2()
00124 , m_xtcObj(xtcPtr)
00125 , _roi_lo(psddl_pds2psana::Camera::pds_to_psana(xtcPtr->roi_lo()))
00126 , _roi_hi(psddl_pds2psana::Camera::pds_to_psana(xtcPtr->roi_hi()))
00127 {
00128 {
00129 typedef ndarray<Psana::Camera::FrameCoord, 1> NDArray;
00130 typedef ndarray<const Pds::Camera::FrameCoord, 1> XtcNDArray;
00131 const XtcNDArray& xtc_ndarr = xtcPtr->defect_pixel_coordinates();
00132 _defectPixels_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00133 NDArray::iterator out = _defectPixels_ndarray_storage_.begin();
00134 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00135 *out = psddl_pds2psana::Camera::pds_to_psana(*it);
00136 }
00137 }
00138 }
00139 ConfigV2::~ConfigV2()
00140 {
00141 }
00142
00143
00144 uint16_t ConfigV2::black_level() const {
00145 return m_xtcObj->black_level();
00146 }
00147
00148
00149 uint16_t ConfigV2::gain_percent() const {
00150 return m_xtcObj->gain_percent();
00151 }
00152
00153
00154 Psana::Quartz::ConfigV2::Depth ConfigV2::output_resolution() const {
00155 return pds_to_psana(m_xtcObj->output_resolution());
00156 }
00157
00158
00159 Psana::Quartz::ConfigV2::Binning ConfigV2::horizontal_binning() const {
00160 return pds_to_psana(m_xtcObj->horizontal_binning());
00161 }
00162
00163
00164 Psana::Quartz::ConfigV2::Binning ConfigV2::vertical_binning() const {
00165 return pds_to_psana(m_xtcObj->vertical_binning());
00166 }
00167
00168
00169 Psana::Quartz::ConfigV2::Mirroring ConfigV2::output_mirroring() const {
00170 return pds_to_psana(m_xtcObj->output_mirroring());
00171 }
00172
00173
00174 uint8_t ConfigV2::output_lookup_table_enabled() const {
00175 return m_xtcObj->output_lookup_table_enabled();
00176 }
00177
00178
00179 uint8_t ConfigV2::defect_pixel_correction_enabled() const {
00180 return m_xtcObj->defect_pixel_correction_enabled();
00181 }
00182
00183
00184 uint8_t ConfigV2::use_hardware_roi() const {
00185 return m_xtcObj->use_hardware_roi();
00186 }
00187
00188
00189 uint8_t ConfigV2::use_test_pattern() const {
00190 return m_xtcObj->use_test_pattern();
00191 }
00192
00193
00194 uint8_t ConfigV2::max_taps() const {
00195 return m_xtcObj->max_taps();
00196 }
00197
00198 const Psana::Camera::FrameCoord& ConfigV2::roi_lo() const { return _roi_lo; }
00199 const Psana::Camera::FrameCoord& ConfigV2::roi_hi() const { return _roi_hi; }
00200
00201 uint32_t ConfigV2::number_of_defect_pixels() const {
00202 return m_xtcObj->number_of_defect_pixels();
00203 }
00204
00205
00206 ndarray<const uint16_t, 1> ConfigV2::output_lookup_table() const {
00207 return m_xtcObj->output_lookup_table(m_xtcObj);
00208 }
00209
00210 ndarray<const Psana::Camera::FrameCoord, 1> ConfigV2::defect_pixel_coordinates() const { return _defectPixels_ndarray_storage_; }
00211
00212 uint16_t ConfigV2::output_offset() const {
00213 return m_xtcObj->output_offset();
00214 }
00215
00216
00217 uint32_t ConfigV2::output_resolution_bits() const {
00218 return m_xtcObj->output_resolution_bits();
00219 }
00220
00221 }
00222 }