10 #include "dqm_core/LibraryManager.h"
11 #include "dqm_core/AlgorithmManager.h"
14 #include <boost/scoped_ptr.hpp>
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( 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));