00001 #ifndef PDSCALIBDATA_PNCCDBASEV1_H 00002 #define PDSCALIBDATA_PNCCDBASEV1_H 00003 00004 //------------------------------------------------------------------------ 00005 // File and Version Information: 00006 // $Revision: 9265 $ 00007 // $Id: PnccdBaseV1.h 9265 2014-11-15 21:21:45Z dubrovin@SLAC.STANFORD.EDU $ 00008 // $HeadURL: https://pswww.slac.stanford.edu/svn/psdmrepo/pdscalibdata/trunk/include/PnccdBaseV1.h $ 00009 // $Date: 2014-11-15 13:21:45 -0800 (Sat, 15 Nov 2014) $ 00010 // 00011 // Author: Mikhail Dubrovin 00012 //------------------------------------------------------------------------ 00013 00014 //----------------- 00015 // C/C++ Headers -- 00016 //----------------- 00017 //#include <string> 00018 #include <cstring> // for memcpy 00019 00020 //------------------------------- 00021 // Collaborating Class Headers -- 00022 //------------------------------- 00023 //#include "ndarray/ndarray.h" 00024 //#include "pdsdata/psddl/andor.ddl.h" 00025 00026 //----------------------------- 00027 00028 namespace pdscalibdata { 00029 00030 /** 00031 * class PnccdBaseV1 contains common parameters and methods for pnCCD camera. 00032 * 00033 * This software was developed for the LCLS project. 00034 * If you use all or part of it, please give an appropriate acknowledgment. 00035 * 00036 * @version $Id: PnccdBaseV1.h 9265 2014-11-15 21:21:45Z dubrovin@SLAC.STANFORD.EDU $ 00037 * 00038 * @author Mikhail Dubrovin 00039 */ 00040 00041 class PnccdBaseV1 { 00042 public: 00043 00044 typedef unsigned shape_t; 00045 typedef double cmod_t; 00046 00047 const static size_t Ndim = 3; 00048 const static size_t Segs = 4; 00049 const static size_t Rows = 512; 00050 const static size_t Cols = 512; 00051 const static size_t Size = Segs*Rows*Cols; 00052 const static size_t SizeCM = 4; 00053 00054 00055 const shape_t* shape_base() { return &m_shape[0]; } 00056 const cmod_t* cmod_base() { return &m_cmod[0]; } 00057 const size_t size_base() { return Size; } 00058 00059 ~PnccdBaseV1 () {}; 00060 00061 protected: 00062 00063 PnccdBaseV1 (){ 00064 shape_t shape[Ndim]={Segs,Rows,Cols}; 00065 cmod_t cmod[SizeCM]={3, 50, 10, 128}; // use algorithm 1 to entire image 00066 std::memcpy(m_shape, &shape[0], sizeof(shape_t)*Ndim); 00067 std::memcpy(m_cmod, &cmod[0], sizeof(cmod_t)*SizeCM); 00068 }; 00069 00070 private: 00071 shape_t m_shape[Ndim]; 00072 cmod_t m_cmod[SizeCM]; 00073 }; 00074 00075 } // namespace pdscalibdata 00076 00077 #endif // PDSCALIBDATA_PNCCDBASEV1_H