psana_examples/src/DumpEncoder.cpp

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 // File and Version Information:
00003 //      $Id: DumpEncoder.cpp 5919 2013-03-25 07:02:53Z salnikov@SLAC.STANFORD.EDU $
00004 //
00005 // Description:
00006 //      Class DumpEncoder...
00007 //
00008 // Author List:
00009 //      Andrei Salnikov
00010 //
00011 //------------------------------------------------------------------------
00012 
00013 //-----------------------
00014 // This Class's Header --
00015 //-----------------------
00016 #include "psana_examples/DumpEncoder.h"
00017 
00018 //-----------------
00019 // C/C++ Headers --
00020 //-----------------
00021 #include <iomanip>
00022 
00023 //-------------------------------
00024 // Collaborating Class Headers --
00025 //-------------------------------
00026 #include "MsgLogger/MsgLogger.h"
00027 #include "psddl_psana/encoder.ddl.h"
00028 
00029 //-----------------------------------------------------------------------
00030 // Local Macros, Typedefs, Structures, Unions and Forward Declarations --
00031 //-----------------------------------------------------------------------
00032 
00033 using namespace psana_examples;
00034 PSANA_MODULE_FACTORY(DumpEncoder)
00035 
00036 //              ----------------------------------------
00037 //              -- Public Function Member Definitions --
00038 //              ----------------------------------------
00039 
00040 namespace psana_examples {
00041 
00042 //----------------
00043 // Constructors --
00044 //----------------
00045 DumpEncoder::DumpEncoder (const std::string& name)
00046   : Module(name)
00047 {
00048   m_src = configSrc("source", "DetInfo(:Encoder)");
00049 }
00050 
00051 //--------------
00052 // Destructor --
00053 //--------------
00054 DumpEncoder::~DumpEncoder ()
00055 {
00056 }
00057 
00058 // Method which is called at the beginning of the calibration cycle
00059 void 
00060 DumpEncoder::beginCalibCycle(Event& evt, Env& env)
00061 {
00062   MsgLog(name(), trace, "in beginCalibCycle()");
00063 
00064   shared_ptr<Psana::Encoder::ConfigV1> config1 = env.configStore().get(m_src);
00065   if (config1) {
00066     
00067     WithMsgLog(name(), info, str) {
00068       str << "Encoder::ConfigV1:";
00069       str << "\n  chan_num = " << config1->chan_num();
00070       str << "\n  count_mode = " << config1->count_mode();
00071       str << "\n  quadrature_mode = " << config1->quadrature_mode();
00072       str << "\n  input_num = " << config1->input_num();
00073       str << "\n  input_rising = " << config1->input_rising();
00074       str << "\n  ticks_per_sec = " << config1->ticks_per_sec();
00075     }
00076     
00077   }
00078 
00079   shared_ptr<Psana::Encoder::ConfigV2> config2 = env.configStore().get(m_src);
00080   if (config2) {
00081     
00082     WithMsgLog(name(), info, str) {
00083       str << "Encoder::ConfigV1:";
00084       str << "\n  chan_mask = " << std::hex << std::showbase << config2->chan_mask() << std::dec;
00085       str << "\n  count_mode = " << config2->count_mode();
00086       str << "\n  quadrature_mode = " << config2->quadrature_mode();
00087       str << "\n  input_num = " << config2->input_num();
00088       str << "\n  input_rising = " << config2->input_rising();
00089       str << "\n  ticks_per_sec = " << config2->ticks_per_sec();
00090     }
00091     
00092   }
00093 }
00094 
00095 // Method which is called with event data
00096 void 
00097 DumpEncoder::event(Event& evt, Env& env)
00098 {
00099   shared_ptr<Psana::Encoder::DataV1> data1 = evt.get(m_src);
00100   if (data1) {
00101     
00102     WithMsgLog(name(), info, str) {
00103       str << "Encoder::DataV1:"
00104           << " timestamp = " << data1->timestamp()
00105           << " encoder_count = " << data1->encoder_count();
00106     }
00107   }
00108 
00109   shared_ptr<Psana::Encoder::DataV2> data2 = evt.get(m_src);
00110   if (data2) {
00111     
00112     WithMsgLog(name(), info, str) {
00113       str << "Encoder::DataV2:"
00114           << " timestamp = " << data2->timestamp()
00115           << " encoder_count = " << data2->encoder_count();
00116     }
00117   }
00118 
00119 }
00120   
00121 } // namespace psana_examples

Generated on 19 Dec 2016 for PSANAmodules by  doxygen 1.4.7