$treeview $search $mathjax $extrastylesheet
otsdaq
v2_03_00
$projectbrief
|
$projectbrief
|
$searchbox |
00001 #include "../ARTDAQDataManager/ARTDAQDataManager.h" 00002 00003 #include "otsdaq-core/DataProcessorPlugins/ARTDAQConsumer.h" 00004 #include "otsdaq-core/DataProcessorPlugins/ARTDAQProducer.h" 00005 00006 #include "artdaq/BuildInfo/GetPackageBuildInfo.hh" 00007 00008 #include <cassert> 00009 #include <iostream> 00010 00011 using namespace ots; 00012 00013 //======================================================================================================================== 00014 ARTDAQDataManager::ARTDAQDataManager(const ConfigurationTree& theXDAQContextConfigTree, 00015 const std::string& supervisorConfigurationPath) 00016 : DataManager(theXDAQContextConfigTree, supervisorConfigurationPath) 00017 { 00018 INIT_MF("BoardReaderDataManager"); 00019 __CFG_COUT__ << "Constructor." << __E__; 00020 00021 std::string name = "BoardReader"; 00022 00023 __CFG_MCOUT__("artdaq version " << 00024 // mf::LogDebug(supervisorApplicationUID_) << " artdaq version " << 00025 artdaq::GetPackageBuildInfo::getPackageBuildInfo().getPackageVersion() 00026 << ", built " 00027 << artdaq::GetPackageBuildInfo::getPackageBuildInfo() 00028 .getBuildTimestamp()); 00029 00030 INIT_MF((name + "App").c_str()); 00031 00032 // artdaq::configureMessageFacility("boardreader"); 00033 // artdaq::configureMessageFacility(name.c_str()); 00034 00035 __CFG_COUT__ << "MF initialized" << __E__; 00036 00037 rank_ = Configurable::getApplicationLID(); 00038 00039 __CFG_COUTV__(rank_); 00040 00041 unsigned short port = 5100; 00042 00043 // artdaq::setMsgFacAppName(name, port); 00044 00045 // create the BoardReaderApp 00046 // artdaq::BoardReaderApp br_app(local_group_comm, name); 00047 __CFG_COUT__ << "END" << __E__; 00048 00049 __CFG_COUT__ << "Constructed." << __E__; 00050 } 00051 00052 //======================================================================================================================== 00053 ARTDAQDataManager::~ARTDAQDataManager(void) {} 00054 00055 //======================================================================================================================== 00056 void ARTDAQDataManager::configure(void) 00057 { 00058 __CFG_COUT__ << "ARTDAQDataManager configuring..." << __E__; 00059 00060 DataManager::configure(); 00061 00062 // find the ARTDAQ processor (can only be 1) 00063 // and initialize with rank info 00064 00065 __CFG_COUT__ << "ARTDAQDataManager DataManager configured now pass the MPI stuff" 00066 << __E__; 00067 for(auto it = DataManager::buffers_.begin(); it != DataManager::buffers_.end(); it++) 00068 for(auto& consumer : it->second.consumers_) 00069 if(dynamic_cast<ARTDAQConsumer*>(consumer)) 00070 { 00071 __CFG_COUT__ << "Found an ARTDAQ Consumer: " << consumer->getProcessorID() 00072 << __E__; 00073 00074 dynamic_cast<ARTDAQConsumer*>(consumer)->initLocalGroup(rank_); 00075 return; // There can only be 1 ARTDAQConsumer for each 00076 // ARTDAQDataManager!!!!!!! 00077 } 00078 00079 __CFG_SS__ << "There was no ARTDAQ Consumer found on a buffer!" << __E__; 00080 __CFG_COUT__ << ss.str(); 00081 00082 __CFG_COUT__ << "Looking for an ARTDAQ Producer..." << __E__; 00083 00084 for(auto it = DataManager::buffers_.begin(); it != DataManager::buffers_.end(); it++) 00085 for(auto& producer : it->second.producers_) 00086 if(dynamic_cast<ARTDAQProducer*>(producer)) 00087 { 00088 __CFG_COUT__ << "Found an ARTDAQ Producer: " << producer->getProcessorID() 00089 << __E__; 00090 00091 dynamic_cast<ARTDAQProducer*>(producer)->initLocalGroup(rank_); 00092 return; // There can only be 1 ARTDAQProducer for each 00093 // ARTDAQDataManager!!!!!!! 00094 } 00095 00096 ss << "No ARTDAQ Producers found either... so error!" << __E__; 00097 __CFG_COUT__ << ss.str(); 00098 00099 { 00100 __CFG_SS__; 00101 DataManager::dumpStatus((std::ostream*)&ss); 00102 __COUT__ << ss.str() << __E__; 00103 } 00104 00105 __CFG_COUT_ERR__ << ss.str(); 00106 __CFG_SS_THROW__; 00107 } // end configure() 00108 00109 //======================================================================================================================== 00110 void ARTDAQDataManager::stop(void) { DataManager::stop(); } // end stop()