FairRoot/PandaRoot
runPndTopixFileSinkHits.cxx
Go to the documentation of this file.
1 /********************************************************************************
2  * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3  * *
4  * This software is distributed under the terms of the *
5  * GNU Lesser General Public Licence version 3 (LGPL) version 3, *
6  * copied verbatim in the file "LICENSE" *
7  ********************************************************************************/
15 #include <PndMQFileSinkHits.h>
16 #include <iostream>
17 #include <TApplication.h>
18 
19 #include "boost/program_options.hpp"
20 
21 #include "FairMQLogger.h"
22 #include "FairMQParser.h"
23 #include "FairMQProgOptions.h"
24 
25 #include "PndSdsDigiTopix4.h"
26 
27 #ifdef NANOMSG
28 #include "FairMQTransportFactoryNN.h"
29 #else
30 #include "FairMQTransportFactoryZMQ.h"
31 #endif
32 
33 using namespace boost::program_options;
34 
35 int main(int argc, char** argv)
36 {
37 
38  PndMQFileSinkHits sink;
39 
40  sink.CatchSignals();
41 
42  FairMQProgOptions config;
43 
44  std::string outputFileName;
45 
46  options_description samplerOptions("Sampler options");
47  samplerOptions.add_options()
48  ("fileName", value<string>(&outputFileName)->default_value("FileSinkHits.root"), "Output file name");
49 
50  config.AddToCmdLineOptions(samplerOptions);
51 
52  try
53  {
54  config.ParseAll(argc, argv);
55 
56  std::string filename = config.GetValue<std::string>("config-json-file");
57  std::string id = config.GetValue<std::string>("id");
58 
59  outputFileName = config.GetStringValue("fileName");
60 
61  LOG(INFO) << "OutputFileName: " << outputFileName;
62 
63  sink.SetFileName(outputFileName);
64 
65  config.UserParser<FairMQParser::JSON>(filename, id);
66 
67  sink.fChannels = config.GetFairMQMap();
68 
69  LOG(INFO) << "PID: " << getpid();
70 
71 #ifdef NANOMSG
72  FairMQTransportFactory* transportFactory = new FairMQTransportFactoryNN();
73 #else
74  FairMQTransportFactory* transportFactory = new FairMQTransportFactoryZMQ();
75 #endif
76 
77  sink.SetTransport(transportFactory);
78 
79  sink.SetProperty(FairMQDevice::Id, id);
80 
81  sink.ChangeState("INIT_DEVICE");
82  sink.WaitForEndOfState("INIT_DEVICE");
83 
84  sink.ChangeState("INIT_TASK");
85  sink.WaitForEndOfState("INIT_TASK");
86 
87  sink.InitOutputFile(id);
88 
89  sink.ChangeState("RUN");
90  sink.InteractiveStateLoop();
91  }
92  catch (std::exception& e)
93  {
94  LOG(ERROR) << e.what();
95  LOG(INFO) << "Command line options are the following: ";
96  config.PrintHelp();
97  return 1;
98  }
99 
100  return 0;
101 }
virtual void SetFileName(std::string fileName)
int main(int argc, char **argv)
virtual void InitOutputFile(TString defaultId="100")
const string filename