00001 #ifndef PSDDL_PDS2PSANA_PNCCD_DDL_H 00002 #define PSDDL_PDS2PSANA_PNCCD_DDL_H 1 00003 00004 // *** Do not edit this file, it is auto-generated *** 00005 00006 #include <vector> 00007 #include <boost/shared_ptr.hpp> 00008 #include "psddl_psana/pnccd.ddl.h" 00009 #include "pdsdata/psddl/pnccd.ddl.h" 00010 namespace psddl_pds2psana { 00011 namespace PNCCD { 00012 00013 class ConfigV1 : public Psana::PNCCD::ConfigV1 { 00014 public: 00015 typedef Pds::PNCCD::ConfigV1 XtcType; 00016 typedef Psana::PNCCD::ConfigV1 PsanaType; 00017 ConfigV1(const boost::shared_ptr<const XtcType>& xtcPtr); 00018 virtual ~ConfigV1(); 00019 virtual uint32_t numLinks() const; 00020 virtual uint32_t payloadSizePerLink() const; 00021 const XtcType& _xtcObj() const { return *m_xtcObj; } 00022 private: 00023 boost::shared_ptr<const XtcType> m_xtcObj; 00024 }; 00025 00026 00027 class ConfigV2 : public Psana::PNCCD::ConfigV2 { 00028 public: 00029 typedef Pds::PNCCD::ConfigV2 XtcType; 00030 typedef Psana::PNCCD::ConfigV2 PsanaType; 00031 ConfigV2(const boost::shared_ptr<const XtcType>& xtcPtr); 00032 virtual ~ConfigV2(); 00033 virtual uint32_t numLinks() const; 00034 virtual uint32_t payloadSizePerLink() const; 00035 virtual uint32_t numChannels() const; 00036 virtual uint32_t numRows() const; 00037 virtual uint32_t numSubmoduleChannels() const; 00038 virtual uint32_t numSubmoduleRows() const; 00039 virtual uint32_t numSubmodules() const; 00040 virtual uint32_t camexMagic() const; 00041 virtual const char* info() const; 00042 virtual const char* timingFName() const; 00043 virtual std::vector<int> info_shape() const; 00044 virtual std::vector<int> timingFName_shape() const; 00045 const XtcType& _xtcObj() const { return *m_xtcObj; } 00046 private: 00047 boost::shared_ptr<const XtcType> m_xtcObj; 00048 }; 00049 00050 00051 template <typename Config> 00052 class FrameV1 : public Psana::PNCCD::FrameV1 { 00053 public: 00054 typedef Pds::PNCCD::FrameV1 XtcType; 00055 typedef Psana::PNCCD::FrameV1 PsanaType; 00056 FrameV1(const boost::shared_ptr<const XtcType>& xtcPtr, const boost::shared_ptr<const Config>& cfgPtr); 00057 virtual ~FrameV1(); 00058 virtual uint32_t specialWord() const; 00059 virtual uint32_t frameNumber() const; 00060 virtual uint32_t timeStampHi() const; 00061 virtual uint32_t timeStampLo() const; 00062 virtual ndarray<const uint16_t, 1> _data() const; 00063 virtual ndarray<const uint16_t, 2> data() const; 00064 const XtcType& _xtcObj() const { return *m_xtcObj; } 00065 private: 00066 boost::shared_ptr<const XtcType> m_xtcObj; 00067 boost::shared_ptr<const Config> m_cfgPtr; 00068 }; 00069 00070 00071 class FullFrameV1 : public Psana::PNCCD::FullFrameV1 { 00072 public: 00073 typedef Pds::PNCCD::FullFrameV1 XtcType; 00074 typedef Psana::PNCCD::FullFrameV1 PsanaType; 00075 FullFrameV1(const boost::shared_ptr<const XtcType>& xtcPtr); 00076 virtual ~FullFrameV1(); 00077 virtual uint32_t specialWord() const; 00078 virtual uint32_t frameNumber() const; 00079 virtual uint32_t timeStampHi() const; 00080 virtual uint32_t timeStampLo() const; 00081 virtual ndarray<const uint16_t, 2> data() const; 00082 const XtcType& _xtcObj() const { return *m_xtcObj; } 00083 private: 00084 boost::shared_ptr<const XtcType> m_xtcObj; 00085 }; 00086 00087 00088 template <typename Config> 00089 class FramesV1 : public Psana::PNCCD::FramesV1 { 00090 public: 00091 typedef Pds::PNCCD::FramesV1 XtcType; 00092 typedef Psana::PNCCD::FramesV1 PsanaType; 00093 FramesV1(const boost::shared_ptr<const XtcType>& xtcPtr, const boost::shared_ptr<const Config>& cfgPtr); 00094 virtual ~FramesV1(); 00095 virtual const Psana::PNCCD::FrameV1& frame(uint32_t i0) const; 00096 virtual uint32_t numLinks() const; 00097 virtual std::vector<int> frame_shape() const; 00098 const XtcType& _xtcObj() const { return *m_xtcObj; } 00099 private: 00100 boost::shared_ptr<const XtcType> m_xtcObj; 00101 boost::shared_ptr<const Config> m_cfgPtr; 00102 std::vector< psddl_pds2psana::PNCCD::FrameV1<Config> > _frames; 00103 }; 00104 00105 } // namespace PNCCD 00106 } // namespace psddl_pds2psana 00107 #endif // PSDDL_PDS2PSANA_PNCCD_DDL_H