psddl_psana/include/pnccd.ddl.h

Go to the documentation of this file.
00001 #ifndef PSANA_PNCCD_DDL_H
00002 #define PSANA_PNCCD_DDL_H 1
00003 
00004 // *** Do not edit this file, it is auto-generated ***
00005 
00006 #include <vector>
00007 #include <iosfwd>
00008 #include <cstring>
00009 #include "ndarray/ndarray.h"
00010 #include "pdsdata/xtc/TypeId.hh"
00011 namespace Psana {
00012 namespace PNCCD {
00013 
00014 /** @class ConfigV1
00015 
00016   pnCCD configuration class ConfigV1
00017 */
00018 
00019 
00020 class ConfigV1 {
00021 public:
00022   enum { TypeId = Pds::TypeId::Id_pnCCDconfig /**< XTC type ID value (from Pds::TypeId class) */ };
00023   enum { Version = 1 /**< XTC type version number */ };
00024   virtual ~ConfigV1();
00025   /** Number of links in the pnCCD. */
00026   virtual uint32_t numLinks() const = 0;
00027   /** Size of the payload in bytes for single link */
00028   virtual uint32_t payloadSizePerLink() const = 0;
00029 };
00030 
00031 /** @class ConfigV2
00032 
00033   pnCCD configuration class ConfigV2
00034 */
00035 
00036 
00037 class ConfigV2 {
00038 public:
00039   enum { TypeId = Pds::TypeId::Id_pnCCDconfig /**< XTC type ID value (from Pds::TypeId class) */ };
00040   enum { Version = 2 /**< XTC type version number */ };
00041   virtual ~ConfigV2();
00042   /** Number of links in the pnCCD. */
00043   virtual uint32_t numLinks() const = 0;
00044   /** Size of the payload in bytes for single link */
00045   virtual uint32_t payloadSizePerLink() const = 0;
00046   /** Number of channels */
00047   virtual uint32_t numChannels() const = 0;
00048   /** Number of rows */
00049   virtual uint32_t numRows() const = 0;
00050   /** Number of submodule channels */
00051   virtual uint32_t numSubmoduleChannels() const = 0;
00052   /** Number of submodule rows */
00053   virtual uint32_t numSubmoduleRows() const = 0;
00054   /** Number of submodules */
00055   virtual uint32_t numSubmodules() const = 0;
00056   /** Magic word from CAMEX */
00057   virtual uint32_t camexMagic() const = 0;
00058   /** Information data string */
00059   virtual const char* info() const = 0;
00060   /** Timing file name string */
00061   virtual const char* timingFName() const = 0;
00062   /** Method which returns the shape (dimensions) of the data returned by info() method. */
00063   virtual std::vector<int> info_shape() const = 0;
00064   /** Method which returns the shape (dimensions) of the data returned by timingFName() method. */
00065   virtual std::vector<int> timingFName_shape() const = 0;
00066 };
00067 
00068 /** @class FrameV1
00069 
00070   pnCCD class FrameV1, this is a class which is defined by origianl pdsdata package.
00071 */
00072 
00073 class ConfigV1;
00074 class ConfigV2;
00075 
00076 class FrameV1 {
00077 public:
00078   virtual ~FrameV1();
00079   /** Special values */
00080   virtual uint32_t specialWord() const = 0;
00081   /** Frame number */
00082   virtual uint32_t frameNumber() const = 0;
00083   /** Most significant part of timestamp */
00084   virtual uint32_t timeStampHi() const = 0;
00085   /** Least significant part of timestamp */
00086   virtual uint32_t timeStampLo() const = 0;
00087   /** Frame data */
00088   virtual ndarray<const uint16_t, 1> _data() const = 0;
00089   virtual ndarray<const uint16_t, 2> data() const = 0;
00090 };
00091 
00092 /** @class FullFrameV1
00093 
00094   This is a "synthetic" pnCCD frame which is four original 512x512 frames
00095             glued together. This class does not exist in original pdsdata, it has been 
00096             introduced to psana to simplify access to full frame data in the user code.
00097 */
00098 
00099 
00100 class FullFrameV1 {
00101 public:
00102   enum { TypeId = Pds::TypeId::Id_pnCCDframe /**< XTC type ID value (from Pds::TypeId class) */ };
00103   enum { Version = 1 /**< XTC type version number */ };
00104   virtual ~FullFrameV1();
00105   /** Special values */
00106   virtual uint32_t specialWord() const = 0;
00107   /** Frame number */
00108   virtual uint32_t frameNumber() const = 0;
00109   /** Most significant part of timestamp */
00110   virtual uint32_t timeStampHi() const = 0;
00111   /** Least significant part of timestamp */
00112   virtual uint32_t timeStampLo() const = 0;
00113   /** Full frame data, image size is 1024x1024. */
00114   virtual ndarray<const uint16_t, 2> data() const = 0;
00115 };
00116 
00117 /** @class FramesV1
00118 
00119   pnCCD class FramesV1 which is a collection of FrameV1 objects, number of 
00120             frames in collection is determined by numLinks() method (which should return 4 
00121             in most cases). This class does not exist in original pdsdata, has been 
00122             introduced to psana to help in organizing 4 small pnCCD frames together.
00123 */
00124 
00125 class ConfigV1;
00126 class ConfigV2;
00127 
00128 class FramesV1 {
00129 public:
00130   enum { TypeId = Pds::TypeId::Id_pnCCDframe /**< XTC type ID value (from Pds::TypeId class) */ };
00131   enum { Version = 1 /**< XTC type version number */ };
00132   virtual ~FramesV1();
00133   /** Number of frames is determined by numLinks() method. */
00134   virtual const PNCCD::FrameV1& frame(uint32_t i0) const = 0;
00135   virtual uint32_t numLinks() const = 0;
00136   /** Method which returns the shape (dimensions) of the data returned by frame() method. */
00137   virtual std::vector<int> frame_shape() const = 0;
00138 };
00139 } // namespace PNCCD
00140 } // namespace Psana
00141 #endif // PSANA_PNCCD_DDL_H

Generated on 19 Dec 2016 for PSANAclasses by  doxygen 1.4.7