CMS 3D CMS Logo

DaqScopeModeAlgorithm Class Reference

Author:
R.Bainbridge
More...

#include <DQM/SiStripCommissioningAnalysis/interface/DaqScopeModeAlgorithm.h>

Inheritance diagram for DaqScopeModeAlgorithm:

CommissioningAlgorithm

List of all members.

Public Member Functions

 DaqScopeModeAlgorithm (DaqScopeModeAnalysis *const )
const float & entries () const
const Histohisto () const
const float & max () const
const float & mean () const
const float & median () const
const float & min () const
const float & mode () const
const float & rms () const
virtual ~DaqScopeModeAlgorithm ()

Private Member Functions

void analyse ()
 Performs histogram anaylsis.
 DaqScopeModeAlgorithm ()
void extract (const std::vector< TH1 * > &)
 Extracts and organises histograms.

Private Attributes

Histo histo_
 Histogram of scope mode data.


Detailed Description

Author:
R.Bainbridge

Algorithm for scope mode data.

Definition at line 15 of file DaqScopeModeAlgorithm.h.


Constructor & Destructor Documentation

DaqScopeModeAlgorithm::DaqScopeModeAlgorithm ( DaqScopeModeAnalysis * const  anal  ) 

Definition at line 15 of file DaqScopeModeAlgorithm.cc.

00016   : CommissioningAlgorithm(anal),
00017     histo_(0,"")
00018 {;}

virtual DaqScopeModeAlgorithm::~DaqScopeModeAlgorithm (  )  [inline, virtual]

Definition at line 21 of file DaqScopeModeAlgorithm.h.

00021 {;}

DaqScopeModeAlgorithm::DaqScopeModeAlgorithm (  )  [inline, private]

Definition at line 35 of file DaqScopeModeAlgorithm.h.

00035 {;}


Member Function Documentation

void DaqScopeModeAlgorithm::analyse (  )  [private, virtual]

Performs histogram anaylsis.

Implements CommissioningAlgorithm.

Definition at line 63 of file DaqScopeModeAlgorithm.cc.

References CommissioningAnalysis::addErrorCode(), CommissioningAlgorithm::anal(), DaqScopeModeAnalysis::entries_, histo_, sistrip::invalid_, DaqScopeModeAnalysis::max_, sistrip::maximum_, DaqScopeModeAnalysis::mean_, median(), DaqScopeModeAnalysis::median_, DaqScopeModeAnalysis::min_, sistrip::mlCommissioning_, DaqScopeModeAnalysis::mode_, sistrip::nullPtr_, DaqScopeModeAnalysis::rms_, python::multivaluedict::sort(), funct::sqrt(), sum(), tmp, and value.

00063                                     { 
00064 
00065   if ( !anal() ) {
00066     edm::LogWarning(mlCommissioning_)
00067       << "[DaqScopeModeAlgorithm::" << __func__ << "]"
00068       << " NULL pointer to base Analysis object!";
00069     return; 
00070   }
00071 
00072   CommissioningAnalysis* tmp = const_cast<CommissioningAnalysis*>( anal() );
00073   DaqScopeModeAnalysis* anal = dynamic_cast<DaqScopeModeAnalysis*>( tmp );
00074   if ( !anal ) {
00075     edm::LogWarning(mlCommissioning_)
00076       << "[DaqScopeModeAlgorithm::" << __func__ << "]"
00077       << " NULL pointer to derived Analysis object!";
00078     return; 
00079   }
00080 
00081   if ( !histo_.first ) {
00082     anal->addErrorCode(sistrip::nullPtr_);
00083     return;
00084   }
00085 
00086   // Some initialization
00087   std::vector<float> median;
00088   float max_value = -1. * sistrip::invalid_;
00089   float max_contents = -1. * sistrip::invalid_;
00090   float sum = 0.;
00091   float sum2 = 0.;
00092   
00093   // Entries, min, mode
00094   uint16_t nbins = static_cast<uint16_t>( histo_.first->GetNbinsX() );
00095   for ( uint16_t ibin = 0; ibin < nbins; ibin++ ) {
00096     float value = histo_.first->GetBinLowEdge(ibin+1) + histo_.first->GetBinWidth(ibin+1) / 2.;
00097     float contents = histo_.first->GetBinContent(ibin+1);
00098     //float errors = histo_.first->GetBinError(ibin+1);
00099     if ( contents ) { 
00100       if ( contents > max_contents ) { anal->mode_ = contents; max_contents = contents; }
00101       if ( value > max_value ) { max_value = value; }
00102       if ( value < anal->min_ ) { anal->min_ = value; }
00103       sum += value * contents;
00104       sum2 += value * contents* value * contents;
00105       median.insert( median.end(), static_cast<uint32_t>(contents), value );
00106     }
00107     anal->entries_ += contents;
00108   }
00109   
00110   // Max
00111   if ( max_value > -1. * sistrip::maximum_ ) { anal->max_ = max_value; }
00112 
00113   // Median
00114   sort( median.begin(), median.end() );
00115   if ( !median.empty() ) { anal->median_ = median[ median.size()%2 ? median.size()/2 : median.size()/2 ]; }
00116   
00117   // Mean, rms
00118   if ( anal->entries_ ) { 
00119     sum /= static_cast<float>(anal->entries_);
00120     sum2 /= static_cast<float>(anal->entries_);
00121     anal->mean_ = sum;
00122     if (  sum2 > sum*sum ) { anal->rms_ = sqrt( sum2 - sum*sum ); }
00123   }
00124   
00125 }

const float& DaqScopeModeAlgorithm::entries (  )  const [inline]

void DaqScopeModeAlgorithm::extract ( const std::vector< TH1 * > &   )  [private, virtual]

Extracts and organises histograms.

Implements CommissioningAlgorithm.

Definition at line 22 of file DaqScopeModeAlgorithm.cc.

References CommissioningAnalysis::addErrorCode(), CommissioningAlgorithm::anal(), sistrip::DAQ_SCOPE_MODE, CommissioningAlgorithm::extractFedKey(), CommissioningAnalysis::fedKey(), histo_, sistrip::mlCommissioning_, sistrip::numberOfHistos_, indexGen::title, and sistrip::unexpectedTask_.

00022                                                                    { 
00023   
00024   if ( !anal() ) {
00025     edm::LogWarning(mlCommissioning_)
00026       << "[DaqScopeModeAlgorithm::" << __func__ << "]"
00027       << " NULL pointer to base Analysis object!";
00028     return; 
00029   }
00030 
00031   // Check
00032   if ( histos.size() != 1 ) {
00033     anal()->addErrorCode(sistrip::numberOfHistos_);
00034   }
00035   
00036   // Extract FED key from histo title
00037   if ( !histos.empty() ) { anal()->fedKey( extractFedKey( histos.front() ) ); }
00038   
00039   // Extract histograms
00040   std::vector<TH1*>::const_iterator ihis = histos.begin();
00041   for ( ; ihis != histos.end(); ihis++ ) {
00042     
00043     // Check for NULL pointer
00044     if ( !(*ihis) ) { continue; }
00045     
00046     // Check name
00047     SiStripHistoTitle title( (*ihis)->GetName() );
00048     if ( title.runType() != sistrip::DAQ_SCOPE_MODE ) {
00049       anal()->addErrorCode(sistrip::unexpectedTask_);
00050       continue;
00051     }
00052     
00053     // Extract timing histo
00054     histo_.first = *ihis;
00055     histo_.second = (*ihis)->GetName();
00056     
00057   }
00058   
00059 }

const DaqScopeModeAlgorithm::Histo & DaqScopeModeAlgorithm::histo (  )  const [inline]

Definition at line 47 of file DaqScopeModeAlgorithm.h.

References histo_.

00047 { return histo_; }

const float& DaqScopeModeAlgorithm::max (  )  const [inline]

const float& DaqScopeModeAlgorithm::mean (  )  const [inline]

const float& DaqScopeModeAlgorithm::median (  )  const [inline]

Referenced by analyse().

const float& DaqScopeModeAlgorithm::min (  )  const [inline]

const float& DaqScopeModeAlgorithm::mode (  )  const [inline]

const float& DaqScopeModeAlgorithm::rms (  )  const [inline]


Member Data Documentation

Histo DaqScopeModeAlgorithm::histo_ [private]

Histogram of scope mode data.

Definition at line 44 of file DaqScopeModeAlgorithm.h.

Referenced by analyse(), extract(), and histo().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:17:38 2009 for CMSSW by  doxygen 1.5.4