4 #include "KVOnlineReconDataAnalyser.h"
5 #include "KVMultiDetArray.h"
7 #include "KVReconEventSelector.h"
10 #include "dataflowports.h"
12 #include <KVZMQMessage.h>
26 SetStatusUpdateInterval(2.5);
49 if (!fSelector || !fSelector->InheritsFrom(
"TSelector")) {
50 std::cout <<
"The selector \"" <<
GetUserClass() <<
"\" is not valid." << std::endl;
51 std::cout <<
"Process aborted." << std::endl;
57 fSelector->ParseOptions();
60 fSelector->InitAnalysis();
61 if (!fSelector->IsOptGiven(
"dataflowhost")) {
62 KVError::Warning(
this,
"SubmitTask",
"Did you forget to give option 'dataflowhost' in InitAnalysis()?");
70 zmq::context_t context(1);
71 std::string zmq_spy_port =
Form(
"tcp://%s:%d", fSelector->GetOpt(
"dataflowhost").Data(), PORT_EVENT_PUB);
72 zmq::socket_t pub(context, ZMQ_SUB);
74 pub.setsockopt(ZMQ_RCVTIMEO, &timeout,
sizeof(
int));
76 pub.connect(zmq_spy_port.c_str());
78 catch (zmq::error_t&
e) {
79 KVError::Error(
this,
"SubmitTask",
"failed to connect socket: %s",
e.what());
82 std::cout <<
"Connected to EventPublisher " << zmq_spy_port << std::endl;
83 pub.setsockopt(ZMQ_SUBSCRIBE,
"", 0);
95 if (pub.recv(&
event)) {
102 fSelector->SetEvent(
event);
104 if (!fSelector->Analysis())
break;
111 std::cout <<
"~" << (int)(nev / (time - fStartTime)) <<
" events/s. tot = " << nevt << std::endl;
120 fSelector->EndAnalysis();
143 gMultiDetArray->SetMinimumOKMultiplicity(fSelector->GetEvent());
char * Form(const char *fmt,...)
Double_t GetStatusUpdateInterval() const
const UserClass & GetUserClass() const
virtual void postAnalysis()
const KVString & GetUserClassOptions() const
virtual void postInitRun()
virtual void postInitAnalysis()
const KVDataSet * GetDataSet() const
static KVMultiDetArray * MakeMultiDetector(const Char_t *dataset_name, Int_t run=-1, TString classname="KVMultiDetArray", KVExpDB *db=nullptr)
Online analysis of reconstructed data.
void SubmitTask() override
Bool_t CheckStatusUpdateInterval(Int_t) const
void preInitAnalysis() override
void preInitRun() override
void preAnalysis() override
Set minimum (trigger) multiplicity for array.
Manages user analysis of reconstructed experimental data.
Base class for user analysis of reconstructed data.
Event containing KVReconstructedNucleus nuclei reconstructed from hits in detectors.
Allow to send/receive ROOT/KV objects between ZeroMQ sockets.
UInt_t Convert(Bool_t toGMT=kFALSE) const
virtual const char * GetName() const
void Error(UserClass p, const char *location, const char *va_(fmt),...)
void Warning(UserClass p, const char *location, const char *va_(fmt),...)