#include <VpspScanHistograms.h>
Public Member Functions | |
void | histoAnalysis (bool debug) |
void | printAnalyses () |
VpspScanHistograms (const edm::ParameterSet &pset, DQMStore *) | |
virtual | ~VpspScanHistograms () |
Definition at line 8 of file VpspScanHistograms.h.
VpspScanHistograms::VpspScanHistograms | ( | const edm::ParameterSet & | pset, |
DQMStore * | bei | ||
) |
Definition at line 18 of file VpspScanHistograms.cc.
References CommissioningHistograms::factory_, LogTrace, and sistrip::mlDqmClient_.
: CommissioningHistograms( pset.getParameter<edm::ParameterSet>("VpspScanParameters"), bei, sistrip::VPSP_SCAN ) { factory_ = auto_ptr<VpspScanSummaryFactory>( new VpspScanSummaryFactory ); LogTrace(mlDqmClient_) << "[VpspScanHistograms::" << __func__ << "]" << " Constructing object..."; }
VpspScanHistograms::~VpspScanHistograms | ( | ) | [virtual] |
Definition at line 32 of file VpspScanHistograms.cc.
References LogTrace, and sistrip::mlDqmClient_.
{ LogTrace(mlDqmClient_) << "[VpspScanHistograms::" << __func__ << "]" << " Denstructing object..."; }
void VpspScanHistograms::histoAnalysis | ( | bool | debug | ) | [virtual] |
Reimplemented from CommissioningHistograms.
Definition at line 40 of file VpspScanHistograms.cc.
References ExpressReco_HICollisions_FallBack::algo, CommissioningAlgorithm::analysis(), begin, prof2calltree::count, CommissioningHistograms::data(), relativeConstraints::empty, ExpressReco_HICollisions_FallBack::errors, extract(), CommissioningAnalysis::getErrorCodes(), CommissioningHistograms::histos(), VpspScanAnalysis::isValid(), LogTrace, sistrip::mlDqmClient_, CommissioningHistograms::pset(), and TrackValidation_HighPurity_cff::valid.
{ LogTrace(mlDqmClient_) << "[VpspScanHistograms::" << __func__ << "]"; // Some initialisation uint16_t valid = 0; HistosMap::const_iterator iter; Analyses::iterator ianal; std::map<std::string,uint16_t> errors; // Clear map holding analysis objects for ( ianal = data().begin(); ianal != data().end(); ianal++ ) { if ( ianal->second ) { delete ianal->second; } } data().clear(); // Iterate through map containing histograms for ( iter = histos().begin(); iter != histos().end(); iter++ ) { // Check vector of histos is not empty if ( iter->second.empty() ) { edm::LogWarning(mlDqmClient_) << "[VpspScanHistograms::" << __func__ << "]" << " Zero histograms found!" << endl; continue; } // Retrieve pointers to profile histos for this FED channel std::vector<TH1*> profs; Histos::const_iterator ihis = iter->second.begin(); for ( ; ihis != iter->second.end(); ihis++ ) { TProfile* prof = ExtractTObject<TProfile>().extract( (*ihis)->me_ ); if ( prof ) { profs.push_back(prof); } } // Perform histo analysis VpspScanAnalysis* anal = new VpspScanAnalysis( iter->first ); VpspScanAlgorithm algo( this->pset(), anal ); algo.analysis( profs ); data()[iter->first] = anal; if ( anal->isValid() ) { valid++; } if ( !anal->getErrorCodes().empty() ) { errors[anal->getErrorCodes()[0]]++; } } if ( !histos().empty() ) { edm::LogVerbatim(mlDqmClient_) << "[VpspScanHistograms::" << __func__ << "]" << " Analyzed histograms for " << histos().size() << " FED channels, of which " << valid << " (" << 100 * valid / histos().size() << "%) are valid."; if ( !errors.empty() ) { uint16_t count = 0; std::stringstream ss; ss << std::endl; std::map<std::string,uint16_t>::const_iterator ii; for ( ii = errors.begin(); ii != errors.end(); ++ii ) { ss << " " << ii->first << ": " << ii->second << std::endl; count += ii->second; } edm::LogWarning(mlDqmClient_) << "[VpspScanHistograms::" << __func__ << "]" << " Found " << count << " errors (" << 100 * count / histos().size() << "%): " << ss.str(); } } else { edm::LogWarning(mlDqmClient_) << "[VpspScanHistograms::" << __func__ << "]" << " No histograms to analyze!"; } }
void VpspScanHistograms::printAnalyses | ( | ) | [virtual] |
Reimplemented from CommissioningHistograms.
Definition at line 120 of file VpspScanHistograms.cc.
References CommissioningHistograms::data(), LogTrace, and sistrip::mlDqmClient_.
{ Analyses::iterator ianal = data().begin(); Analyses::iterator janal = data().end(); for ( ; ianal != janal; ++ianal ) { if ( ianal->second ) { std::stringstream ss; ianal->second->print( ss, 1 ); ianal->second->print( ss, 2 ); if ( ianal->second->isValid() ) { LogTrace(mlDqmClient_) << ss.str(); } else { edm::LogWarning(mlDqmClient_) << ss.str(); } } } }