diff --git a/MQ/histoServer/CbmMqHistoServer.cxx b/MQ/histoServer/CbmMqHistoServer.cxx index 6a9d55cd65efbb1fabb95f2a385d383164624028..d9f8cd04aa493c8bc53e410e5d048980b4747c5d 100644 --- a/MQ/histoServer/CbmMqHistoServer.cxx +++ b/MQ/histoServer/CbmMqHistoServer.cxx @@ -70,6 +70,8 @@ void CbmMqHistoServer::InitTask() OnData(fsChannelNameHistosInput, &CbmMqHistoServer::ReceiveData); OnData(fsChannelNameHistosConfig, &CbmMqHistoServer::ReceiveHistoConfig); OnData(fsChannelNameCanvasConfig, &CbmMqHistoServer::ReceiveCanvasConfig); + /// If multi-parts, go to method processing combined Config+Data + OnData(fsChannelNameHistosInput, &CbmMqHistoServer::ReceiveConfigAndData); fServer = new THttpServer(Form("http:%u", fuHttpServerPort)); /// To avoid the server sucking all Histos from gROOT when no output file is used @@ -214,6 +216,56 @@ bool CbmMqHistoServer::ReceiveCanvasConfig(FairMQMessagePtr& msg, int /*index*/) return true; } +bool CbmMqHistoServer::ReceiveConfigAndData(FairMQParts& parts, int /*index*/) +{ + /// Reject anything but a at least Header + Histo Config + Canvas Config + Histo Data + if( parts.Size() < 4 ) + { + if( 1 == parts.Size() ) + { + /// PAL, 09/04/2021, Debug message catching missed method overlad/polymorphism: + /// contrary to my expectation, if 2 method bound to same channel, one with FairMQMessagePtr and one with + /// FairMQParts, all messages go to multipart version and FairMQMessagePtr is converted to size 1 FairMQParts + LOG(debug) << "CbmMqHistoServer::ReceiveConfigAndData => only 1 parts found in input, " + << "assuming data only message routed to wrong method!"; + return ReceiveData( parts.At(0), 0 ); + } // if( 1 == parts.Size() ) + LOG(fatal) << "CbmMqHistoServer::ReceiveConfigAndData => Wrong number of parts: " << parts.Size() + << " instead of at least 4 (Header + Histo Config + Canvas config + Data)!"; + } // if( parts.Size() < 4 ) + + LOG(info) << "CbmMqHistoServer::ReceiveConfigAndData => Received composed message with " + << parts.Size() << " parts"; + + /// Header contains a pair of + std::pair<uint32_t, uint32_t> pairHeader; + Deserialize<BoostSerializer<std::pair<uint32_t, uint32_t>>>(*parts.At(0),pairHeader); + + LOG(info) << "CbmMqHistoServer::ReceiveConfigAndData => Received configuration for " << pairHeader.first + << " histos and " << pairHeader.second << " canvases"; + + if( parts.Size() != 1 + pairHeader.first + pairHeader.second + 1 ) + { + LOG(fatal) << "CbmMqHistoServer::ReceiveConfigAndData => Number of parts not matching header: " << parts.Size() + << " instead of " << 1 + pairHeader.first + pairHeader.second + 1; + } // if( parts.Size() != 1 + pairHeader.first + pairHeader.second ) + + /// Decode parts for histograms configuration + for (uint32_t uHisto = 0; uHisto < pairHeader.first; ++uHisto) { + ReceiveHistoConfig( parts.At(1 + uHisto), 0 ); + } // for (UInt_t uHisto = 0; uHisto < pairHeader.first; ++uHisto) + + /// Decode parts for histograms configuration + for (uint32_t uCanv = 0; uCanv < pairHeader.second; ++uCanv) { + ReceiveCanvasConfig( parts.At(1 + pairHeader.first + uCanv), 0 ); + } // for (UInt_t uCanv = 0; uCanv < pairHeader.second; ++uCanv) + + /// Decode the histograms data now that the configuration is loaded + ReceiveData( parts.At(1 + pairHeader.first + pairHeader.second), 0 ); + + return true; +} + void CbmMqHistoServer::PreRun() { fStopThread = false; diff --git a/MQ/histoServer/CbmMqHistoServer.h b/MQ/histoServer/CbmMqHistoServer.h index bd30b95342bd00a6556063e5948ff7fec523c3de..9945adc6e3a1e9e2c7bb4ca6e367a2b1cb1e9459 100644 --- a/MQ/histoServer/CbmMqHistoServer.h +++ b/MQ/histoServer/CbmMqHistoServer.h @@ -37,6 +37,8 @@ protected: bool ReceiveCanvasConfig(FairMQMessagePtr& msg, int index); + bool ReceiveConfigAndData(FairMQParts& msg, int index); + virtual void PreRun(); virtual void PostRun(); diff --git a/MQ/monitor/CbmDeviceMonitorT0.cxx b/MQ/monitor/CbmDeviceMonitorT0.cxx index 00a726a6456463e6808e685c1bf18d9774a149fd..5b37350e059c651444e4fd10e874a8661f3566e0 100644 --- a/MQ/monitor/CbmDeviceMonitorT0.cxx +++ b/MQ/monitor/CbmDeviceMonitorT0.cxx @@ -47,8 +47,6 @@ CbmDeviceMonitorT0::CbmDeviceMonitorT0() : fbIgnoreOverlapMs {false} , fsChannelNameDataInput {"t0component"} , fsChannelNameHistosInput {"histogram-in"} - , fsChannelNameHistosConfig {"histo-conf"} - , fsChannelNameCanvasConfig {"canvas-conf"} , fuHistoryHistoSize {3600} , fuMinTotPulser {185} , fuMaxTotPulser {195} @@ -88,8 +86,6 @@ try { fdMaxPublishTime = fConfig->GetValue<double_t>("PubTimeMax"); fsChannelNameDataInput = fConfig->GetValue<std::string>("TsNameIn"); fsChannelNameHistosInput = fConfig->GetValue<std::string>("ChNameIn"); - fsChannelNameHistosConfig = fConfig->GetValue<std::string>("ChNameHistCfg"); - fsChannelNameCanvasConfig = fConfig->GetValue<std::string>("ChNameCanvCfg"); fsAllowedChannels[0] = fsChannelNameDataInput; UInt_t uChanIdx = 0; @@ -235,16 +231,6 @@ bool CbmDeviceMonitorT0::InitHistograms() { std::pair<std::string, std::string> psHistoConfig(vHistos[uHisto].first->GetName(), vHistos[uHisto].second); fvpsHistosFolder.push_back(psHistoConfig); - /// Serialize the vector of histo config into a single MQ message - FairMQMessagePtr messageHist(NewMessage()); - Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, psHistoConfig); - - /// Send message to the common histogram config messages queue - if (Send(messageHist, fsChannelNameHistosConfig) < 0) { - LOG(error) << "Problem sending histo config"; - return false; - } // if( Send( messageHist, fsChannelNameHistosConfig ) < 0 ) - LOG(info) << "Config of hist " << psHistoConfig.first.data() << " in folder " << psHistoConfig.second.data(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) @@ -261,16 +247,6 @@ bool CbmDeviceMonitorT0::InitHistograms() { fvpsCanvasConfig.push_back(psCanvConfig); - /// Serialize the vector of canvas config into a single MQ message - FairMQMessagePtr messageCan(NewMessage()); - Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, psCanvConfig); - - /// Send message to the common canvas config messages queue - if (Send(messageCan, fsChannelNameCanvasConfig) < 0) { - LOG(error) << "Problem sending canvas config"; - return false; - } // if( Send( messageCan, fsChannelNameCanvasConfig ) < 0 ) - LOG(info) << "Config string of Canvas " << psCanvConfig.first.data() << " is " << psCanvConfig.second.data(); } // for( UInt_t uCanv = 0; uCanv < vCanvases.size(); ++uCanv ) @@ -314,37 +290,67 @@ bool CbmDeviceMonitorT0::HandleData(FairMQMessagePtr& msg, int /*index*/) std::chrono::duration<double_t> elapsedSeconds = currentTime - fLastPublishTime; if ((fdMaxPublishTime < elapsedSeconds.count()) || (0 == fulNumMessages % fuPublishFreqTs && fdMinPublishTime < elapsedSeconds.count())) { - SendHistograms(); + if (!fbConfigSent) { + fbConfigSent = SendHistoConfAndData(); + } // if( !fbConfigSent ) + else SendHistograms(); + fLastPublishTime = std::chrono::system_clock::now(); } // if( ( fdMaxPublishTime < elapsedSeconds.count() ) || ( 0 == fulNumMessages % fuPublishFreqTs && fdMinPublishTime < elapsedSeconds.count() ) ) return true; } +bool CbmDeviceMonitorT0::SendHistoConfAndData() +{ + /// Prepare multiparts message and header + std::pair<uint32_t, uint32_t> pairHeader( fvpsHistosFolder.size(), fvpsCanvasConfig.size() ); + FairMQMessagePtr messageHeader(NewMessage()); + Serialize< BoostSerializer< std::pair< uint32_t, uint32_t > > >(*messageHeader, pairHeader); + + FairMQParts partsOut; + partsOut.AddPart(std::move(messageHeader)); + + for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) { + /// Serialize the vector of histo config into a single MQ message + FairMQMessagePtr messageHist(NewMessage()); + Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]); + + partsOut.AddPart(std::move(messageHist)); + } // for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) + + for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) { + /// Serialize the vector of canvas config into a single MQ message + FairMQMessagePtr messageCan(NewMessage()); + Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]); + + partsOut.AddPart(std::move(messageCan)); + } // for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) + + /// Serialize the array of histos into a single MQ message + FairMQMessagePtr msgHistos(NewMessage()); + Serialize<RootSerializer>(*msgHistos, &fArrayHisto); + + partsOut.AddPart(std::move(msgHistos)); + + /// Send the multi-parts message to the common histogram messages queue + if (Send(partsOut, fsChannelNameHistosInput) < 0) { + LOG(error) << "CbmDeviceMonitorT0::SendHistoConfAndData => Problem sending data"; + return false; + } // if( Send( partsOut, fsChannelNameHistosInput ) < 0 ) + + /// Reset the histograms after sending them (but do not reset the time) + fMonitorAlgo->ResetHistograms(kFALSE); + + return true; +} + bool CbmDeviceMonitorT0::SendHistograms() { /// Serialize the array of histos into a single MQ message FairMQMessagePtr message(NewMessage()); Serialize<RootSerializer>(*message, &fArrayHisto); - // test code to check if deserialization works - /* - TObject* tempObject = nullptr; - Deserialize<RootDeserializer>(*message, tempObject); - - if (TString(tempObject->ClassName()).EqualTo("TObjArray")) { - TObjArray* arrayHisto = static_cast<TObjArray*>(tempObject); - LOG(info) << "Array contains " << arrayHisto->GetEntriesFast() - << " entries"; - for (Int_t i = 0; i < arrayHisto->GetEntriesFast(); i++) { - TObject* obj = arrayHisto->At(i); - LOG(info) << obj->GetName(); - TH1* histogram = static_cast<TH1*>(obj); - LOG(info) << histogram->GetNbinsX(); - } - } -*/ - /// Send message to the common histogram messages queue if (Send(message, fsChannelNameHistosInput) < 0) { LOG(error) << "Problem sending data"; diff --git a/MQ/monitor/CbmDeviceMonitorT0.h b/MQ/monitor/CbmDeviceMonitorT0.h index fa7d84c01418ac2e3096157ff49c854a120ac8a9..25f10fa1d6e5a030c147ab2b32e71937e0d13319 100644 --- a/MQ/monitor/CbmDeviceMonitorT0.h +++ b/MQ/monitor/CbmDeviceMonitorT0.h @@ -47,8 +47,6 @@ private: /// User settings parameters std::string fsChannelNameDataInput; std::string fsChannelNameHistosInput; - std::string fsChannelNameHistosConfig; - std::string fsChannelNameCanvasConfig; uint32_t fuHistoryHistoSize; uint32_t fuMinTotPulser; uint32_t fuMaxTotPulser; @@ -82,12 +80,15 @@ private: /// Format of Can config is "NbPadX(U);NbPadY(U);ConfigPad1(s);....;ConfigPadXY(s)" /// Format of Pad config is "GrixX(b),GridY(b),LogX(b),LogY(b),LogZ(b),HistoName(s),DrawOptions(s)" std::vector<std::pair<std::string, std::string>> fvpsCanvasConfig; + /// Flag indicating whether the histograms and canvases configurations were already published + bool fbConfigSent = false; bool IsChannelNameAllowed(std::string channelName); bool InitContainers(); bool InitHistograms(); bool DoUnpack(const fles::Timeslice& ts, size_t component); void Finish(); + bool SendHistoConfAndData(); bool SendHistograms(); }; diff --git a/MQ/monitor/CbmDeviceMonitorTof.cxx b/MQ/monitor/CbmDeviceMonitorTof.cxx index d98b93649b66e819c4d5b10629d860ceeb89fedb..1b9e16975ed8e3a73aff2d61d9e8f3b2bf69ab9f 100644 --- a/MQ/monitor/CbmDeviceMonitorTof.cxx +++ b/MQ/monitor/CbmDeviceMonitorTof.cxx @@ -63,8 +63,6 @@ try { fdMaxPublishTime = fConfig->GetValue<double_t>("PubTimeMax"); fsChannelNameDataInput = fConfig->GetValue<std::string>("TsNameIn"); fsChannelNameHistosInput = fConfig->GetValue<std::string>("ChNameIn"); - fsChannelNameHistosConfig = fConfig->GetValue<std::string>("ChNameHistCfg"); - fsChannelNameCanvasConfig = fConfig->GetValue<std::string>("ChNameCanvCfg"); fsAllowedChannels[0] = fsChannelNameDataInput; LOG(info) << "Histograms publication frequency in TS: " << fuPublishFreqTs; @@ -93,7 +91,6 @@ try { OnData(entry.first, &CbmDeviceMonitorTof::HandleData); } // if( std::string::npos != entry.first.find( fsChannelNameDataInput ) ) } // for( auto const &entry : fChannels ) - InitContainers(); } catch (InitTaskError& e) { LOG(error) << e.what(); @@ -168,11 +165,14 @@ Bool_t CbmDeviceMonitorTof::InitContainers() Bool_t initOK = fMonitorAlgo->InitContainers(); - // Bool_t initOK = fMonitorAlgo->ReInitContainers(); + return initOK; +} +bool CbmDeviceMonitorTof::InitHistograms() +{ /// Histos creation and obtain pointer on them /// Trigger histo creation on all associated algos - initOK &= fMonitorAlgo->CreateHistograms(); + bool initOK = fMonitorAlgo->CreateHistograms(); /// Obtain vector of pointers on each histo from the algo (+ optionally desired folder) std::vector<std::pair<TNamed*, std::string>> vHistos = fMonitorAlgo->GetHistoVector(); @@ -191,16 +191,6 @@ Bool_t CbmDeviceMonitorTof::InitContainers() std::pair<std::string, std::string> psHistoConfig(vHistos[uHisto].first->GetName(), vHistos[uHisto].second); fvpsHistosFolder.push_back(psHistoConfig); - /// Serialize the vector of histo config into a single MQ message - FairMQMessagePtr messageHist(NewMessage()); - Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, psHistoConfig); - - /// Send message to the common histogram config messages queue - if (Send(messageHist, fsChannelNameHistosConfig) < 0) { - LOG(error) << "Problem sending histo config"; - return false; - } // if( Send( messageHist, fsChannelNameHistosConfig ) < 0 ) - LOG(info) << "Config of hist " << psHistoConfig.first.data() << " in folder " << psHistoConfig.second.data(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) @@ -217,16 +207,6 @@ Bool_t CbmDeviceMonitorTof::InitContainers() fvpsCanvasConfig.push_back(psCanvConfig); - /// Serialize the vector of canvas config into a single MQ message - FairMQMessagePtr messageCan(NewMessage()); - Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, psCanvConfig); - - /// Send message to the common canvas config messages queue - if (Send(messageCan, fsChannelNameCanvasConfig) < 0) { - LOG(error) << "Problem sending canvas config"; - return false; - } // if( Send( messageCan, fsChannelNameCanvasConfig ) < 0 ) - LOG(info) << "Config string of Canvas " << psCanvConfig.first.data() << " is " << psCanvConfig.second.data(); } // for( UInt_t uCanv = 0; uCanv < vCanvases.size(); ++uCanv ) @@ -237,6 +217,15 @@ Bool_t CbmDeviceMonitorTof::InitContainers() // handler is called whenever a message arrives on "data", with a reference to the message and a sub-channel index (here 0) bool CbmDeviceMonitorTof::HandleData(FairMQMessagePtr& msg, int /*index*/) { + if( 0 == fulNumMessages) try { + InitContainers(); + } catch (InitTaskError& e) { + LOG(error) << e.what(); + ChangeState(fair::mq::Transition::ErrorFound); + } + + if( 0 == fulNumMessages) InitHistograms(); + fulNumMessages++; LOG(debug) << "Received message number " << fulNumMessages << " with size " << msg->GetSize(); @@ -260,37 +249,67 @@ bool CbmDeviceMonitorTof::HandleData(FairMQMessagePtr& msg, int /*index*/) std::chrono::duration<double_t> elapsedSeconds = currentTime - fLastPublishTime; if ((fdMaxPublishTime < elapsedSeconds.count()) || (0 == fulNumMessages % fuPublishFreqTs && fdMinPublishTime < elapsedSeconds.count())) { - SendHistograms(); + if (!fbConfigSent) { + fbConfigSent = SendHistoConfAndData(); + } // if( !fbConfigSent ) + else SendHistograms(); + fLastPublishTime = std::chrono::system_clock::now(); } // if( ( fdMaxPublishTime < elapsedSeconds.count() ) || ( 0 == fulNumMessages % fuPublishFreqTs && fdMinPublishTime < elapsedSeconds.count() ) ) return true; } +bool CbmDeviceMonitorTof::SendHistoConfAndData() +{ + /// Prepare multiparts message and header + std::pair<uint32_t, uint32_t> pairHeader( fvpsHistosFolder.size(), fvpsCanvasConfig.size() ); + FairMQMessagePtr messageHeader(NewMessage()); + Serialize< BoostSerializer< std::pair< uint32_t, uint32_t > > >(*messageHeader, pairHeader); + + FairMQParts partsOut; + partsOut.AddPart(std::move(messageHeader)); + + for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) { + /// Serialize the vector of histo config into a single MQ message + FairMQMessagePtr messageHist(NewMessage()); + Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageHist, fvpsHistosFolder[uHisto]); + + partsOut.AddPart(std::move(messageHist)); + } // for (UInt_t uHisto = 0; uHisto < fvpsHistosFolder.size(); ++uHisto) + + for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) { + /// Serialize the vector of canvas config into a single MQ message + FairMQMessagePtr messageCan(NewMessage()); + Serialize<BoostSerializer<std::pair<std::string, std::string>>>(*messageCan, fvpsCanvasConfig[uCanv]); + + partsOut.AddPart(std::move(messageCan)); + } // for (UInt_t uCanv = 0; uCanv < fvpsCanvasConfig.size(); ++uCanv) + + /// Serialize the array of histos into a single MQ message + FairMQMessagePtr msgHistos(NewMessage()); + Serialize<RootSerializer>(*msgHistos, &fArrayHisto); + + partsOut.AddPart(std::move(msgHistos)); + + /// Send the multi-parts message to the common histogram messages queue + if (Send(partsOut, fsChannelNameHistosInput) < 0) { + LOG(error) << "CbmDeviceMonitorTof::SendHistoConfAndData => Problem sending data"; + return false; + } // if( Send( partsOut, fsChannelNameHistosInput ) < 0 ) + + /// Reset the histograms after sending them (but do not reset the time) + fMonitorAlgo->ResetHistograms(kFALSE); + + return true; +} + bool CbmDeviceMonitorTof::SendHistograms() { /// Serialize the array of histos into a single MQ message FairMQMessagePtr message(NewMessage()); Serialize<RootSerializer>(*message, &fArrayHisto); - // test code to check if deserialization works - /* - TObject* tempObject = nullptr; - Deserialize<RootDeserializer>(*message, tempObject); - - if (TString(tempObject->ClassName()).EqualTo("TObjArray")) { - TObjArray* arrayHisto = static_cast<TObjArray*>(tempObject); - LOG(info) << "Array contains " << arrayHisto->GetEntriesFast() - << " entries"; - for (Int_t i = 0; i < arrayHisto->GetEntriesFast(); i++) { - TObject* obj = arrayHisto->At(i); - LOG(info) << obj->GetName(); - TH1* histogram = static_cast<TH1*>(obj); - LOG(info) << histogram->GetNbinsX(); - } - } -*/ - /// Send message to the common histogram messages queue if (Send(message, fsChannelNameHistosInput) < 0) { LOG(error) << "Problem sending data"; diff --git a/MQ/monitor/CbmDeviceMonitorTof.h b/MQ/monitor/CbmDeviceMonitorTof.h index 46d629955b188b03234cf4160acaad0ab21d45a2..9cdb9416c1b567e3cb6b90f56b4ee901a3f9b7e3 100644 --- a/MQ/monitor/CbmDeviceMonitorTof.h +++ b/MQ/monitor/CbmDeviceMonitorTof.h @@ -50,8 +50,6 @@ private: /// User settings parameters std::string fsChannelNameDataInput = "tofcomponent"; std::string fsChannelNameHistosInput = "histogram-in"; - std::string fsChannelNameHistosConfig = "histo-conf"; - std::string fsChannelNameCanvasConfig = "canvas-conf"; uint32_t fuHistoryHistoSize = 3600; uint32_t fuMinTotPulser = 185; uint32_t fuMaxTotPulser = 195; @@ -82,11 +80,15 @@ private: /// Format of Can config is "NbPadX(U);NbPadY(U);ConfigPad1(s);....;ConfigPadXY(s)" /// Format of Pad config is "GrixX(b),GridY(b),LogX(b),LogY(b),LogZ(b),HistoName(s),DrawOptions(s)" std::vector<std::pair<std::string, std::string>> fvpsCanvasConfig = {}; + /// Flag indicating whether the histograms and canvases configurations were already published + bool fbConfigSent = false; bool IsChannelNameAllowed(std::string channelName); - Bool_t InitContainers(); + bool InitContainers(); + bool InitHistograms(); Bool_t DoUnpack(const fles::Timeslice& ts, size_t component); void Finish(); + bool SendHistoConfAndData(); bool SendHistograms(); }; diff --git a/MQ/monitor/runMonitorT0.cxx b/MQ/monitor/runMonitorT0.cxx index 6964f6a1f59e56e88cf49230574b7df19748014b..750d5e0faa61e0962b427aaa7902c0d7e80acac9 100644 --- a/MQ/monitor/runMonitorT0.cxx +++ b/MQ/monitor/runMonitorT0.cxx @@ -35,10 +35,6 @@ void addCustomOptions(bpo::options_description& options) "MQ channel name for TS data"); options.add_options()("ChNameIn", bpo::value<std::string>()->default_value("histogram-in"), "MQ channel name for histos"); - options.add_options()("ChNameHistCfg", bpo::value<std::string>()->default_value("histo-conf"), - "MQ channel name for histos config"); - options.add_options()("ChNameCanvCfg", bpo::value<std::string>()->default_value("canvas-conf"), - "MQ channel name for canvases config"); } FairMQDevicePtr getDevice(const FairMQProgOptions& /*config*/) { return new CbmDeviceMonitorT0(); } diff --git a/MQ/monitor/runMonitorTof.cxx b/MQ/monitor/runMonitorTof.cxx index 74fa210cbc9315ae652ac21a60f1548b83c515f8..985fbfff92b086274e2a85569fb7ba0a65b24531 100644 --- a/MQ/monitor/runMonitorTof.cxx +++ b/MQ/monitor/runMonitorTof.cxx @@ -32,10 +32,6 @@ void addCustomOptions(bpo::options_description& options) "MQ channel name for TS data"); options.add_options()("ChNameIn", bpo::value<std::string>()->default_value("histogram-in"), "MQ channel name for histos"); - options.add_options()("ChNameHistCfg", bpo::value<std::string>()->default_value("histo-conf"), - "MQ channel name for histos config"); - options.add_options()("ChNameCanvCfg", bpo::value<std::string>()->default_value("canvas-conf"), - "MQ channel name for canvases config"); } FairMQDevicePtr getDevice(const FairMQProgOptions& /*config*/) { return new CbmDeviceMonitorTof(); }