17 #include <boost/program_options.hpp>
22 namespace po = boost::program_options;
23 #include <boost/foreach.hpp>
24 #include <boost/scoped_ptr.hpp>
26 #include "version.hpp"
47 boost::scoped_ptr<DataInputInterface>
m_input;
55 boost::scoped_ptr<DFInterface>
m_adfi;
56 boost::scoped_ptr<DFInterface>
m_odfi;
86 virtual void actionInit(
int length,
const char* buffer) {}
93 std::string(buffer, length));
96 unsigned int const delta_ts = conf.get<
unsigned int>(
97 "timeslice_duration");
99 uint64_t
const run_start_time = conf.get<uint64_t>(
"run_start_time");
101 std::size_t
const max_dump_size = conf.get<std::size_t>(
"max_dump_size");
102 std::string
const prefix = conf.get<std::string>(
"dump_file_prefix");
103 std::string
const postfix = conf.get<std::string>(
"dump_file_postfix");
109 acou_ports = detail::vectorize<int>(conf.get<std::string>(
"acou_ports"));
113 opto_ports = detail::vectorize<int>(conf.get<std::string>(
"opto_ports"));
116 int const n_channels = acou_ports.size() + opto_ports.size();
144 std::string
const acou_recipient = conf.get<std::string>(
"acou_recipient");
153 conf.get<std::string>(
"opto_recipients"));
156 BOOST_FOREACH(std::string s, opto_recipients)
165 BOOST_FOREACH(
int port, acou_ports)
172 BOOST_FOREACH(
int port, opto_ports)
203 assert(run_number >= 0);
209 m_afarm->runNumber(run_number);
210 m_afarm->detectorId(detector_id);
214 m_ofarm->runNumber(run_number);
215 m_ofarm->detectorId(detector_id);
314 int main(
int argc,
char* argv[])
316 __debug_abort_on_wrong_size_<CLBCommonHeader>(40);
317 __debug_abort_on_wrong_size_<DAQCommonHeader>(56);
318 __debug_abort_on_wrong_size_<UTCTime>(8);
320 std::string server(
"localhost");
321 std::string logger(
"localhost");
322 std::string client_name(
"DataQueue");
325 po::options_description desc(
"Options");
327 (
"help,h",
"Print this help and exit.")
328 (
"version,v",
"Print the version and exit.")
329 (
"optical,o",
"Set the optical mode.")
330 (
"acoustic,a",
"Set the acoustic mode.")
332 po::value<std::string>(&server)->default_value(server),
333 "Set the address of the SM server.")
335 po::value<std::string>(&logger)->default_value(logger),
336 "Set the address of the logger server.")
338 po::value<std::string>(&client_name)->default_value(client_name),
339 "Set the address of the client name.")
341 po::value<int>(&debug)->default_value(debug),
342 "Set the debug level.");
344 bool acou =
false, opto =
false;
348 po::variables_map vm;
350 po::command_line_parser(argc, argv).
options(desc).run(),
353 if (vm.count(
"help"))
355 std::cout << desc << std::endl;
359 if (vm.count(
"version"))
367 opto = vm.count(
"optical");
369 acou = vm.count(
"acoustic");
371 if (! (acou || opto))
373 throw std::runtime_error(
"FATAL: no mode specified. Use -o, -a or both. See the help.");
376 catch (
const po::error& e)
378 std::cerr <<
"DataQueue: Error: " << e.what() <<
'\n'
379 << desc << std::endl;
382 catch (
const std::runtime_error& e)
384 std::cerr <<
"DataQueue: Error: " << e.what() <<
'\n'
385 << desc << std::endl;
boost::scoped_ptr< boost::thread > m_adfi_th
void initLogger(JLOGGER::JMessageLoggerThreadSafe const &second)
static const JNET::JTag RC_DQUEUE_OPT
int main(int argc, char *argv[])
JDAQStateMachine::ev_configure_event ev_configure
virtual void actionInput(int length, const char *buffer)
This method is called at ev_input.
virtual void actionRunning()
This method is repeatedly called when this client machine is in state Running and the clock interval ...
static const JNET::JTag RC_DQUEUE
Interface for logging messages.
Message logging based on ControlHost.
boost::scoped_ptr< DFInterface > m_adfi
void setClockInterval(const long long int interval_us)
Set interval time.
virtual void actionEnter()
Interface methods for actions corresponding to state transitions.
void replaceEvent(const JTag &oldTag, const JTag &newTag, JDAQEvent_t &event)
Replace tag of given event in event table.
JSharedPointer< JControlHost > server
message server
virtual void actionContinue(int length, const char *buffer)
void run()
Run as run control client following command messages via JNET::JControlHost.
virtual void actionExit()
virtual void actionStop(int length, const char *buffer)
boost::scoped_ptr< FrameFarm > m_afarm
boost::scoped_ptr< boost::thread > m_odfi_th
boost::scoped_ptr< RecipientsHandler > m_orecipients
boost::property_tree::ptree parse(std::string str)
int getDetectorID() const
Get detector identifier.
then usage $script[port]< option > nPossible options
virtual void actionStart(int length, const char *buffer)
static boost::atomic< unsigned int > n_obj
const JNET::JTag & clientTag() const
virtual void actionInit(int length, const char *buffer)
Auxiliary class for method select.
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file.
virtual void actionQuit(int length, const char *buffer)
virtual void actionPause(int length, const char *buffer)
boost::scoped_ptr< boost::thread > m_aff_th
virtual void actionConfigure(int length, const char *buffer)
boost::scoped_ptr< FrameFarm > m_ofarm
void setLogLevel(int level)
then cat $TRIPOD_INITIAL<< EOF1 256877.5 4743716.7-2438.42 256815.5 4743395.0-2435.53 257096.2 4743636.0-2439.5EOFfiif[[!-f $DETECTOR]];then JEditDetector-a $DETECTOR_INITIAL-s"-1 addz -6.9"-o $DETECTOR--!eval`JPrintDetector-a $DETECTOR-O SUMMARY`for STRING in ${STRINGS[*]};do set_variable MODULE`getModule-a $DETECTOR-L"$STRING 0"`JEditDetector-a $DETECTOR-M"$MODULE setz -2.9"-o $DETECTOR--!donefiif[[!-f $TRIPOD]];then cp-p $TRIPOD_INITIAL $TRIPODfiJAcoustics.sh $DETECTOR_IDcat > acoustics_trigger_parameters txt<< EOFQ=0.0;TMax_s=0.020;quantile=0.9;numberOfHits=90;EOFJAcousticsEventBuilder.sh $DETECTOR $RUNS[*]INPUT_FILES=(`ls KM3NeT_ ${(l:8::0::0:) DETECTOR_ID}_0 *${^RUNS}_event.root`) cd $WORKDIRif[!$HOMEDIR-ef $WORKDIR];then cp-p $HOMEDIR/$DETECTOR $WORKDIR cp-p $HOMEDIR/$TRIPOD $WORKDIR cp-p $HOMEDIR/${^INPUT_FILES}$WORKDIR cp-p $HOMEDIR/{acoustics_fit_parameters, acoustics_trigger_parameters, disable, hydrophone, mechanics, sound_velocity, tripod, waveform}.txt $WORKDIRfisource $JPP_DIR/examples/JAcoustics/acoustics-fit-toolkit.shJConvertDetectorFormat-a $DETECTOR-o $HOMEDIR/detector_backup.datxJDetachPMTs-a $DETECTOR-o $DETECTORtimer_startinitialise stage_1B 0.002 0.1 0 > &stage log
virtual void actionInput(int length, const char *buffer)
This method is called at ev_input.
boost::scoped_ptr< RecipientsHandler > m_arecipients
General purpose message reporting.
int getRunNumber() const
Get run number.
static InBufferCollector & getCollector()
Control unit client base class.
virtual bool enter(const JArgs &args)
Enter the state machine.
boost::scoped_ptr< DFInterface > m_odfi
static const JNET::JTag RC_DQUEUE_ACS
JMessageLogger logger
message logger
static const JNET::JTag RC_CMD
virtual void actionReset(int length, const char *buffer)
Thread-safe message logger.
DataQueue(const std::string &name, const std::string &server, JLogger *logger, const int level, bool acou, bool opto)
boost::scoped_ptr< DataInputInterface > m_input
boost::scoped_ptr< boost::thread > m_off_th
static boost::atomic< unsigned int > n_obj
virtual void actionSelect(const JFileDescriptorMask &)
Action method following last select call.
JLevel_t getLevel()
Get debug level.