00001 #ifndef PDSCALIBDATA_ANDORBASEV1_H 00002 #define PDSCALIBDATA_ANDORBASEV1_H 00003 00004 //------------------------------------------------------------------------ 00005 // File and Version Information: 00006 // $Revision: 9760 $ 00007 // $Id: AndorBaseV1.h 9760 2015-03-11 00:10:08Z dubrovin@SLAC.STANFORD.EDU $ 00008 // $HeadURL: file://localhost/reg/g/psdm/svnrepo/psdmrepo/pdscalibdata/tags/V00-05-43/include/AndorBaseV1.h $ 00009 // $Date: 2015-03-10 17:10:08 -0700 (Tue, 10 Mar 2015) $ 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 AndorBaseV1 contains common parameters and methods for Andor 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: AndorBaseV1.h 9760 2015-03-11 00:10:08Z dubrovin@SLAC.STANFORD.EDU $ 00037 * 00038 * @author Mikhail Dubrovin 00039 */ 00040 00041 class AndorBaseV1 { 00042 public: 00043 00044 typedef unsigned shape_t; 00045 typedef double cmod_t; 00046 00047 const static size_t Ndim = 2; 00048 //const static size_t Rows = 2048; 00049 //const static size_t Cols = 2048; 00050 //const static size_t Rows = 512; 00051 //const static size_t Cols = 512; 00052 const static size_t Rows = 0; // FOR VARIABLE SHAPE DATA PARAMETERS WILL BE TAKEN FROM FILE METADATA 00053 const static size_t Cols = 0; // FOR VARIABLE SHAPE DATA PARAMETERS WILL BE TAKEN FROM FILE METADATA 00054 const static size_t Size = Rows*Cols; 00055 const static size_t SizeCM = 16; 00056 00057 const shape_t* shape_base() { return &m_shape[0]; } 00058 const cmod_t* cmod_base() { return &m_cmod[0]; } 00059 const size_t size_base() { return Size; } 00060 00061 ~AndorBaseV1 () {}; 00062 00063 protected: 00064 00065 AndorBaseV1 (){ 00066 shape_t shape[Ndim]={Rows,Cols}; 00067 cmod_t cmod[SizeCM]={2,10,10,Cols,0,0,0,0,0,0,0,0,0,0,0,0}; // use algorithm 2 to one row 00068 std::memcpy(m_shape, &shape[0], sizeof(shape_t)*Ndim); 00069 std::memcpy(m_cmod, &cmod[0], sizeof(cmod_t)*SizeCM); 00070 }; 00071 00072 private: 00073 shape_t m_shape[Ndim]; 00074 cmod_t m_cmod[SizeCM]; 00075 }; 00076 00077 } // namespace pdscalibdata 00078 00079 #endif // PDSCALIBDATA_ANDORBASEV1_H