10 #include "dqm_core/LibraryManager.h" 
   11 #include "dqm_core/AlgorithmManager.h" 
   16 #include <TCollection.h> 
   17 #include <TDirectory.h> 
   30   AlgVec_t::const_iterator subAlgsEnd = 
other.m_subAlgs.end();
 
   31   AlgVec_t::const_iterator subAlgsIter = 
other.m_subAlgs.begin();
 
   32   for( ; subAlgsIter != subAlgsEnd; ++subAlgsIter ) {
 
   33     dqm_core::Algorithm* otherSubAlg = subAlgsIter->first;    
 
   34     dqm_core::Algorithm* 
alg = otherSubAlg->clone();
 
   35     m_subAlgs.push_back( AlgVec_t::value_type(
alg, subAlgsIter->second) );
 
   42   : 
m_name (compAlgConfig.GetName())
 
   45   TIter libIter( compAlgConfig.
GetAllLib() );
 
   46   while( (libStr = 
dynamic_cast<TObjString*
>( libIter() )) != 0 ){
 
   50     catch ( dqm_core::Exception& ex ) {
 
   51       std::cout << 
"Can't load library " << libStr->GetString()
 
   52         << 
" for composite algorithm " << 
m_name  
   53         << 
". Continuing regardless ..." << std::endl;
 
   58   TIter algIter( compAlgConfig.
GetAllAlg() );
 
   59   while( (algStr = 
dynamic_cast<TObjString*
>( algIter() )) != 0 ){
 
   60     dqm_core::Algorithm* 
alg(0);
 
   61     std::string 
algName(algStr->GetString().Data());
 
   65     catch( dqm_core::Exception& ex ) {
 
   66         throw dqm_core::BadConfig( ERS_HERE, 
m_name, ex.what(), ex );
 
   77   AlgVec_t::const_iterator subAlgsEnd = 
m_subAlgs.end();
 
   78   AlgVec_t::const_iterator subAlgsIter = 
m_subAlgs.begin();
 
   79   for( ; subAlgsIter != subAlgsEnd; ++subAlgsIter ) {
 
   80     dqm_core::Algorithm* 
alg = subAlgsIter->first;
 
  103   message += 
"Description: Builds a container for subalgorithms.\n";
 
  104   message += 
"Parameters: none\n";
 
  115   std::map<std::string,double> 
tags;
 
  117   AlgVec_t::const_iterator subAlgsEnd = 
m_subAlgs.end();
 
  118   AlgVec_t::const_iterator subAlgsIter = 
m_subAlgs.begin();
 
  119   for( ; subAlgsIter != subAlgsEnd; ++subAlgsIter ) {
 
  122     dqm_core::Algorithm* 
alg = subAlgsIter->first;
 
  129     std::map<std::string,double>::const_iterator tagsEnd  = subResult->tags_.end();
 
  130     std::map<std::string,double>::const_iterator tagsIter = subResult->tags_.begin();
 
  131     for( ; tagsIter != tagsEnd; ++tagsIter ) {
 
  132       std::map<std::string,double>::value_type tagVal( subAlgsIter->second + std::string(
"|") + tagsIter->first, tagsIter->second );
 
  133       tags.insert( std::move(tagVal) );
 
  157   } 
catch (dqm_core::BadConfig &) {  }
 
  158   std::map< std::string,double >  
pars;
 
  159   std::map<std::string,std::string> strPars;
 
  160   std::map<std::string,double> grthr;
 
  161   std::map<std::string,double> rdthr;
 
  163   std::map< std::string, double > oldpars(
config.getParameters());
 
  164   std::map<std::string,double> oldgrthr(
config.getGreenThresholds());
 
  165   std::map<std::string,double> oldrdthr(
config.getRedThresholds());
 
  167   for (std::map< std::string, double >::const_iterator parVal = oldpars.begin();
 
  168     parVal != oldpars.end(); ++parVal) {
 
  169       std::string 
parname(parVal->first);
 
  170       std::string::size_type 
pos = 
parname.find(
'|');
 
  171       if (
pos == std::string::npos) {
 
  172     pars.insert(*parVal);
 
  173       } 
else if (
parname.substr(0, 
pos) == subalg) {
 
  174     pars.insert(std::map< std::string, double >::value_type(
parname.substr(
pos+1), parVal->second));
 
  177   for ( 
auto& strPar : 
config.getGenericParameters() ) {
 
  178     std::string 
parname = strPar.first;
 
  179     auto pipeIndex = 
parname.find( 
'|' );
 
  180     if ( pipeIndex == std::string::npos ) {
 
  181       strPars.insert( strPar );
 
  182     } 
else if ( 
parname.substr( 0, pipeIndex ) == subalg ) {
 
  183       strPars.emplace( 
parname.substr( pipeIndex + 1 ), strPar.second );
 
  186   for (std::map< std::string, double >::const_iterator thrVal = oldgrthr.begin();
 
  187        thrVal != oldgrthr.end(); ++thrVal) {
 
  188     std::string thrname(thrVal->first);
 
  189     std::string::size_type 
pos = thrname.find(
'|');
 
  190     if (
pos == std::string::npos) {
 
  191       grthr.insert(*thrVal);
 
  192     } 
else if (thrname.substr(0, 
pos) == subalg) {
 
  193       grthr.insert(std::map< std::string, double >::value_type(thrname.substr(
pos+1), thrVal->second));
 
  196   for (std::map< std::string, double >::const_iterator thrVal = oldrdthr.begin();
 
  197        thrVal != oldrdthr.end(); ++thrVal) {
 
  198     std::string thrname(thrVal->first);
 
  199     std::string::size_type 
pos = thrname.find(
'|');
 
  200     if (
pos == std::string::npos) {
 
  201       rdthr.insert(*thrVal);
 
  202     } 
else if (thrname.substr(0, 
pos) == subalg) {
 
  203     rdthr.insert(std::map< std::string, double >::value_type(thrname.substr(
pos+1), thrVal->second));