otsdaq  v2_01_00
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 
24 
25 
26  std::string name = "BoardReader";
27 
28  __CFG_MOUT__ << "artdaq version " <<
29  // mf::LogDebug(supervisorApplicationUID_) << " artdaq version " <<
30  artdaq::GetPackageBuildInfo::getPackageBuildInfo().getPackageVersion()
31  << ", built " <<
32  artdaq::GetPackageBuildInfo::getPackageBuildInfo().getBuildTimestamp();
33 
34  INIT_MF((name + "App").c_str());
35 
36  //artdaq::configureMessageFacility("boardreader");
37  //artdaq::configureMessageFacility(name.c_str());
38 
39  __COUT__ << "MF initialized" << std::endl;
40 
41  rank_ = Configurable::getApplicationLID();
42 
43  __COUTV__(rank_);
44 
45  unsigned short port = 5100;
46 
47  //artdaq::setMsgFacAppName(name, port);
48 
49  // create the BoardReaderApp
50  // artdaq::BoardReaderApp br_app(local_group_comm, name);
51  __COUT__ << "END" << std::endl;
52 
53 
54  __COUT__ << "Initialized!" << std::endl;
55  __COUT__ << "Initialized!" << std::endl;
56  __COUT__ << "Initialized!" << std::endl;
57  __COUT__ << "Initialized!" << std::endl;
58  __COUT__ << "Initialized!" << std::endl;
59 }
60 
61 //========================================================================================================================
62 ARTDAQDataManager::~ARTDAQDataManager(void)
63 {}
64 
65 //========================================================================================================================
66 void ARTDAQDataManager::configure(void)
67 {
68  __COUT__ << "ARTDAQDataManager configuring..." << std::endl;
69 
70  DataManager::configure();
71 
72  __COUT__ << "ARTDAQDataManager DataManager configured now pass the MPI stuff" << std::endl;
73  for(auto it=DataManager::buffers_.begin(); it!=DataManager::buffers_.end(); it++)
74  for(auto& itc: it->second.consumers_)
75  if(dynamic_cast<ARTDAQConsumer*>(itc.get()))
76  {
77  dynamic_cast<ARTDAQConsumer*>(itc.get())->initLocalGroup(rank_);
78  return;//There can only be 1 ARTDAQConsumer for each ARTDAQDataManager!!!!!!!
79  }
80 
81  __SS__ << "There was no ARTDAQ Consumer found on a buffer!" << std::endl;
82  __COUT__ << ss.str();
83 
84  __COUT__ << "Looking for an ARTDAQ Producer..." << std::endl;
85 
86  for(auto it=DataManager::buffers_.begin(); it!=DataManager::buffers_.end(); it++)
87  for(auto& itc: it->second.producers_)
88  if(dynamic_cast<ARTDAQProducer*>(itc.get()))
89  {
90  dynamic_cast<ARTDAQProducer*>(itc.get())->initLocalGroup(rank_);
91  return;//There can only be 1 ARTDAQProducer for each ARTDAQDataManager!!!!!!!
92  }
93 
94  __COUT__ << "No ARTDAQ Producers found either... so error!" << std::endl;
95 
96  __COUT_ERR__ << ss.str();
97  throw std::runtime_error(ss.str());
98 }
99 
100 
101 //========================================================================================================================
102 void ARTDAQDataManager::stop(void)
103 {
104  DataManager::stop();
105 }