60 in >> index >>
static_cast<std::string&
>(source);
75 out << static_cast<const std::string&>(source);
112 if (in >> index >> hostname) {
118 target.
connect(hostname.hostname, hostname.port);
129 cout << error << endl;
179 const std::string& server,
191 using namespace KM3NETDAQ;
196 Long64_t numberOfEvents = 1;
197 int numberOfFrames = numeric_limits<int>::max();
202 properties[
"source"] = source;
203 properties[
"target"] =
target;
204 properties[
"inputFile"] = inputFile;
205 properties[
"numberOfEvents"] = numberOfEvents;
206 properties[
"numberOfFrames"] = numberOfFrames;
207 properties[
"probability"] =
P;
209 properties.
read(
string(buffer, length));
219 if (inputFile.empty())
JErrorStream(logger) <<
"No input files ";
222 const unsigned int index =
distance(source.begin(), find(source.begin(), source.end(),
getName()));
224 int number_of_hits = 0;
225 int number_of_errors = 0;
227 if (index < source.size()) {
229 while (inputFile.hasNext()) {
233 int i1 = (timeslice->size() * (index + 0)) / source.size();
234 int i2 = (timeslice->size() * (index + 1)) / source.size();
236 if (i2 - i1 > numberOfFrames) {
237 i2 = i1 + numberOfFrames;
240 for (
int i = i1; i != i2; ++i) {
248 if (gRandom->Rndm() <=
P) {
250 *hit =
JDAQHit(hit->getPMT(), getRandom<JDAQHit::JTDC_t>(), hit->getToT());
257 JDebugStream(logger) <<
"Processing timeslice: " << inputFile.getCounter() <<
" [" << i1 <<
"," << i2 <<
"]";
261 for (
int i = i1; i != i2; ++i) {
262 data.rbegin()->at(i - i1) << timeslice->at(i);
266 JNoticeStream(logger) <<
"Number of errors / hits " << number_of_errors <<
" / " << number_of_hits <<
" for P = " <<
P;
273 setClockInterval((
long long int) (1e-3 *
getFrameTime()));
288 virtual void actionQuit(
int length,
const char* buffer)
override
290 actionReset(0, NULL);
308 virtual void actionStop(
int length,
const char* buffer)
override
310 if (timer.usec_wall > 0)
JNoticeStream(logger) <<
"I/O " << (int) (numberOfBytes / timer.usec_wall) <<
" MB/s";
311 if (numberOfSlices > 0)
JNoticeStream(logger) <<
"Delay/slice " << (int) (getClockDelay() / numberOfSlices) <<
" us";
317 if (!data.empty() && !
target.empty()) {
335 socket.
write(frame->data(), frame->size());
337 numberOfBytes += frame->size();
383 for (
iterator timeslice = begin(); timeslice != end(); ++timeslice) {
420 if (page != end() && ++page == end()) {
424 for (
iterator timeslice = begin(); timeslice != end(); ++timeslice) {
479 int main(
int argc,
char* argv[])
491 JParser<> zap(
"Program for real-time simulation of optical modules.");
495 zap[
'u'] =
make_field(client_name) =
"JDOMSimulator";
501 catch(
const exception &error) {
502 FATAL(error.what() << endl);
506 using namespace KM3NETDAQ;
void setReuseAddress(const bool on)
Set reuse address.
Utility class to parse command line options.
std::vector< value_type >::const_iterator const_iterator
int getSendBufferSize() const
Get send buffer size.
bool read(const JEquation &equation)
Read equation.
int main(int argc, char *argv[])
ROOT TTree parameter settings of various packages.
bool getReuseAddress() const
Get reuse address.
JTarget()
Default constructor.
void setRunNumber(int run_number)
Set run number.
JData()
Default constructor.
int write(const char *buffer, const int length)
Write data to socket.
virtual void actionQuit(int length, const char *buffer) override
std::vector< JFrame > JTimeslice
Message logging based on std::ostream.
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
void setSendBufferSize(const int size)
Set send buffer size.
int getReceiveBufferSize() const
Set receive buffer size.
virtual void actionConfigure(int length, const char *buffer) override
void next()
Increment internal iterator.
bool getNonBlocking() const
Get non-blocking of I/O.
Interface for logging messages.
Message logging based on ControlHost.
then echo Enter input within $TIMEOUT_S seconds echo n User name
const_iterator operator->()
Smart pointer operator.
Utility class to parse parameter values.
std::vector< JTarget > target
std::vector< value_type >::iterator iterator
Simple data structure to support I/O of equations (see class JLANG::JEquation).
Definition of random value generator.
Runcontrol client to simulate DOM.
virtual void actionRunning() override
This method is repeatedly called when this client machine is in state Running and the clock interval ...
void run()
Run as run control client following command messages via JNET::JControlHost.
Auxiliary data structure for hostname and port number.
JSource()
Default constructor.
Utility class to parse parameter values.
bool getKeepAlive() const
Get keep alive of socket.
long long int numberOfBytes
friend std::istream & operator>>(std::istream &in, JSource &source)
Read JSource from input stream.
Scheduling of actions via fixed latency intervals.
JIO::JByteArrayWriter JFrame
Memory management for sending of raw data.
event< ev_daq > ev_configure
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
std::vector< JSource > source
const_iterator begin() const
double getFrameTime()
Get frame time duration.
int getRunNumber(const std::string &file_name)
Get run number for given file name of data taking run.
Auxiliary class for CPU timing and usage.
Data structure for configuration of JDOMSimulator.
Level specific message streamers.
void setReceiveBufferSize(const int size)
Set receive buffer size.
Data structure for configuration of JDataFilter.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
virtual void actionReset(int length, const char *buffer) override
JDOMSimulator(const std::string &name, const std::string &server, JLogger *logger, const int level)
Constructor.
Control unit client base class.
General purpose class for object reading from a list of file names.
Utility class to parse command line options.
void connect(const int port)
Connect to port on local host.
friend std::ostream & operator<<(std::ostream &out, const JSource &source)
Write JSource to output stream.
void setNonBlocking(const bool on)
Set non-blocking of I/O.
virtual bool enter(const JArgs &args)
Enter the state machine.
bool getTcpNoDelay() const
Get TCP no-delay.
const char * getName()
Get ROOT name of given data type.
size_t getSizeof< JDAQSuperFrameHeader >()
Get size of type.
static const JNET::JTag RC_CMD
void setKeepAlive(const bool on)
Set keep alive of socket.
void setRunNumber(const int run)
Set run number.
void setTcpNoDelay(const bool on)
Set TCP no-delay.
Byte array binary output.
friend std::istream & operator>>(std::istream &in, JTarget &target)
Read JTarget from input stream.
size_t getSizeof< JDAQPreamble >()
Get size of type.
KM3NeT DAQ constants, bit handling, etc.
virtual void actionStop(int length, const char *buffer) override
void setFrameIndex(const int frame_index)
Set frame index.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
JData::const_iterator page
friend std::ostream & operator<<(std::ostream &out, const JTarget &target)
Write JTarget to output stream.
Data frame of one optical module.
virtual void actionStart(int length, const char *buffer) override
void reset()
Reset internal iterator to begin.
long long int numberOfSlices
static const JNET::JTag RC_DOMSIMULATOR
const_iterator end() const