00001 #ifndef PDSCALIBDATA_CSPADBEAMVECTORV1_H 00002 #define PDSCALIBDATA_CSPADBEAMVECTORV1_H 00003 00004 //-------------------------------------------------------------------------- 00005 // File and Version Information: 00006 // $Id: CsPadBeamVectorV1.h 8034 2014-04-19 00:51:18Z dubrovin@SLAC.STANFORD.EDU $ 00007 // 00008 // Description: 00009 // Class CsPadBeamVectorV1. 00010 // 00011 //------------------------------------------------------------------------ 00012 00013 //----------------- 00014 // C/C++ Headers -- 00015 //----------------- 00016 #include <vector> 00017 #include <cstddef> 00018 00019 //---------------------- 00020 // Base Class Headers -- 00021 //---------------------- 00022 00023 //------------------------------- 00024 // Collaborating Class Headers -- 00025 //------------------------------- 00026 // #include "psddl_psana/cspad.ddl.h" 00027 00028 //------------------------------------ 00029 // Collaborating Class Declarations -- 00030 //------------------------------------ 00031 00032 // --------------------- 00033 // -- Class Interface -- 00034 // --------------------- 00035 00036 namespace pdscalibdata { 00037 00038 /** 00039 * Gets, holds, and provides an access to the 3-vector for CSPAD users. 00040 * 00041 * This software was developed for the LCLS project. If you use all or 00042 * part of it, please give an appropriate acknowledgment. 00043 * 00044 * @see AdditionalClass 00045 * 00046 * @version $Id: CsPadBeamVectorV1.h 8034 2014-04-19 00:51:18Z dubrovin@SLAC.STANFORD.EDU $ 00047 * 00048 * @author Mikhail S. Dubrovin 00049 */ 00050 00051 class CsPadBeamVectorV1 { 00052 public: 00053 00054 enum { NUMBER_OF_PARAMETERS = 3 }; 00055 00056 CsPadBeamVectorV1( const std::vector<double> v_parameters ); 00057 double getVectorEl(std::size_t i){ return m_beam_vector[i]; }; 00058 double* getVector(){ return &m_beam_vector[0]; }; 00059 00060 void print(); 00061 00062 // Default constructor 00063 CsPadBeamVectorV1 () ; 00064 00065 // Destructor 00066 virtual ~CsPadBeamVectorV1 () ; 00067 00068 protected: 00069 00070 private: 00071 00072 // Data members 00073 // 3-vector, defined by users for CSPAD position 00074 double m_beam_vector[NUMBER_OF_PARAMETERS]; 00075 00076 // Copy constructor and assignment are disabled by default 00077 CsPadBeamVectorV1 ( const CsPadBeamVectorV1& ) ; 00078 CsPadBeamVectorV1& operator = ( const CsPadBeamVectorV1& ) ; 00079 00080 }; 00081 00082 } // namespace pdscalibdata 00083 00084 #endif // PDSCALIBDATA_CSPADBEAMVECTORV1_H