17 #include "boost/program_options.hpp"
19 #include "FairMQLogger.h"
20 #include "FairMQSampler.h"
21 #include "FairMQParser.h"
24 #include "FairMQTransportFactoryNN.h"
26 #include "FairMQTransportFactoryZMQ.h"
33 #include "FairMQProgOptions.h"
34 #include "FairMQSampler.h"
37 #include <boost/archive/text_oarchive.hpp>
38 #include <boost/archive/binary_oarchive.hpp>
46 int main(
int argc,
char** argv)
49 FairMQProgOptions config;
51 FairMQSampler<PndMQSdsHitLoader> sampler;
52 sampler.CatchSignals();
56 std::string InputFile, ParFile, Branch;
58 options_description samplerOptions(
"Sampler options");
59 samplerOptions.add_options()
60 (
"InputFile", value<std::string>(&InputFile)->default_value(
""))
61 (
"ParameterFile", value<std::string>(&ParFile)->default_value(
""))
62 (
"Branch", value<std::string>(&Branch)->default_value(
""));
64 config.AddToCmdLineOptions(samplerOptions);
66 config.ParseAll(argc, argv);
68 std::string
filename = config.GetValue<std::string>(
"config-json-file");
69 std::string
id = config.GetValue<std::string>(
"id");
73 config.UserParser<FairMQParser::JSON>(
filename, id);
74 sampler.fChannels = config.GetFairMQMap();
76 LOG(INFO) <<
"PID: " << getpid();
79 FairMQTransportFactory* transportFactory =
new FairMQTransportFactoryNN();
81 FairMQTransportFactory* transportFactory =
new FairMQTransportFactoryZMQ();
84 sampler.SetTransport(transportFactory);
86 sampler.SetProperty(FairMQDevice::Id,
id);
87 sampler.SetProperty(FairMQSampler<PndMQSdsHitLoader>::InputFile, config.GetValue<
string>(
"InputFile"));
88 sampler.SetProperty(FairMQSampler<PndMQSdsHitLoader>::ParFile, config.GetValue<
string>(
"ParameterFile"));
89 sampler.SetProperty(FairMQSampler<PndMQSdsHitLoader>::Branch, config.GetValue<
string>(
"Branch"));
92 sampler.ChangeState(
"INIT_DEVICE");
93 sampler.WaitForEndOfState(
"INIT_DEVICE");
95 sampler.ChangeState(
"INIT_TASK");
96 sampler.WaitForEndOfState(
"INIT_TASK");
98 sampler.ChangeState(
"RUN");
99 sampler.InteractiveStateLoop();
101 catch (std::exception& e)
103 LOG(ERROR) << e.what();
104 LOG(INFO) <<
"Command line options are the following: ";
int main(int argc, char **argv)