1 #include "otsdaq-utilities/VisualizationV2/VisualDataManagerV2.h"
2 #include "otsdaq/ConfigurationInterface/ConfigurationManager.h"
3 #include "otsdaq/DataManager/DQMHistosConsumerBase.h"
4 #include "otsdaq/DataManager/DataManager.h"
5 #include "otsdaq/DataManager/DataProcessor.h"
7 #include "otsdaq/DataProcessorPlugins/RawDataVisualizerConsumer.h"
19 const ConfigurationTree& theXDAQContextConfigTree,
20 const std::string& supervisorConfigurationPath)
21 : DataManager(theXDAQContextConfigTree, supervisorConfigurationPath)
22 , theLiveDQMHistos_(nullptr)
23 , theRawDataConsumer_(nullptr)
31 VisualDataManagerV2::~VisualDataManagerV2(
void) {}
34 void VisualDataManagerV2::configure(
void) { DataManager::configure(); }
37 void VisualDataManagerV2::halt(
void)
39 theLiveDQMHistos_ =
nullptr;
44 void VisualDataManagerV2::pause(
void)
46 __CFG_COUT__ <<
"Pausing..." << std::endl;
51 void VisualDataManagerV2::resume(
void) { DataManager::resume(); }
54 void VisualDataManagerV2::start(std::string runNumber)
56 __CFG_COUT__ <<
"Start!" << __E__;
58 theLiveDQMHistos_ =
nullptr;
59 theRawDataConsumer_ =
nullptr;
61 DataManager::start(runNumber);
63 auto buffers = theXDAQContextConfigTree_
64 .getNode(theConfigurationPath_ +
"/LinkToDataBufferTable")
67 __CFG_COUT__ <<
"Buffer count " << buffers.size() << __E__;
69 for(
const auto& buffer : buffers)
71 __CFG_COUT__ <<
"Data Buffer Name: " << buffer.first << std::endl;
72 if(buffer.second.getNode(TableViewColumnInfo::COL_NAME_STATUS).getValue<
bool>())
74 std::vector<std::string> producers;
75 std::vector<std::string> consumers;
76 auto bufferConfigurationMap =
77 buffer.second.getNode(
"LinkToDataProcessorTable").getChildren();
78 for(
const auto& bufferConfiguration : bufferConfigurationMap)
80 __CFG_COUT__ <<
"Processor id: " << bufferConfiguration.first
82 if(bufferConfiguration.second
83 .getNode(TableViewColumnInfo::COL_NAME_STATUS)
85 (bufferConfiguration.second.getNode(
"ProcessorType")
86 .getValue<std::string>() ==
"Consumer"))
89 <<
"Consumer Plugin Type = "
90 << bufferConfiguration.second.getNode(
"ProcessorPluginName")
93 auto bufferIt = buffers_.at(buffer.first);
94 for(
const auto& consumer : bufferIt.consumers_)
97 <<
"CONSUMER PROCESSOR: " << consumer->getProcessorID()
99 if(consumer->getProcessorID() ==
100 bufferConfiguration.second.getNode(
"ProcessorUID")
101 .getValue<std::string>())
103 __CFG_COUT__ <<
"CONSUMER: " << consumer->getProcessorID()
108 __CFG_COUT__ <<
"Trying for DQMHistosConsumerBase."
111 dynamic_cast<DQMHistosConsumerBase*
>(consumer);
113 __CFG_COUT__ <<
"Did we succeed? " << theLiveDQMHistos_
120 if(theLiveDQMHistos_ ==
nullptr)
122 __CFG_COUT__ <<
"Trying for raw data consumer." << __E__;
126 theRawDataConsumer_ =
127 dynamic_cast<RawDataVisualizerConsumer*
>(
134 __CFG_COUT__ <<
"Did we succeed? " << theRawDataConsumer_
138 if(!theLiveDQMHistos_ && !theRawDataConsumer_)
140 __CFG_SS__ <<
"No valid visualizer consumer!" << __E__;
152 void VisualDataManagerV2::stop(
void)
154 theLiveDQMHistos_ =
nullptr;
159 void VisualDataManagerV2::load(std::string fileName, std::string type)
161 if(type ==
"Histograms")
162 theFileDQMHistos_.load(fileName);
173 DQMHistosBase& VisualDataManagerV2::getFileDQMHistos(
void) {
return theFileDQMHistos_; }
175 const std::string& VisualDataManagerV2::getRawData(
void)
179 return theRawDataConsumer_->getLastRawDataBuffer();
VisualDataManagerV2(const ConfigurationTree &theXDAQContextConfigTree, const std::string &supervisorConfigurationPath)
DQMHistosBase * getLiveDQMHistos(void)
Getters.