00001 #ifndef CSPAD_MOD_DATAPROXY2X2_H 00002 #define CSPAD_MOD_DATAPROXY2X2_H 00003 00004 //-------------------------------------------------------------------------- 00005 // File and Version Information: 00006 // $Id: DataProxy2x2.h 2904 2012-02-08 22:19:48Z salnikov@SLAC.STANFORD.EDU $ 00007 // 00008 // Description: 00009 // Class DataProxy2x2. 00010 // 00011 //------------------------------------------------------------------------ 00012 00013 //----------------- 00014 // C/C++ Headers -- 00015 //----------------- 00016 00017 //---------------------- 00018 // Base Class Headers -- 00019 //---------------------- 00020 #include "PSEvt/Proxy.h" 00021 00022 //------------------------------- 00023 // Collaborating Class Headers -- 00024 //------------------------------- 00025 #include "psddl_psana/cspad2x2.ddl.h" 00026 #include "PSEnv/EnvObjectStore.h" 00027 #include "PSEvt/EventKey.h" 00028 00029 //------------------------------------ 00030 // Collaborating Class Declarations -- 00031 //------------------------------------ 00032 00033 // --------------------- 00034 // -- Class Interface -- 00035 // --------------------- 00036 00037 namespace cspad_mod { 00038 00039 /// @addtogroup cspad_mod 00040 00041 /** 00042 * @ingroup cspad_mod 00043 * 00044 * @brief Proxy for 2x2 Element which performs calibration. 00045 * 00046 * This software was developed for the LCLS project. If you use all or 00047 * part of it, please give an appropriate acknowledgment. 00048 * 00049 * @version $Id: DataProxy2x2.h 2904 2012-02-08 22:19:48Z salnikov@SLAC.STANFORD.EDU $ 00050 * 00051 * @author Andy Salnikov 00052 */ 00053 00054 class DataProxy2x2 : public PSEvt::Proxy<Psana::CsPad2x2::ElementV1> { 00055 public: 00056 00057 // Default constructor 00058 DataProxy2x2 (const PSEvt::EventKey& key, PSEnv::EnvObjectStore& calibStore) ; 00059 00060 // Destructor 00061 virtual ~DataProxy2x2 () ; 00062 00063 /** 00064 * @brief Get the correctly-typed object from the proxy. 00065 * 00066 * @param[in] dict Proxy dictionary containing this proxy. 00067 * @param[in] source Detector address information 00068 * @param[in] key String key, additional key supplied by user. 00069 * @return Shared pointer of the correct type. 00070 */ 00071 virtual boost::shared_ptr<Psana::CsPad2x2::ElementV1> 00072 getTypedImpl(PSEvt::ProxyDictI* dict, const Pds::Src& source, const std::string& key); 00073 00074 protected: 00075 00076 private: 00077 00078 // Data members 00079 PSEvt::EventKey m_key; 00080 PSEnv::EnvObjectStore& m_calibStore; 00081 boost::shared_ptr<Psana::CsPad2x2::ElementV1> m_data; 00082 00083 }; 00084 00085 } // namespace cspad_mod 00086 00087 #endif // CSPAD_MOD_DATAPROXY2X2_H