00001
00002
00003
00004 #include "psddl_pds2psana/timetool.ddl.h"
00005
00006 #include <cstddef>
00007
00008 #include <stdexcept>
00009
00010 namespace psddl_pds2psana {
00011 namespace TimeTool {
00012 Psana::TimeTool::EventLogic::LogicOp pds_to_psana(Pds::TimeTool::EventLogic::LogicOp e)
00013 {
00014 return Psana::TimeTool::EventLogic::LogicOp(e);
00015 }
00016
00017 Psana::TimeTool::EventLogic pds_to_psana(Pds::TimeTool::EventLogic pds)
00018 {
00019 return Psana::TimeTool::EventLogic(pds.event_code(), pds_to_psana(pds.logic_op()));
00020 }
00021
00022 Psana::TimeTool::ConfigV1::Axis pds_to_psana(Pds::TimeTool::ConfigV1::Axis e)
00023 {
00024 return Psana::TimeTool::ConfigV1::Axis(e);
00025 }
00026
00027 ConfigV1::ConfigV1(const boost::shared_ptr<const XtcType>& xtcPtr)
00028 : Psana::TimeTool::ConfigV1()
00029 , m_xtcObj(xtcPtr)
00030 , _sig_roi_lo(psddl_pds2psana::Camera::pds_to_psana(xtcPtr->sig_roi_lo()))
00031 , _sig_roi_hi(psddl_pds2psana::Camera::pds_to_psana(xtcPtr->sig_roi_hi()))
00032 , _sb_roi_lo(psddl_pds2psana::Camera::pds_to_psana(xtcPtr->sb_roi_lo()))
00033 , _sb_roi_hi(psddl_pds2psana::Camera::pds_to_psana(xtcPtr->sb_roi_hi()))
00034 {
00035 {
00036 typedef ndarray<Psana::TimeTool::EventLogic, 1> NDArray;
00037 typedef ndarray<const Pds::TimeTool::EventLogic, 1> XtcNDArray;
00038 const XtcNDArray& xtc_ndarr = xtcPtr->beam_logic();
00039 _beam_logic_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00040 NDArray::iterator out = _beam_logic_ndarray_storage_.begin();
00041 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00042 *out = psddl_pds2psana::TimeTool::pds_to_psana(*it);
00043 }
00044 }
00045 {
00046 typedef ndarray<Psana::TimeTool::EventLogic, 1> NDArray;
00047 typedef ndarray<const Pds::TimeTool::EventLogic, 1> XtcNDArray;
00048 const XtcNDArray& xtc_ndarr = xtcPtr->laser_logic();
00049 _laser_logic_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00050 NDArray::iterator out = _laser_logic_ndarray_storage_.begin();
00051 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00052 *out = psddl_pds2psana::TimeTool::pds_to_psana(*it);
00053 }
00054 }
00055 }
00056 ConfigV1::~ConfigV1()
00057 {
00058 }
00059
00060
00061 Psana::TimeTool::ConfigV1::Axis ConfigV1::project_axis() const {
00062 return pds_to_psana(m_xtcObj->project_axis());
00063 }
00064
00065
00066 uint8_t ConfigV1::write_image() const {
00067 return m_xtcObj->write_image();
00068 }
00069
00070
00071 uint8_t ConfigV1::write_projections() const {
00072 return m_xtcObj->write_projections();
00073 }
00074
00075
00076 uint8_t ConfigV1::subtract_sideband() const {
00077 return m_xtcObj->subtract_sideband();
00078 }
00079
00080
00081 uint16_t ConfigV1::number_of_weights() const {
00082 return m_xtcObj->number_of_weights();
00083 }
00084
00085
00086 uint8_t ConfigV1::calib_poly_dim() const {
00087 return m_xtcObj->calib_poly_dim();
00088 }
00089
00090
00091 uint8_t ConfigV1::base_name_length() const {
00092 return m_xtcObj->base_name_length();
00093 }
00094
00095
00096 uint16_t ConfigV1::number_of_beam_event_codes() const {
00097 return m_xtcObj->number_of_beam_event_codes();
00098 }
00099
00100
00101 uint16_t ConfigV1::number_of_laser_event_codes() const {
00102 return m_xtcObj->number_of_laser_event_codes();
00103 }
00104
00105
00106 uint32_t ConfigV1::signal_cut() const {
00107 return m_xtcObj->signal_cut();
00108 }
00109
00110 const Psana::Camera::FrameCoord& ConfigV1::sig_roi_lo() const { return _sig_roi_lo; }
00111 const Psana::Camera::FrameCoord& ConfigV1::sig_roi_hi() const { return _sig_roi_hi; }
00112 const Psana::Camera::FrameCoord& ConfigV1::sb_roi_lo() const { return _sb_roi_lo; }
00113 const Psana::Camera::FrameCoord& ConfigV1::sb_roi_hi() const { return _sb_roi_hi; }
00114
00115 double ConfigV1::sb_convergence() const {
00116 return m_xtcObj->sb_convergence();
00117 }
00118
00119
00120 double ConfigV1::ref_convergence() const {
00121 return m_xtcObj->ref_convergence();
00122 }
00123
00124 ndarray<const Psana::TimeTool::EventLogic, 1> ConfigV1::beam_logic() const { return _beam_logic_ndarray_storage_; }
00125 ndarray<const Psana::TimeTool::EventLogic, 1> ConfigV1::laser_logic() const { return _laser_logic_ndarray_storage_; }
00126
00127 ndarray<const double, 1> ConfigV1::weights() const {
00128 return m_xtcObj->weights(m_xtcObj);
00129 }
00130
00131
00132 ndarray<const double, 1> ConfigV1::calib_poly() const {
00133 return m_xtcObj->calib_poly(m_xtcObj);
00134 }
00135
00136
00137 const char* ConfigV1::base_name() const {
00138 return m_xtcObj->base_name();
00139 }
00140
00141
00142 uint32_t ConfigV1::signal_projection_size() const {
00143 return m_xtcObj->signal_projection_size();
00144 }
00145
00146
00147 uint32_t ConfigV1::sideband_projection_size() const {
00148 return m_xtcObj->sideband_projection_size();
00149 }
00150
00151
00152 std::vector<int> ConfigV1::base_name_shape() const {
00153 return m_xtcObj->base_name_shape();
00154 }
00155
00156 Psana::TimeTool::ConfigV2::Axis pds_to_psana(Pds::TimeTool::ConfigV2::Axis e)
00157 {
00158 return Psana::TimeTool::ConfigV2::Axis(e);
00159 }
00160
00161 ConfigV2::ConfigV2(const boost::shared_ptr<const XtcType>& xtcPtr)
00162 : Psana::TimeTool::ConfigV2()
00163 , m_xtcObj(xtcPtr)
00164 , _sig_roi_lo(psddl_pds2psana::Camera::pds_to_psana(xtcPtr->sig_roi_lo()))
00165 , _sig_roi_hi(psddl_pds2psana::Camera::pds_to_psana(xtcPtr->sig_roi_hi()))
00166 , _sb_roi_lo(psddl_pds2psana::Camera::pds_to_psana(xtcPtr->sb_roi_lo()))
00167 , _sb_roi_hi(psddl_pds2psana::Camera::pds_to_psana(xtcPtr->sb_roi_hi()))
00168 , _ref_roi_lo(psddl_pds2psana::Camera::pds_to_psana(xtcPtr->ref_roi_lo()))
00169 , _ref_roi_hi(psddl_pds2psana::Camera::pds_to_psana(xtcPtr->ref_roi_hi()))
00170 {
00171 {
00172 typedef ndarray<Psana::TimeTool::EventLogic, 1> NDArray;
00173 typedef ndarray<const Pds::TimeTool::EventLogic, 1> XtcNDArray;
00174 const XtcNDArray& xtc_ndarr = xtcPtr->beam_logic();
00175 _beam_logic_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00176 NDArray::iterator out = _beam_logic_ndarray_storage_.begin();
00177 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00178 *out = psddl_pds2psana::TimeTool::pds_to_psana(*it);
00179 }
00180 }
00181 {
00182 typedef ndarray<Psana::TimeTool::EventLogic, 1> NDArray;
00183 typedef ndarray<const Pds::TimeTool::EventLogic, 1> XtcNDArray;
00184 const XtcNDArray& xtc_ndarr = xtcPtr->laser_logic();
00185 _laser_logic_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00186 NDArray::iterator out = _laser_logic_ndarray_storage_.begin();
00187 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00188 *out = psddl_pds2psana::TimeTool::pds_to_psana(*it);
00189 }
00190 }
00191 }
00192 ConfigV2::~ConfigV2()
00193 {
00194 }
00195
00196
00197 Psana::TimeTool::ConfigV2::Axis ConfigV2::project_axis() const {
00198 return pds_to_psana(m_xtcObj->project_axis());
00199 }
00200
00201
00202 uint8_t ConfigV2::write_image() const {
00203 return m_xtcObj->write_image();
00204 }
00205
00206
00207 uint8_t ConfigV2::write_projections() const {
00208 return m_xtcObj->write_projections();
00209 }
00210
00211
00212 uint8_t ConfigV2::subtract_sideband() const {
00213 return m_xtcObj->subtract_sideband();
00214 }
00215
00216
00217 uint8_t ConfigV2::use_reference_roi() const {
00218 return m_xtcObj->use_reference_roi();
00219 }
00220
00221
00222 uint16_t ConfigV2::number_of_weights() const {
00223 return m_xtcObj->number_of_weights();
00224 }
00225
00226
00227 uint8_t ConfigV2::calib_poly_dim() const {
00228 return m_xtcObj->calib_poly_dim();
00229 }
00230
00231
00232 uint8_t ConfigV2::base_name_length() const {
00233 return m_xtcObj->base_name_length();
00234 }
00235
00236
00237 uint16_t ConfigV2::number_of_beam_event_codes() const {
00238 return m_xtcObj->number_of_beam_event_codes();
00239 }
00240
00241
00242 uint16_t ConfigV2::number_of_laser_event_codes() const {
00243 return m_xtcObj->number_of_laser_event_codes();
00244 }
00245
00246
00247 uint32_t ConfigV2::signal_cut() const {
00248 return m_xtcObj->signal_cut();
00249 }
00250
00251 const Psana::Camera::FrameCoord& ConfigV2::sig_roi_lo() const { return _sig_roi_lo; }
00252 const Psana::Camera::FrameCoord& ConfigV2::sig_roi_hi() const { return _sig_roi_hi; }
00253 const Psana::Camera::FrameCoord& ConfigV2::sb_roi_lo() const { return _sb_roi_lo; }
00254 const Psana::Camera::FrameCoord& ConfigV2::sb_roi_hi() const { return _sb_roi_hi; }
00255
00256 double ConfigV2::sb_convergence() const {
00257 return m_xtcObj->sb_convergence();
00258 }
00259
00260 const Psana::Camera::FrameCoord& ConfigV2::ref_roi_lo() const { return _ref_roi_lo; }
00261 const Psana::Camera::FrameCoord& ConfigV2::ref_roi_hi() const { return _ref_roi_hi; }
00262
00263 double ConfigV2::ref_convergence() const {
00264 return m_xtcObj->ref_convergence();
00265 }
00266
00267 ndarray<const Psana::TimeTool::EventLogic, 1> ConfigV2::beam_logic() const { return _beam_logic_ndarray_storage_; }
00268 ndarray<const Psana::TimeTool::EventLogic, 1> ConfigV2::laser_logic() const { return _laser_logic_ndarray_storage_; }
00269
00270 ndarray<const double, 1> ConfigV2::weights() const {
00271 return m_xtcObj->weights(m_xtcObj);
00272 }
00273
00274
00275 ndarray<const double, 1> ConfigV2::calib_poly() const {
00276 return m_xtcObj->calib_poly(m_xtcObj);
00277 }
00278
00279
00280 const char* ConfigV2::base_name() const {
00281 return m_xtcObj->base_name();
00282 }
00283
00284
00285 uint32_t ConfigV2::signal_projection_size() const {
00286 return m_xtcObj->signal_projection_size();
00287 }
00288
00289
00290 uint32_t ConfigV2::sideband_projection_size() const {
00291 return m_xtcObj->sideband_projection_size();
00292 }
00293
00294
00295 uint32_t ConfigV2::reference_projection_size() const {
00296 return m_xtcObj->reference_projection_size();
00297 }
00298
00299
00300 std::vector<int> ConfigV2::base_name_shape() const {
00301 return m_xtcObj->base_name_shape();
00302 }
00303
00304 Psana::TimeTool::DataV1::EventType pds_to_psana(Pds::TimeTool::DataV1::EventType e)
00305 {
00306 return Psana::TimeTool::DataV1::EventType(e);
00307 }
00308
00309 template <typename Config>
00310 DataV1<Config>::DataV1(const boost::shared_ptr<const XtcType>& xtcPtr, const boost::shared_ptr<const Config>& cfgPtr)
00311 : Psana::TimeTool::DataV1()
00312 , m_xtcObj(xtcPtr)
00313 , m_cfgPtr(cfgPtr)
00314 {
00315 }
00316 template <typename Config>
00317 DataV1<Config>::~DataV1()
00318 {
00319 }
00320
00321
00322 template <typename Config>
00323 Psana::TimeTool::DataV1::EventType DataV1<Config>::event_type() const {
00324 return pds_to_psana(m_xtcObj->event_type());
00325 }
00326
00327
00328 template <typename Config>
00329 double DataV1<Config>::amplitude() const {
00330 return m_xtcObj->amplitude();
00331 }
00332
00333
00334 template <typename Config>
00335 double DataV1<Config>::position_pixel() const {
00336 return m_xtcObj->position_pixel();
00337 }
00338
00339
00340 template <typename Config>
00341 double DataV1<Config>::position_time() const {
00342 return m_xtcObj->position_time();
00343 }
00344
00345
00346 template <typename Config>
00347 double DataV1<Config>::position_fwhm() const {
00348 return m_xtcObj->position_fwhm();
00349 }
00350
00351
00352 template <typename Config>
00353 double DataV1<Config>::ref_amplitude() const {
00354 return m_xtcObj->ref_amplitude();
00355 }
00356
00357
00358 template <typename Config>
00359 double DataV1<Config>::nxt_amplitude() const {
00360 return m_xtcObj->nxt_amplitude();
00361 }
00362
00363
00364 template <typename Config>
00365 ndarray<const int32_t, 1> DataV1<Config>::projected_signal() const {
00366 return m_xtcObj->projected_signal(*m_cfgPtr, m_xtcObj);
00367 }
00368
00369
00370 template <typename Config>
00371 ndarray<const int32_t, 1> DataV1<Config>::projected_sideband() const {
00372 return m_xtcObj->projected_sideband(*m_cfgPtr, m_xtcObj);
00373 }
00374
00375 template class DataV1<Pds::TimeTool::ConfigV1>;
00376 Psana::TimeTool::DataV2::EventType pds_to_psana(Pds::TimeTool::DataV2::EventType e)
00377 {
00378 return Psana::TimeTool::DataV2::EventType(e);
00379 }
00380
00381 template <typename Config>
00382 DataV2<Config>::DataV2(const boost::shared_ptr<const XtcType>& xtcPtr, const boost::shared_ptr<const Config>& cfgPtr)
00383 : Psana::TimeTool::DataV2()
00384 , m_xtcObj(xtcPtr)
00385 , m_cfgPtr(cfgPtr)
00386 {
00387 }
00388 template <typename Config>
00389 DataV2<Config>::~DataV2()
00390 {
00391 }
00392
00393
00394 template <typename Config>
00395 Psana::TimeTool::DataV2::EventType DataV2<Config>::event_type() const {
00396 return pds_to_psana(m_xtcObj->event_type());
00397 }
00398
00399
00400 template <typename Config>
00401 double DataV2<Config>::amplitude() const {
00402 return m_xtcObj->amplitude();
00403 }
00404
00405
00406 template <typename Config>
00407 double DataV2<Config>::position_pixel() const {
00408 return m_xtcObj->position_pixel();
00409 }
00410
00411
00412 template <typename Config>
00413 double DataV2<Config>::position_time() const {
00414 return m_xtcObj->position_time();
00415 }
00416
00417
00418 template <typename Config>
00419 double DataV2<Config>::position_fwhm() const {
00420 return m_xtcObj->position_fwhm();
00421 }
00422
00423
00424 template <typename Config>
00425 double DataV2<Config>::ref_amplitude() const {
00426 return m_xtcObj->ref_amplitude();
00427 }
00428
00429
00430 template <typename Config>
00431 double DataV2<Config>::nxt_amplitude() const {
00432 return m_xtcObj->nxt_amplitude();
00433 }
00434
00435
00436 template <typename Config>
00437 ndarray<const int32_t, 1> DataV2<Config>::projected_signal() const {
00438 return m_xtcObj->projected_signal(*m_cfgPtr, m_xtcObj);
00439 }
00440
00441
00442 template <typename Config>
00443 ndarray<const int32_t, 1> DataV2<Config>::projected_sideband() const {
00444 return m_xtcObj->projected_sideband(*m_cfgPtr, m_xtcObj);
00445 }
00446
00447
00448 template <typename Config>
00449 ndarray<const int32_t, 1> DataV2<Config>::projected_reference() const {
00450 return m_xtcObj->projected_reference(*m_cfgPtr, m_xtcObj);
00451 }
00452
00453 template class DataV2<Pds::TimeTool::ConfigV2>;
00454 }
00455 }