Belle II Software  release-05-01-25
DQMHistAnalysisOutputNSM.cc
1 //+
2 // File : DQMHistAnalysisOutputNSM.cc
3 // Description :
4 //
5 // Author : Tomoyuki Konno, Tokyo Metropolitan Univerisity
6 // Date : 25 - Dec - 2015
7 //-
8 
9 #include <dqm/analysis/modules/DQMHistAnalysisOutputNSM.h>
10 
11 #include <daq/slc/nsm/NSMNotConnectedException.h>
12 #include <daq/slc/runcontrol/RCNode.h>
13 
14 #include <daq/slc/system/PThread.h>
15 
16 #include <daq/slc/base/ConfigFile.h>
17 #include <daq/slc/base/StringUtil.h>
18 
19 namespace Belle2 {
27 
28  public:
34  DQMHistAnalysisCallback(const std::string& nodename,
35  const std::string& rcnodename)
36  : NSMCallback(5), m_rcnode(rcnodename)
37  {
38  setNode(NSMNode(nodename));
39  }
40  virtual ~DQMHistAnalysisCallback() throw() {}
41 
42  public:
46  virtual void timouet(NSMCommunicator&) throw()
47  {
48  try {
49  } catch (const NSMNotConnectedException& e) {
50  printf("node %s is not online\n", m_rcnode.getName().c_str());
51  } catch (const NSMHandlerException& e) {
52  printf("NSM error %s\n", e.what());
53  } catch (const IOException& e) {
54  printf("timeout\n");
55  }
56  }
57 
58  private:
61 
62  };
63 
65 }
66 
67 using namespace std;
68 using namespace Belle2;
69 
70 //-----------------------------------------------------------------
71 // Register the Module
72 //-----------------------------------------------------------------
73 REG_MODULE(DQMHistAnalysisOutputNSM)
74 
75 //-----------------------------------------------------------------
76 // Implementation
77 //-----------------------------------------------------------------
78 
81 {
82  //Parameter definition
83  addParam("NSMNodeName", m_nodename, "NSM node name for DQM Hist analyser", string("DQMH"));
84  addParam("RunControlName", m_rcnodename, "NSM node name of the run control", string(""));
85  B2DEBUG(1, "DQMHistAnalysisOutputNSM: Constructor done.");
86 }
87 
88 
89 DQMHistAnalysisOutputNSMModule::~DQMHistAnalysisOutputNSMModule() { }
90 
91 void DQMHistAnalysisOutputNSMModule::initialize()
92 {
93  ConfigFile config("slowcontrol");
94  if (m_callback != nullptr) delete m_callback;
95  m_callback = new DQMHistAnalysisCallback(m_nodename, m_rcnodename);
96  int port = config.getInt("nsm.port");
97  std::string host = config.get("nsm.host");
98  PThread(new NSMNodeDaemon(m_callback, host, port));
99  sleep(1);
100  B2INFO("DQMHistAnalysisOutputNSM: initialized.");
101 }
102 
103 void DQMHistAnalysisOutputNSMModule::beginRun()
104 {
105  //B2INFO("DQMHistAnalysisOutputNSM: beginRun called.");
106 }
107 
108 void DQMHistAnalysisOutputNSMModule::event()
109 {
110  static bool initialized = false;
111  ParamTypeList& parnames(getParNames());
112  IntValueList& vints(getIntValues());
113  FloatValueList& vfloats(getFloatValues());
114  TextList& texts(getTexts());
115  if (!initialized) {
116  for (ParamTypeList::iterator i = parnames.begin(); i != parnames.end(); ++i) {
117  std::string pname = i->first;
118  std::string vname = StringUtil::replace(pname, "/", ".");
119  switch (i->second) {
120  case c_ParamINT:
121  m_callback->add(new NSMVHandlerInt(vname, true, false, vints[pname]));
122  break;
123  case c_ParamFLOAT:
124  m_callback->add(new NSMVHandlerFloat(vname, true, false, vfloats[pname]));
125  break;
126  case c_ParamTEXT:
127  m_callback->add(new NSMVHandlerText(vname, true, false, texts[pname]));
128  break;
129  }
130  }
131  initialized = true;
132  } else {
133  for (ParamTypeList::iterator i = parnames.begin(); i != parnames.end(); ++i) {
134  std::string pname = i->first;
135  std::string vname = StringUtil::replace(pname, "/", ".");
136  switch (i->second) {
137  case c_ParamINT:
138  m_callback->set(vname, vints[pname]);
139  break;
140  case c_ParamFLOAT:
141  m_callback->set(vname, vfloats[pname]);
142  break;
143  case c_ParamTEXT:
144  m_callback->set(vname, texts[pname]);
145  break;
146  }
147  }
148  }
149 }
150 
151 void DQMHistAnalysisOutputNSMModule::endRun()
152 {
153  B2INFO("DQMHistAnalysisOutputNSM : endRun called");
154 }
155 
156 
157 void DQMHistAnalysisOutputNSMModule::terminate()
158 {
159  B2INFO("terminate called");
160 }
161 
Belle2::DQMHistAnalysisOutputModule
Class definition for the output module of Sequential ROOT I/O.
Definition: DQMHistAnalysisOutput.h:20
Belle2::DQMHistAnalysisOutputNSMModule
The module to output values to NSM network.
Definition: DQMHistAnalysisOutputNSM.h:25
Belle2::NSMNode
Definition: NSMNode.h:14
REG_MODULE
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:652
Belle2::NSMNodeDaemon
Definition: NSMNodeDaemon.h:12
Belle2::NSMVHandlerInt
Definition: NSMVHandler.h:81
Belle2::DQMHistAnalysisCallback
The class for the NSM callback.
Definition: DQMHistAnalysisOutputNSM.cc:26
Belle2::DQMHistAnalysisCallback::m_rcnode
RCNode m_rcnode
The RC NSM node.
Definition: DQMHistAnalysisOutputNSM.cc:60
Belle2::IOException
Definition: IOException.h:12
Belle2::NSMCommunicator
Definition: NSMCommunicator.h:25
Belle2::DQMHistAnalysisModule::TextList
std::map< std::string, std::string > TextList
The type of list of string module parameter.
Definition: DQMHistAnalysis.h:62
Belle2::DQMHistAnalysisModule::IntValueList
std::map< std::string, int > IntValueList
The type of list of integer module parameter.
Definition: DQMHistAnalysis.h:54
Belle2::NSMVHandlerFloat
Definition: NSMVHandler.h:116
Belle2::NSMCallback
Definition: NSMCallback.h:24
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::NSMHandlerException
Definition: NSMHandlerException.h:12
Belle2::DQMHistAnalysisModule::FloatValueList
std::map< std::string, float > FloatValueList
The type of list of float module parameter.
Definition: DQMHistAnalysis.h:58
Belle2::PThread
Definition: PThread.h:16
Belle2::RCNode
Definition: RCNode.h:12
Belle2::NSMNotConnectedException
Definition: NSMNotConnectedException.h:12
Belle2::DQMHistAnalysisCallback::DQMHistAnalysisCallback
DQMHistAnalysisCallback(const std::string &nodename, const std::string &rcnodename)
The constructor.
Definition: DQMHistAnalysisOutputNSM.cc:34
Belle2::ConfigFile
Definition: ConfigFile.h:15
Belle2::NSMVHandlerText
Definition: NSMVHandler.h:151
Belle2::DQMHistAnalysisModule::ParamTypeList
std::map< std::string, EParamType > ParamTypeList
The type of list of module parameter types.
Definition: DQMHistAnalysis.h:50
Belle2::DQMHistAnalysisCallback::timouet
virtual void timouet(NSMCommunicator &)
The timeout function for the NSM communication.
Definition: DQMHistAnalysisOutputNSM.cc:46