otsdaq  v1_01_04
 All Classes Namespaces Functions
ARTDAQDataManager.cc
1 #include "otsdaq-core/ARTDAQDataManager/ARTDAQDataManager.h"
2 #include "otsdaq-core/DataProcessorPlugins/ARTDAQConsumer.h"
3 #include "otsdaq-core/DataProcessorPlugins/ARTDAQProducer.h"
4 
5 #include "artdaq/BuildInfo/GetPackageBuildInfo.hh"
6 
7 #include <iostream>
8 #include <cassert>
9 
10 using namespace ots;
11 
12 
13 //========================================================================================================================
14 ARTDAQDataManager::ARTDAQDataManager(const ConfigurationTree& theXDAQContextConfigTree, const std::string& supervisorConfigurationPath)
15 : DataManager (theXDAQContextConfigTree, supervisorConfigurationPath)
16 {
17  INIT_MF("BoardReaderDataManager");
18  __COUT__ << "Begin!" << std::endl;
19  __COUT__ << "Begin!" << std::endl;
20  __COUT__ << "Begin!" << std::endl;
21  __COUT__ << "Begin!" << std::endl;
22  __COUT__ << "Begin!" << std::endl;
23  mf::LogDebug("BoardReader") << "artdaq version " <<
24  // mf::LogDebug(supervisorApplicationUID_) << " artdaq version " <<
25  artdaq::GetPackageBuildInfo::getPackageBuildInfo().getPackageVersion()
26  << ", built " <<
27  artdaq::GetPackageBuildInfo::getPackageBuildInfo().getBuildTimestamp();
28  theMPIProcess_.init("BoardReader", artdaq::TaskType::BoardReaderTask);
29  __COUT__ << "Initialized!" << std::endl;
30  __COUT__ << "Initialized!" << std::endl;
31  __COUT__ << "Initialized!" << std::endl;
32  __COUT__ << "Initialized!" << std::endl;
33  __COUT__ << "Initialized!" << std::endl;
34 }
35 
36 //========================================================================================================================
37 ARTDAQDataManager::~ARTDAQDataManager(void)
38 {}
39 
40 //========================================================================================================================
41 void ARTDAQDataManager::configure(void)
42 {
43  __COUT__ << "ARTDAQDataManager configuring..." << std::endl;
44 
45  DataManager::configure();
46 
47  __COUT__ << "ARTDAQDataManager DataManager configured now pass the MPI stuff" << std::endl;
48  for(auto it=DataManager::buffers_.begin(); it!=DataManager::buffers_.end(); it++)
49  for(auto& itc: it->second.consumers_)
50  if(dynamic_cast<ARTDAQConsumer*>(itc.get()))
51  {
52  dynamic_cast<ARTDAQConsumer*>(itc.get())->initLocalGroup(theMPIProcess_.getRank());
53  return;//There can only be 1 ARTDAQConsumer for each ARTDAQDataManager!!!!!!!
54  }
55 
56  __SS__ << "There was no ARTDAQ Consumer found on a buffer!" << std::endl;
57  __COUT__ << ss.str();
58 
59  __COUT__ << "Looking for an ARTDAQ Producer..." << std::endl;
60 
61  for(auto it=DataManager::buffers_.begin(); it!=DataManager::buffers_.end(); it++)
62  for(auto& itc: it->second.producers_)
63  if(dynamic_cast<ARTDAQProducer*>(itc.get()))
64  {
65  dynamic_cast<ARTDAQProducer*>(itc.get())->initLocalGroup(theMPIProcess_.getRank());
66  return;//There can only be 1 ARTDAQProducer for each ARTDAQDataManager!!!!!!!
67  }
68 
69  __COUT__ << "No ARTDAQ Producers found either... so error!" << std::endl;
70 
71  __COUT_ERR__ << ss.str();
72  throw std::runtime_error(ss.str());
73 }
74 
75 
76 //========================================================================================================================
77 void ARTDAQDataManager::stop(void)
78 {
79  DataManager::stop();
80 }