1 #include "otsdaq-utilities/Visualization/VisualDataManager.h"
2 #include "otsdaq-core/ConfigurationInterface/ConfigurationManager.h"
3 #include "otsdaq-core/DataManager/DQMHistosConsumerBase.h"
4 #include "otsdaq-core/DataManager/DataManager.h"
5 #include "otsdaq-core/DataManager/DataProcessor.h"
7 #include "otsdaq-core/DataProcessorPlugins/RawDataVisualizerConsumer.h"
16 VisualDataManager::VisualDataManager(
const ConfigurationTree& theXDAQContextConfigTree,
17 const std::string& supervisorConfigurationPath)
18 : DataManager(theXDAQContextConfigTree, supervisorConfigurationPath)
19 , theLiveDQMHistos_(nullptr)
20 , theRawDataConsumer_(nullptr)
28 VisualDataManager::~VisualDataManager(
void) {}
31 void VisualDataManager::configure(
void) { DataManager::configure(); }
34 void VisualDataManager::halt(
void)
36 theLiveDQMHistos_ =
nullptr;
41 void VisualDataManager::pause(
void)
43 __CFG_COUT__ <<
"Pausing..." << std::endl;
48 void VisualDataManager::resume(
void) { DataManager::resume(); }
51 void VisualDataManager::start(std::string runNumber)
53 __CFG_COUT__ <<
"Start!" << __E__;
55 theLiveDQMHistos_ =
nullptr;
56 theRawDataConsumer_ =
nullptr;
58 DataManager::start(runNumber);
60 auto buffers = theXDAQContextConfigTree_
61 .getNode(theConfigurationPath_ +
"/LinkToDataBufferTable")
64 __CFG_COUT__ <<
"Buffer count " << buffers.size() << __E__;
66 for(
const auto& buffer : buffers)
68 __CFG_COUT__ <<
"Data Buffer Name: " << buffer.first << std::endl;
69 if(buffer.second.getNode(TableViewColumnInfo::COL_NAME_STATUS).getValue<
bool>())
71 std::vector<std::string> producers;
72 std::vector<std::string> consumers;
73 auto bufferConfigurationMap =
74 buffer.second.getNode(
"LinkToDataProcessorTable").getChildren();
75 for(
const auto& bufferConfiguration : bufferConfigurationMap)
77 __CFG_COUT__ <<
"Processor id: " << bufferConfiguration.first
79 if(bufferConfiguration.second
80 .getNode(TableViewColumnInfo::COL_NAME_STATUS)
82 (bufferConfiguration.second.getNode(
"ProcessorType")
83 .getValue<std::string>() ==
"Consumer"))
86 <<
"Consumer Plugin Type = "
87 << bufferConfiguration.second.getNode(
"ProcessorPluginName")
90 auto bufferIt = buffers_.at(buffer.first);
91 for(
const auto& consumer : bufferIt.consumers_)
94 <<
"CONSUMER PROCESSOR: " << consumer->getProcessorID()
96 if(consumer->getProcessorID() ==
97 bufferConfiguration.second.getNode(
"ProcessorUID")
98 .getValue<std::string>())
100 __CFG_COUT__ <<
"CONSUMER: " << consumer->getProcessorID()
105 __CFG_COUT__ <<
"Trying for DQMHistosConsumerBase."
108 dynamic_cast<DQMHistosConsumerBase*
>(consumer);
110 __CFG_COUT__ <<
"Did we succeed? " << theLiveDQMHistos_
117 if(theLiveDQMHistos_ ==
nullptr)
119 __CFG_COUT__ <<
"Trying for raw data consumer." << __E__;
123 theRawDataConsumer_ =
124 dynamic_cast<RawDataVisualizerConsumer*
>(
131 __CFG_COUT__ <<
"Did we succeed? " << theRawDataConsumer_
135 if(!theLiveDQMHistos_ && !theRawDataConsumer_)
137 __CFG_SS__ <<
"No valid visualizer consumer!" << __E__;
149 void VisualDataManager::stop(
void)
151 theLiveDQMHistos_ =
nullptr;
156 void VisualDataManager::load(std::string fileName, std::string type)
158 if(type ==
"Histograms")
159 theFileDQMHistos_.load(fileName);
167 DQMHistosBase* VisualDataManager::getLiveDQMHistos(
void) {
return theLiveDQMHistos_; }
170 DQMHistosBase& VisualDataManager::getFileDQMHistos(
void) {
return theFileDQMHistos_; }
172 const std::string& VisualDataManager::getRawData(
void)
176 return theRawDataConsumer_->getLastRawDataBuffer();