00001 #ifndef PDSCALIBDATA_PRINCETONBASEV1_H 00002 #define PDSCALIBDATA_PRINCETONBASEV1_H 00003 00004 //------------------------------------------------------------------------ 00005 // File and Version Information: 00006 // $Revision: 10081 $ 00007 // $Id: PrincetonBaseV1.h 10081 2015-05-14 00:15:40Z dubrovin@SLAC.STANFORD.EDU $ 00008 // $HeadURL: file://localhost/reg/g/psdm/svnrepo/psdmrepo/pdscalibdata/tags/V00-05-43/include/PrincetonBaseV1.h $ 00009 // $Date: 2015-05-13 17:15:40 -0700 (Wed, 13 May 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/princeton.ddl.h" 00025 00026 //----------------------------- 00027 00028 namespace pdscalibdata { 00029 00030 /** 00031 * class PrincetonBaseV1 contains common parameters and methods for Princeton 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: PrincetonBaseV1.h 10081 2015-05-14 00:15:40Z dubrovin@SLAC.STANFORD.EDU $ 00037 * 00038 * @author Mikhail Dubrovin 00039 */ 00040 00041 class PrincetonBaseV1 { 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 = 1300; 00049 //const static size_t Cols = 1340; 00050 const static size_t Rows = 0; // VARIABLE SHAPE DATA PARAMETERS WILL BE TAKEN FROM FILE METADATA 00051 const static size_t Cols = 0; // VARIABLE SHAPE DATA PARAMETERS WILL BE TAKEN FROM FILE METADATA 00052 const static size_t Size = Rows*Cols; 00053 const static size_t SizeCM = 7; 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 ~PrincetonBaseV1 () {}; 00060 00061 protected: 00062 00063 PrincetonBaseV1 (){ 00064 shape_t shape[Ndim]={Rows,Cols}; 00065 cmod_t cmod[SizeCM]={1,50,50,100,1,Size,1}; // use algorithm 1 to entire Princeton 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_PRINCETONBASEV1_H