1 #include "otsdaq-utilities/Visualization/VisualDataManager.h"
2 #include "otsdaq-core/DataManager/DQMHistosConsumerBase.h"
3 #include "otsdaq-core/DataManager/DataManager.h"
4 #include "otsdaq-core/DataManager/DataProcessor.h"
5 #include "otsdaq-core/ConfigurationInterface/ConfigurationManager.h"
7 #include "otsdaq-core/DataProcessorPlugins/RawDataVisualizerConsumer.h"
17 VisualDataManager::VisualDataManager(
const ConfigurationTree& theXDAQContextConfigTree,
const std::string& supervisorConfigurationPath)
18 : DataManager (theXDAQContextConfigTree, supervisorConfigurationPath)
19 , theLiveDQMHistos_ (nullptr)
20 , theRawDataConsumer_ (nullptr)
27 VisualDataManager::~VisualDataManager(
void)
31 void VisualDataManager::configure(
void)
33 DataManager::configure();
37 void VisualDataManager::halt(
void)
39 theLiveDQMHistos_ =
nullptr;
44 void VisualDataManager::pause(
void)
46 __CFG_COUT__ <<
"Pausing..." << std::endl;
51 void VisualDataManager::resume(
void)
53 DataManager::resume();
57 void VisualDataManager::start(std::string runNumber)
59 __CFG_COUT__ <<
"Start!" << __E__;
61 theLiveDQMHistos_ =
nullptr;
62 theRawDataConsumer_ =
nullptr;
64 DataManager::start(runNumber);
67 auto buffers = theXDAQContextConfigTree_.getNode(theConfigurationPath_+
"/LinkToDataBufferTable").getChildren();
69 __CFG_COUT__ <<
"Buffer count " << buffers.size() << __E__;
72 for(
const auto& buffer:buffers)
74 __CFG_COUT__ <<
"Data Buffer Name: "<< buffer.first << std::endl;
75 if(buffer.second.getNode(ViewColumnInfo::COL_NAME_STATUS).getValue<
bool>())
77 std::vector<std::string> producers;
78 std::vector<std::string> consumers;
79 auto bufferConfigurationMap = buffer.second.getNode(
"LinkToDataProcessorTable").getChildren();
80 for(
const auto& bufferConfiguration: bufferConfigurationMap)
82 __CFG_COUT__ <<
"Processor id: " << bufferConfiguration.first << std::endl;
83 if(bufferConfiguration.second.getNode(ViewColumnInfo::COL_NAME_STATUS).getValue<
bool>()
84 && (bufferConfiguration.second.getNode(
"ProcessorType").getValue<std::string>() ==
"Consumer")
87 __CFG_COUT__ <<
"Consumer Plugin Type = " << bufferConfiguration.second.getNode(
"ProcessorPluginName") << __E__;
89 auto bufferIt = buffers_.at(buffer.first);
90 for(
const auto& consumer: bufferIt.consumers_)
92 __CFG_COUT__ <<
"CONSUMER PROCESSOR: " << consumer->getProcessorID() << std::endl;
93 if(consumer->getProcessorID() == bufferConfiguration.second.getNode(
"ProcessorUID").getValue<std::string>())
95 __CFG_COUT__ <<
"CONSUMER: " << consumer->getProcessorID() << std::endl;
99 __CFG_COUT__ <<
"Trying for DQMHistosConsumerBase." << __E__;
100 theLiveDQMHistos_ =
dynamic_cast<DQMHistosConsumerBase*
>(consumer);
103 __CFG_COUT__ <<
"Did we succeed? " << theLiveDQMHistos_ <<
108 if(theLiveDQMHistos_ ==
nullptr)
110 __CFG_COUT__ <<
"Trying for raw data consumer." << __E__;
114 theRawDataConsumer_ =
dynamic_cast<RawDataVisualizerConsumer*
>(consumer);
118 __CFG_COUT__ <<
"Did we succeed? " << theRawDataConsumer_ <<
123 if(!theLiveDQMHistos_ && !theRawDataConsumer_)
125 __CFG_SS__ <<
"No valid visualizer consumer!" << __E__;
138 void VisualDataManager::stop(
void)
140 theLiveDQMHistos_ =
nullptr;
145 void VisualDataManager::load(std::string fileName, std::string type)
147 if(type ==
"Histograms")
148 theFileDQMHistos_.load(fileName);
157 DQMHistosBase* VisualDataManager::getLiveDQMHistos(
void)
159 return theLiveDQMHistos_;
163 DQMHistosBase& VisualDataManager::getFileDQMHistos(
void)
165 return theFileDQMHistos_;
168 const std::string& VisualDataManager::getRawData(
void)
172 return theRawDataConsumer_->getLastRawDataBuffer();