CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

SiStripClusterInfo Class Reference

#include <SiStripClusterInfo.h>

List of all members.

Public Member Functions

float baryStrip () const
uint16_t charge () const
std::pair< uint16_t, uint16_t > chargeLR () const
const SiStripClustercluster () const
uint32_t detId () const
uint16_t firstStrip () const
bool IsAnythingBad () const
bool IsApvBad () const
bool IsFiberBad () const
bool IsModuleBad () const
bool IsModuleUsable () const
uint8_t maxCharge () const
uint16_t maxIndex () const
uint16_t maxStrip () const
float noise () const
float noiseRescaledByGain () const
std::vector< SiStripClusterreclusterize (const edm::ParameterSet &) const
float signalOverNoise () const
 SiStripClusterInfo (const SiStripCluster &cluster, const edm::EventSetup &es, std::string qualityLabel="")
const std::vector< uint8_t > & stripCharges () const
std::vector< float > stripGains () const
std::vector< float > stripNoises () const
std::vector< float > stripNoisesRescaledByGain () const
std::vector< bool > stripQualitiesBad () const
float variance () const
uint16_t width () const

Private Member Functions

float calculate_noise (const std::vector< float > &) const

Private Attributes

const SiStripClustercluster_ptr
const edm::EventSetupes
edm::ESHandle< SiStripGaingainHandle
edm::ESHandle< SiStripNoisesnoiseHandle
edm::ESHandle< SiStripQualityqualityHandle
std::string qualityLabel

Detailed Description

Definition at line 14 of file SiStripClusterInfo.h.


Constructor & Destructor Documentation

SiStripClusterInfo::SiStripClusterInfo ( const SiStripCluster cluster,
const edm::EventSetup es,
std::string  qualityLabel = "" 
)

Member Function Documentation

float SiStripClusterInfo::baryStrip ( ) const [inline]
float SiStripClusterInfo::calculate_noise ( const std::vector< float > &  noise) const [private]

Definition at line 90 of file SiStripClusterInfo.cc.

References i, mathSSE::sqrt(), stripCharges(), and width().

Referenced by noise(), and noiseRescaledByGain().

                                                     {  
  float noiseSumInQuadrature = 0;
  int numberStripsOverThreshold = 0;
  for(int i=0;i<width();i++) {
    if(stripCharges().at(i)!=0) {
      noiseSumInQuadrature += noise.at(i) * noise.at(i);
      numberStripsOverThreshold++;
    }
  }
  return std::sqrt( noiseSumInQuadrature / numberStripsOverThreshold );
} 
uint16_t SiStripClusterInfo::charge ( void  ) const [inline]
std::pair< uint16_t, uint16_t > SiStripClusterInfo::chargeLR ( ) const

Definition at line 23 of file SiStripClusterInfo.cc.

References begin, end, max(), and stripCharges().

                 { 
  std::vector<uint8_t>::const_iterator 
    begin( stripCharges().begin() ),
    end( stripCharges().end() ), 
    max; max = max_element(begin,end);
  return std::make_pair( accumulate(begin, max, uint16_t(0) ),
                         accumulate(max+1, end, uint16_t(0) ) );
}
const SiStripCluster* SiStripClusterInfo::cluster ( ) const [inline]
uint32_t SiStripClusterInfo::detId ( ) const [inline]
uint16_t SiStripClusterInfo::firstStrip ( ) const [inline]
bool SiStripClusterInfo::IsAnythingBad ( ) const

Definition at line 104 of file SiStripClusterInfo.cc.

References IsApvBad(), IsFiberBad(), IsModuleBad(), and stripQualitiesBad().

Referenced by ShallowClustersProducer::produce().

                      {
  std::vector<bool> stripBad = stripQualitiesBad();
  return
    IsApvBad() ||
    IsFiberBad() ||
    IsModuleBad() ||
    accumulate(stripBad.begin(), stripBad.end(), 
               false,
               std::logical_or<bool>());
}
bool SiStripClusterInfo::IsApvBad ( ) const

Definition at line 116 of file SiStripClusterInfo.cc.

References cluster(), firstStrip(), qualityHandle, and width().

Referenced by IsAnythingBad().

                 {
  return 
    qualityHandle->IsApvBad( cluster()->geographicalId(), firstStrip()/128 ) ||
    qualityHandle->IsApvBad( cluster()->geographicalId(), (firstStrip()+width())/128 ) ;    
}
bool SiStripClusterInfo::IsFiberBad ( ) const

Definition at line 123 of file SiStripClusterInfo.cc.

References cluster(), firstStrip(), qualityHandle, and width().

Referenced by IsAnythingBad().

                   {
  return 
    qualityHandle->IsFiberBad( cluster()->geographicalId(), firstStrip()/256 ) ||
    qualityHandle->IsFiberBad( cluster()->geographicalId(), (firstStrip()+width())/256 ) ;
}
bool SiStripClusterInfo::IsModuleBad ( ) const

Definition at line 130 of file SiStripClusterInfo.cc.

References cluster(), and qualityHandle.

Referenced by IsAnythingBad().

                    {
  return qualityHandle->IsModuleBad( cluster()->geographicalId() );
}
bool SiStripClusterInfo::IsModuleUsable ( ) const

Definition at line 135 of file SiStripClusterInfo.cc.

References cluster(), and qualityHandle.

                       {
  return qualityHandle->IsModuleUsable( cluster()->geographicalId() );
}
uint8_t SiStripClusterInfo::maxCharge ( ) const [inline]
uint16_t SiStripClusterInfo::maxIndex ( ) const [inline]
uint16_t SiStripClusterInfo::maxStrip ( ) const [inline]
float SiStripClusterInfo::noise ( ) const [inline]

Definition at line 42 of file SiStripClusterInfo.h.

References calculate_noise(), and stripNoises().

Referenced by TrackerDpgAnalysis::analyze().

float SiStripClusterInfo::noiseRescaledByGain ( ) const [inline]
std::vector< SiStripCluster > SiStripClusterInfo::reclusterize ( const edm::ParameterSet conf) const

Definition at line 140 of file SiStripClusterInfo.cc.

References algorithm(), SurfaceDeformationFactory::create(), detId(), es, firstStrip(), i, stripCharges(), stripGains(), and width().

                                                {
  
  std::vector<SiStripCluster> clusters;

  std::vector<uint8_t> charges = stripCharges();
  std::vector<float> gains = stripGains();
  for(unsigned i=0; i < charges.size(); i++)
    charges[i] = (charges[i] < 254) 
      ? static_cast<uint8_t>(charges[i] * gains[i])
      : charges[i];

  std::auto_ptr<StripClusterizerAlgorithm> 
    algorithm = StripClusterizerAlgorithmFactory::create(conf);
  algorithm->initialize(es);

  if( algorithm->stripByStripBegin( detId() )) {
    for(unsigned i = 0; i<width(); i++)
      algorithm->stripByStripAdd( firstStrip()+i, charges[i], clusters );
    algorithm->stripByStripEnd( clusters );
  }

  return clusters;
}
float SiStripClusterInfo::signalOverNoise ( ) const [inline]
const std::vector<uint8_t>& SiStripClusterInfo::stripCharges ( ) const [inline]
std::vector< float > SiStripClusterInfo::stripGains ( ) const

Definition at line 69 of file SiStripClusterInfo.cc.

References cluster(), firstStrip(), gainHandle, i, and width().

Referenced by ShallowClustersProducer::produce(), reclusterize(), and stripNoisesRescaledByGain().

                   {  
  SiStripApvGain::Range detGainRange = gainHandle->getRange(cluster()->geographicalId());       

  std::vector<float> gains;
  for(size_t i=0; i< width(); i++){     
    gains.push_back( gainHandle->getStripGain( firstStrip()+i, detGainRange) );
  } 
  return gains;
}
std::vector< float > SiStripClusterInfo::stripNoises ( ) const

Definition at line 58 of file SiStripClusterInfo.cc.

References cluster(), firstStrip(), i, noiseHandle, and width().

Referenced by noise(), and stripNoisesRescaledByGain().

                    {  
  SiStripNoises::Range detNoiseRange = noiseHandle->getRange(cluster()->geographicalId());  
  
  std::vector<float> noises;
  for(size_t i=0; i < width(); i++){
    noises.push_back( noiseHandle->getNoise( firstStrip()+i, detNoiseRange) );
  }
  return noises;
}
std::vector< float > SiStripClusterInfo::stripNoisesRescaledByGain ( ) const

Definition at line 48 of file SiStripClusterInfo.cc.

References stripGains(), and stripNoises().

Referenced by noiseRescaledByGain(), and ShallowClustersProducer::produce().

                                  { 
  std::vector<float> noises = stripNoises();  
  std::vector<float> gains = stripGains();
  transform(noises.begin(), noises.end(), gains.begin(), 
            noises.begin(), 
            std::divides<double>());
  return noises;
}
std::vector< bool > SiStripClusterInfo::stripQualitiesBad ( ) const

Definition at line 80 of file SiStripClusterInfo.cc.

References cluster(), firstStrip(), i, qualityHandle, and width().

Referenced by IsAnythingBad().

                          {
  std::vector<bool> isBad;
  for(int i=0; i< width(); i++) {
    isBad.push_back( qualityHandle->IsStripBad( cluster()->geographicalId(), 
                                                 firstStrip()+i) );
  }
  return isBad;
}
float SiStripClusterInfo::variance ( ) const

Definition at line 34 of file SiStripClusterInfo.cc.

References begin, end, i, lumiQueryAPI::q, and stripCharges().

Referenced by ShallowClustersProducer::produce().

                 {
  float q(0), x1(0), x2(0);
  for(std::vector<uint8_t>::const_iterator 
        begin(stripCharges().begin()), end(stripCharges().end()), it(begin); 
      it!=end; ++it) {
    unsigned i = it-begin;
    q  += (*it);
    x1 += (*it) * (i+0.5);
    x2 += (*it) * (i*i+i+1./3);
  }
  return (x2 - x1*x1/q ) / q;
}
uint16_t SiStripClusterInfo::width ( ) const [inline]

Member Data Documentation

Definition at line 59 of file SiStripClusterInfo.h.

Referenced by cluster().

Definition at line 60 of file SiStripClusterInfo.h.

Referenced by reclusterize(), and SiStripClusterInfo().

Definition at line 62 of file SiStripClusterInfo.h.

Referenced by SiStripClusterInfo(), and stripGains().

Definition at line 61 of file SiStripClusterInfo.h.

Referenced by SiStripClusterInfo(), and stripNoises().

std::string SiStripClusterInfo::qualityLabel [private]

Definition at line 64 of file SiStripClusterInfo.h.

Referenced by SiStripClusterInfo().