CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

VpspScanTask Class Reference

#include <VpspScanTask.h>

Inheritance diagram for VpspScanTask:
CommissioningTask

List of all members.

Public Member Functions

 VpspScanTask (DQMStore *, const FedChannelConnection &)
virtual ~VpspScanTask ()

Private Member Functions

virtual void book ()
virtual void fill (const SiStripEventSummary &, const edm::DetSet< SiStripRawDigi > &)
virtual void update ()

Private Attributes

std::vector< HistoSetvpsp_

Detailed Description

Definition at line 9 of file VpspScanTask.h.


Constructor & Destructor Documentation

VpspScanTask::VpspScanTask ( DQMStore dqm,
const FedChannelConnection conn 
)

Definition at line 13 of file VpspScanTask.cc.

                                                               :
  CommissioningTask( dqm, conn, "VpspScanTask" ),
  vpsp_()
{}
VpspScanTask::~VpspScanTask ( ) [virtual]

Definition at line 21 of file VpspScanTask.cc.

                            {
}

Member Function Documentation

void VpspScanTask::book ( ) [private, virtual]

Reimplemented from CommissioningTask.

Definition at line 26 of file VpspScanTask.cc.

References sistrip::apv_, CommissioningTask::connection(), CommissioningTask::dqm(), sistrip::EXPERT_HISTO, sistrip::FED_KEY, CommissioningTask::fedKey(), sistrip::LLD_CHAN, pileupCalc::nbins, indexGen::title, vpsp_, and sistrip::VPSP_SCAN.

                        {
  
  uint16_t nbins = 60;
 
  std::string title;

  vpsp_.resize(2);
  for ( uint16_t iapv = 0; iapv < 2; iapv++ ) {
    if ( connection().i2cAddr(iapv) ) { 

      std::stringstream extra_info; 
      extra_info << sistrip::apv_ << iapv;
      
      title = SiStripHistoTitle( sistrip::EXPERT_HISTO, 
                                 sistrip::VPSP_SCAN, 
                                 sistrip::FED_KEY, 
                                 fedKey(),
                                 sistrip::LLD_CHAN, 
                                 connection().lldChannel(),
                                 extra_info.str() ).title();
      
      vpsp_[iapv].histo( dqm()->bookProfile( title, title, 
                                             nbins, -0.5, nbins*1.-0.5,
                                             1025, 0., 1025. ) );
      
      vpsp_[iapv].vNumOfEntries_.resize(nbins,0);
      vpsp_[iapv].vSumOfContents_.resize(nbins,0);
      vpsp_[iapv].vSumOfSquares_.resize(nbins,0);
      
    }
  }
  
}
void VpspScanTask::fill ( const SiStripEventSummary summary,
const edm::DetSet< SiStripRawDigi > &  digis 
) [private, virtual]

Reimplemented from CommissioningTask.

Definition at line 62 of file VpspScanTask.cc.

References edm::DetSet< T >::data, CommissioningTask::fecKey(), getHLTprescales::index, sistrip::mlDqmSource_, python::multivaluedict::sort(), edmLumisInFiles::summary, CommissioningTask::updateHistoSet(), and vpsp_.

                                                                  {

  // Retrieve VPSP setting and CCU channel
  uint32_t vpsp = const_cast<SiStripEventSummary&>(summary).vpsp();
  uint32_t ccu_chan = const_cast<SiStripEventSummary&>(summary).vpspCcuChan();

  // Check CCU channel from EventSummary is consistent with this module
  if ( SiStripFecKey( fecKey() ).ccuChan() != ccu_chan ) { return; }

  if ( digis.data.size() != 256 ) {
    edm::LogWarning(mlDqmSource_)
      << "[VpspScanTask::" << __func__ << "]"
      << " Unexpected number of digis! " 
      << digis.data.size(); 
    return;
  }

  // Fill histo with baseline(calc'ed from median value of data)
  for ( uint16_t iapv = 0; iapv < 2; iapv++ ) {
    
    if ( vpsp >= vpsp_[iapv].vNumOfEntries_.size() ) { 
      edm::LogWarning(mlDqmSource_)
        << "[VpspScanTask::" << __func__ << "]"
        << " Unexpected VPSP value! " << vpsp;
      return;
    }
    
    std::vector<uint16_t> baseline;
    baseline.reserve(128); 
    for ( uint16_t idigi = 128*iapv; idigi < 128*(iapv+1); idigi++ ) {
      baseline.push_back( digis.data[idigi].adc() ); 
    }
    sort( baseline.begin(), baseline.end() ); 
    uint16_t index = baseline.size()%2 ? baseline.size()/2 : baseline.size()/2-1;
    
    if ( !baseline.empty() ) { 
      updateHistoSet( vpsp_[iapv], vpsp, baseline[index] );
    }
    
  }

}
void VpspScanTask::update ( void  ) [private, virtual]

Reimplemented from CommissioningTask.

Definition at line 108 of file VpspScanTask.cc.

References CommissioningTask::updateHistoSet(), and vpsp_.

                          {
  for ( uint32_t iapv = 0; iapv < vpsp_.size(); iapv++ ) {
    updateHistoSet( vpsp_[iapv] );
  }
}

Member Data Documentation

std::vector<HistoSet> VpspScanTask::vpsp_ [private]

Definition at line 23 of file VpspScanTask.h.

Referenced by book(), fill(), and update().