00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "psana_examples/DumpEncoder.h"
00017
00018
00019
00020
00021 #include <iomanip>
00022
00023
00024
00025
00026 #include "MsgLogger/MsgLogger.h"
00027 #include "psddl_psana/encoder.ddl.h"
00028
00029
00030
00031
00032
00033 using namespace psana_examples;
00034 PSANA_MODULE_FACTORY(DumpEncoder)
00035
00036
00037
00038
00039
00040 namespace psana_examples {
00041
00042
00043
00044
00045 DumpEncoder::DumpEncoder (const std::string& name)
00046 : Module(name)
00047 {
00048 m_src = configSrc("source", "DetInfo(:Encoder)");
00049 }
00050
00051
00052
00053
00054 DumpEncoder::~DumpEncoder ()
00055 {
00056 }
00057
00058
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
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 }