CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/DQM/SiStripCommissioningSummary/src/PedestalsSummaryFactory.cc

Go to the documentation of this file.
00001 #include "DQM/SiStripCommissioningSummary/interface/PedestalsSummaryFactory.h"
00002 #include "CondFormats/SiStripObjects/interface/PedestalsAnalysis.h"
00003 #include "DataFormats/SiStripCommon/interface/SiStripEnumsAndStrings.h"
00004 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00005 #include <iostream>
00006 #include <sstream>
00007 
00008 using namespace sistrip;
00009 
00010 // -----------------------------------------------------------------------------
00011 //
00012 void PedestalsSummaryFactory::extract( Iterator iter ) {
00013   
00014   PedestalsAnalysis* anal = dynamic_cast<PedestalsAnalysis*>( iter->second );
00015   if ( !anal ) { return; }
00016     
00017   std::vector<float> temp(128, 1. * sistrip::invalid_ );
00018   std::vector< std::vector<float> > value( 2, temp );
00019   std::vector< std::vector<float> > peds( 2, temp );
00020   std::vector< std::vector<float> > noise( 2, temp );
00021   peds[0] = anal->peds()[0];
00022   peds[1] = anal->peds()[1];
00023   noise[0] = anal->noise()[0];
00024   noise[1] = anal->noise()[1];
00025 
00026   bool all_strips = false;
00027   if ( mon_ == sistrip::PEDESTALS_ALL_STRIPS ) {
00028     all_strips = true;
00029     uint16_t bins = peds[0].size();
00030     if ( peds[0].size() < peds[1].size() ) { bins = peds[1].size(); }
00031     for ( uint16_t iped = 0; iped < bins; iped++ ) {
00032       value[0][iped] = peds[0][iped]; 
00033       value[1][iped] = peds[1][iped];  
00034     }
00035   } else if ( mon_ == sistrip::PEDESTALS_MEAN ) {
00036     value[0][0] = anal->pedsMean()[0];
00037     value[1][0] = anal->pedsMean()[1];
00038   } else if ( mon_ == sistrip::PEDESTALS_SPREAD ) { 
00039     value[0][0] = anal->pedsSpread()[0]; 
00040     value[1][0] = anal->pedsSpread()[1]; 
00041   } else if ( mon_ == sistrip::PEDESTALS_MAX ) { 
00042     value[0][0] = anal->pedsMax()[0]; 
00043     value[1][0] = anal->pedsMax()[1];
00044   } else if ( mon_ == sistrip::PEDESTALS_MIN ) { 
00045     value[0][0] = anal->pedsMin()[0]; 
00046     value[1][0] = anal->pedsMin()[1]; 
00047   } else if ( mon_ == sistrip::NOISE_ALL_STRIPS ) {
00048     all_strips = true;
00049     uint16_t bins = noise[0].size();
00050     if ( noise[0].size() < noise[1].size() ) { bins = noise[1].size(); }
00051     for ( uint16_t inoise = 0; inoise < bins; inoise++ ) {
00052       value[0][inoise] = noise[0][inoise]; 
00053       value[1][inoise] = noise[1][inoise]; 
00054     }
00055   } else if ( mon_ == sistrip::NOISE_MEAN ) {
00056     value[0][0] = anal->noiseMean()[0];
00057     value[1][0] = anal->noiseMean()[1];
00058   } else if ( mon_ == sistrip::NOISE_SPREAD ) { 
00059     value[0][0] = anal->noiseSpread()[0]; 
00060     value[1][0] = anal->noiseSpread()[1]; 
00061   } else if ( mon_ == sistrip::NOISE_MAX ) { 
00062     value[0][0] = anal->noiseMax()[0]; 
00063     value[1][0] = anal->noiseMax()[1]; 
00064   } else if ( mon_ == sistrip::NOISE_MIN ) { 
00065     value[0][0] = anal->noiseMin()[0]; 
00066     value[1][0] = anal->noiseMin()[1]; 
00067   } else if ( mon_ == sistrip::NUM_OF_DEAD ) { 
00068     value[0][0] = 1. * anal->dead()[0].size(); 
00069     value[1][0] = 1. * anal->dead()[1].size();
00070   } else if ( mon_ == sistrip::NUM_OF_NOISY ) { 
00071     value[0][0] = 1. * anal->noisy()[0].size(); 
00072     value[1][0] = 1. * anal->noisy()[1].size();
00073   } else { 
00074     edm::LogWarning(mlSummaryPlots_)
00075       << "[SummaryPlotFactory::" << __func__ << "]" 
00076       << " Unexpected monitorable: "
00077       << SiStripEnumsAndStrings::monitorable( SummaryPlotFactoryBase::mon_ );
00078     return; 
00079   }
00080 
00081   if ( !all_strips ) {
00082 
00083     SummaryPlotFactoryBase::generator_->fillMap( SummaryPlotFactoryBase::level_, 
00084                                                  SummaryPlotFactoryBase::gran_, 
00085                                                  iter->first, 
00086                                                  value[0][0] );
00087     
00088     SummaryPlotFactoryBase::generator_->fillMap( SummaryPlotFactoryBase::level_, 
00089                                                  SummaryPlotFactoryBase::gran_, 
00090                                                  iter->first, 
00091                                                  value[1][0] );
00092 
00093   } else {
00094 
00095     for ( uint16_t istr = 0; istr < value[0].size(); istr++ ) {
00096       SummaryPlotFactoryBase::generator_->fillMap( SummaryPlotFactoryBase::level_, 
00097                                                    SummaryPlotFactoryBase::gran_, 
00098                                                    iter->first, 
00099                                                    value[0][istr] );
00100     }
00101     
00102     for ( uint16_t istr = 0; istr < value[1].size(); istr++ ) {
00103       SummaryPlotFactoryBase::generator_->fillMap( SummaryPlotFactoryBase::level_, 
00104                                                    SummaryPlotFactoryBase::gran_, 
00105                                                    iter->first, 
00106                                                    value[1][istr] );
00107     }
00108 
00109   }
00110 
00111 }
00112 
00113 // -----------------------------------------------------------------------------
00114 //
00115 void PedestalsSummaryFactory::format() {
00116   
00117   if ( mon_ == sistrip::PEDESTALS_ALL_STRIPS ) {
00118     generator_->axisLabel( "Pedestal value [adc]" );
00119   } else if ( mon_ == sistrip::PEDESTALS_MEAN ) {
00120   } else if ( mon_ == sistrip::PEDESTALS_SPREAD ) { 
00121   } else if ( mon_ == sistrip::PEDESTALS_MAX ) { 
00122   } else if ( mon_ == sistrip::PEDESTALS_MIN ) { 
00123   } else if ( mon_ == sistrip::NOISE_ALL_STRIPS ) {
00124     generator_->axisLabel( "Noise [adc]" );
00125   } else if ( mon_ == sistrip::NOISE_MEAN ) {
00126   } else if ( mon_ == sistrip::NOISE_SPREAD ) { 
00127   } else if ( mon_ == sistrip::NOISE_MAX ) { 
00128   } else if ( mon_ == sistrip::NOISE_MIN ) { 
00129   } else if ( mon_ == sistrip::NUM_OF_DEAD ) { 
00130   } else if ( mon_ == sistrip::NUM_OF_NOISY ) { 
00131   } else { 
00132     edm::LogWarning(mlSummaryPlots_)
00133       << "[SummaryPlotFactory::" << __func__ << "]" 
00134       << " Unexpected SummaryHisto value:"
00135       << SiStripEnumsAndStrings::monitorable( SummaryPlotFactoryBase::mon_ );
00136   } 
00137 
00138 }