cspad_mod/include/CsPad2x2ElementV1.h

Go to the documentation of this file.
00001 #ifndef CSPAD_MOD_CSPAD2X2ELEMENTV1_H
00002 #define CSPAD_MOD_CSPAD2X2ELEMENTV1_H
00003 
00004 //--------------------------------------------------------------------------
00005 // File and Version Information:
00006 //      $Id: CsPad2x2ElementV1.h 5253 2013-01-30 17:56:28Z salnikov@SLAC.STANFORD.EDU $
00007 //
00008 // Description:
00009 //      Class CsPad2x2ElementV1.
00010 //
00011 //------------------------------------------------------------------------
00012 
00013 //-----------------
00014 // C/C++ Headers --
00015 //-----------------
00016 
00017 //----------------------
00018 // Base Class Headers --
00019 //----------------------
00020 #include "psddl_psana/cspad2x2.ddl.h"
00021 
00022 //-------------------------------
00023 // Collaborating Class Headers --
00024 //-------------------------------
00025 
00026 //------------------------------------
00027 // Collaborating Class Declarations --
00028 //------------------------------------
00029 
00030 //              ---------------------
00031 //              -- Class Interface --
00032 //              ---------------------
00033 
00034 namespace cspad_mod {
00035 
00036 /// @addtogroup cspad_mod
00037 
00038 /**
00039  *  @ingroup cspad_mod
00040  *
00041  *  @brief Implementation of Psana::CsPad2x2::ElementV1 interface for
00042  *  calibrated data.
00043  *
00044  *  This software was developed for the LCLS project.  If you use all or 
00045  *  part of it, please give an appropriate acknowledgment.
00046  *
00047  *  @see AdditionalClass
00048  *
00049  *  @version $Id: CsPad2x2ElementV1.h 5253 2013-01-30 17:56:28Z salnikov@SLAC.STANFORD.EDU $
00050  *
00051  *  @author Andy Salnikov
00052  */
00053 
00054 class CsPad2x2ElementV1 : public Psana::CsPad2x2::ElementV1 {
00055 public:
00056 
00057   enum {
00058     Nsbtemp = Psana::CsPad2x2::ElementV1::Nsbtemp /**< Number of the elements in _sbtemp array. */
00059   };
00060 
00061   /**
00062    *  Constructor takes old object and calibrated data.
00063    *  Data array must be allocated with new[] and will be deallocated in destructor.
00064    *  Common_mode array is copied, caller keeps ownership.
00065    */
00066   CsPad2x2ElementV1 (const Psana::CsPad2x2::ElementV1& elem,
00067       int16_t* data,
00068       const float* common_mode) ;
00069 
00070   // Destructor
00071   virtual ~CsPad2x2ElementV1 () ;
00072 
00073   /** Virtual channel number. */
00074   virtual uint32_t virtual_channel() const { return m_virtual_channel; }
00075   /** Lane number. */
00076   virtual uint32_t lane() const { return m_lane; }
00077   virtual uint32_t tid() const { return m_tid; }
00078   virtual uint32_t acq_count() const { return m_acq_count; }
00079   virtual uint32_t op_code() const { return m_op_code; }
00080   /** Quadrant number. */
00081   virtual uint32_t quad() const { return m_quad; }
00082   virtual uint32_t seq_count() const { return m_seq_count; }
00083   virtual uint32_t ticks() const { return m_ticks; }
00084   virtual uint32_t fiducials() const { return m_fiducials; }
00085   virtual ndarray<const uint16_t, 1> sb_temp() const { return make_ndarray(m_sb_temp, Nsbtemp); }
00086   virtual uint32_t frame_type() const { return m_frame_type; }
00087   virtual ndarray<const int16_t, 3> data() const { return ndarray<const int16_t, 3>(m_data, m_data_shape); }
00088   virtual float common_mode(uint32_t section) const { return m_common_mode[section]; }
00089 
00090 protected:
00091 
00092 private:
00093 
00094   uint32_t m_virtual_channel;
00095   uint32_t m_lane;
00096   uint32_t m_tid;
00097   uint32_t m_acq_count;
00098   uint32_t m_op_code;
00099   uint32_t m_quad;
00100   uint32_t m_seq_count;
00101   uint32_t m_ticks;
00102   uint32_t m_fiducials;
00103   uint16_t m_sb_temp[Nsbtemp];
00104   uint32_t m_frame_type;
00105   int16_t* m_data;
00106   float m_common_mode[2];
00107   unsigned m_data_shape[3];
00108 
00109   // Copy constructor and assignment are disabled by default
00110   CsPad2x2ElementV1 ( const CsPad2x2ElementV1& ) ;
00111   CsPad2x2ElementV1& operator = ( const CsPad2x2ElementV1& ) ;
00112 
00113 };
00114 
00115 } // namespace cspad_mod
00116 
00117 #endif // CSPAD_MOD_CSPAD2X2ELEMENTV1_H

Generated on 19 Dec 2016 for PSANAmodules by  doxygen 1.4.7