CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
SiStripClusterInfo Class Reference

#include <SiStripClusterInfo.h>

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 = "" 
)

Definition at line 11 of file SiStripClusterInfo.cc.

References es, gainHandle, edm::EventSetup::get(), noiseHandle, qualityHandle, and qualityLabel.

14  : cluster_ptr(&cluster),
15  es(setup),
16  qualityLabel(quality) {
17  es.get<SiStripNoisesRcd>().get(noiseHandle);
18  es.get<SiStripGainRcd>().get(gainHandle);
20 }
edm::ESHandle< SiStripGain > gainHandle
edm::ESHandle< SiStripQuality > qualityHandle
const SiStripCluster * cluster_ptr
const T & get() const
Definition: EventSetup.h:55
const edm::EventSetup & es
edm::ESHandle< SiStripNoises > noiseHandle
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")

Member Function Documentation

float SiStripClusterInfo::baryStrip ( ) const
inline

Definition at line 27 of file SiStripClusterInfo.h.

References SiStripCluster::barycenter(), and cluster().

Referenced by TrackerDpgAnalysis::analyze(), SiStripMonitorTrack::fillMEs(), and SiStripMonitorTrack::fillModMEs().

27 {return cluster()->barycenter();}
const SiStripCluster * cluster() const
float barycenter() const
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().

90  {
91  float noiseSumInQuadrature = 0;
92  int numberStripsOverThreshold = 0;
93  for(int i=0;i<width();i++) {
94  if(stripCharges().at(i)!=0) {
95  noiseSumInQuadrature += noise.at(i) * noise.at(i);
96  numberStripsOverThreshold++;
97  }
98  }
99  return std::sqrt( noiseSumInQuadrature / numberStripsOverThreshold );
100 }
int i
Definition: DBlmapReader.cc:9
float noise() const
T sqrt(T t)
Definition: SSEVec.h:28
uint16_t width() const
const std::vector< uint8_t > & stripCharges() const
uint16_t SiStripClusterInfo::charge ( void  ) const
inline

Definition at line 37 of file SiStripClusterInfo.h.

References begin, end, and stripCharges().

Referenced by TrackerDpgAnalysis::analyze(), SiStripMonitorTrack::clusterInfos(), SiStripMonitorTrack::fillMEs(), SiStripMonitorTrack::fillModMEs(), ShallowClustersProducer::produce(), and signalOverNoise().

37 {return accumulate( stripCharges().begin(), stripCharges().end(), uint16_t(0));}
#define end
Definition: vmac.h:38
const std::vector< uint8_t > & stripCharges() const
#define begin
Definition: vmac.h:31
std::pair< uint16_t, uint16_t > SiStripClusterInfo::chargeLR ( ) const

Definition at line 23 of file SiStripClusterInfo.cc.

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

23  {
24  std::vector<uint8_t>::const_iterator
25  begin( stripCharges().begin() ),
26  end( stripCharges().end() ),
27  max; max = max_element(begin,end);
28  return std::make_pair( accumulate(begin, max, uint16_t(0) ),
29  accumulate(max+1, end, uint16_t(0) ) );
30 }
const T & max(const T &a, const T &b)
#define end
Definition: vmac.h:38
const std::vector< uint8_t > & stripCharges() const
#define begin
Definition: vmac.h:31
const SiStripCluster* SiStripClusterInfo::cluster ( ) const
inline
uint32_t SiStripClusterInfo::detId ( ) const
inline

Definition at line 24 of file SiStripClusterInfo.h.

References cluster(), and SiStripCluster::geographicalId().

Referenced by SiStripMonitorTrack::clusterInfos(), ShallowClustersProducer::NearDigis::NearDigis(), and reclusterize().

24 {return cluster()->geographicalId();}
const SiStripCluster * cluster() const
uint32_t geographicalId() const
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().

104  {
105  std::vector<bool> stripBad = stripQualitiesBad();
106  return
107  IsApvBad() ||
108  IsFiberBad() ||
109  IsModuleBad() ||
110  accumulate(stripBad.begin(), stripBad.end(),
111  false,
112  std::logical_or<bool>());
113 }
std::vector< bool > stripQualitiesBad() const
bool SiStripClusterInfo::IsApvBad ( ) const

Definition at line 116 of file SiStripClusterInfo.cc.

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

Referenced by IsAnythingBad().

116  {
117  return
118  qualityHandle->IsApvBad( cluster()->geographicalId(), firstStrip()/128 ) ||
119  qualityHandle->IsApvBad( cluster()->geographicalId(), (firstStrip()+width())/128 ) ;
120 }
uint16_t firstStrip() const
edm::ESHandle< SiStripQuality > qualityHandle
const SiStripCluster * cluster() const
uint16_t width() const
bool SiStripClusterInfo::IsFiberBad ( ) const

Definition at line 123 of file SiStripClusterInfo.cc.

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

Referenced by IsAnythingBad().

123  {
124  return
125  qualityHandle->IsFiberBad( cluster()->geographicalId(), firstStrip()/256 ) ||
126  qualityHandle->IsFiberBad( cluster()->geographicalId(), (firstStrip()+width())/256 ) ;
127 }
uint16_t firstStrip() const
edm::ESHandle< SiStripQuality > qualityHandle
const SiStripCluster * cluster() const
uint16_t width() const
bool SiStripClusterInfo::IsModuleBad ( ) const

Definition at line 130 of file SiStripClusterInfo.cc.

References cluster(), and qualityHandle.

Referenced by IsAnythingBad().

130  {
131  return qualityHandle->IsModuleBad( cluster()->geographicalId() );
132 }
edm::ESHandle< SiStripQuality > qualityHandle
const SiStripCluster * cluster() const
bool SiStripClusterInfo::IsModuleUsable ( ) const

Definition at line 135 of file SiStripClusterInfo.cc.

References cluster(), and qualityHandle.

135  {
136  return qualityHandle->IsModuleUsable( cluster()->geographicalId() );
137 }
edm::ESHandle< SiStripQuality > qualityHandle
const SiStripCluster * cluster() const
uint8_t SiStripClusterInfo::maxCharge ( ) const
inline

Definition at line 38 of file SiStripClusterInfo.h.

References begin, end, and stripCharges().

Referenced by TrackerDpgAnalysis::analyze(), SiStripMonitorTrack::fillModMEs(), ShallowClustersProducer::NearDigis::NearDigis(), and ShallowClustersProducer::produce().

38 {return * max_element(stripCharges().begin(), stripCharges().end());}
#define end
Definition: vmac.h:38
const std::vector< uint8_t > & stripCharges() const
#define begin
Definition: vmac.h:31
uint16_t SiStripClusterInfo::maxIndex ( ) const
inline

Definition at line 39 of file SiStripClusterInfo.h.

References begin, end, and stripCharges().

Referenced by SiStripMonitorTrack::fillModMEs(), maxStrip(), ShallowClustersProducer::NearDigis::NearDigis(), and ShallowClustersProducer::produce().

39 {return max_element(stripCharges().begin(), stripCharges().end()) - stripCharges().begin();}
#define end
Definition: vmac.h:38
const std::vector< uint8_t > & stripCharges() const
#define begin
Definition: vmac.h:31
uint16_t SiStripClusterInfo::maxStrip ( ) const
inline

Definition at line 28 of file SiStripClusterInfo.h.

References firstStrip(), and maxIndex().

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

28 {return firstStrip() + maxIndex();}
uint16_t firstStrip() const
uint16_t maxIndex() const
float SiStripClusterInfo::noise ( ) const
inline

Definition at line 42 of file SiStripClusterInfo.h.

References calculate_noise(), and stripNoises().

Referenced by TrackerDpgAnalysis::analyze().

42 { return calculate_noise(stripNoises());}
float calculate_noise(const std::vector< float > &) const
std::vector< float > stripNoises() const
float SiStripClusterInfo::noiseRescaledByGain ( ) const
inline

Definition at line 43 of file SiStripClusterInfo.h.

References calculate_noise(), and stripNoisesRescaledByGain().

Referenced by TrackerDpgAnalysis::analyze(), SiStripMonitorTrack::fillMEs(), ShallowClustersProducer::produce(), and signalOverNoise().

float calculate_noise(const std::vector< float > &) const
std::vector< float > stripNoisesRescaledByGain() const
std::vector< SiStripCluster > SiStripClusterInfo::reclusterize ( const edm::ParameterSet conf) const

Definition at line 140 of file SiStripClusterInfo.cc.

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

140  {
141 
142  std::vector<SiStripCluster> clusters;
143 
144  std::vector<uint8_t> charges = stripCharges();
145  std::vector<float> gains = stripGains();
146  for(unsigned i=0; i < charges.size(); i++)
147  charges[i] = (charges[i] < 254)
148  ? static_cast<uint8_t>(charges[i] * gains[i])
149  : charges[i];
150 
151  std::auto_ptr<StripClusterizerAlgorithm>
153  algorithm->initialize(es);
154 
155  if( algorithm->stripByStripBegin( detId() )) {
156  for(unsigned i = 0; i<width(); i++)
157  algorithm->stripByStripAdd( firstStrip()+i, charges[i], clusters );
158  algorithm->stripByStripEnd( clusters );
159  }
160 
161  return clusters;
162 }
int i
Definition: DBlmapReader.cc:9
< trclass="colgroup">< tdclass="colgroup"colspan=5 > Ecal cluster collections</td ></tr >< tr >< td >< ahref="classreco_1_1BasicCluster.html"> reco::BasicCluster</a ></td >< td >< ahref="DataFormats_EgammaReco.html"> reco::BasicClusterCollection</a ></td >< td >< ahref="#"> hybridSuperClusters</a ></td >< tdclass="description"> Basic clusters reconstructed with hybrid algorithm(barrel only)</td >< td >S.Rahatlou</td ></tr >< tr >< td >< a href
uint16_t firstStrip() const
std::vector< float > stripGains() const
static std::auto_ptr< StripClusterizerAlgorithm > create(const edm::ParameterSet &)
uint16_t width() const
const edm::EventSetup & es
uint32_t detId() const
const std::vector< uint8_t > & stripCharges() const
float SiStripClusterInfo::signalOverNoise ( ) const
inline
const std::vector<uint8_t>& SiStripClusterInfo::stripCharges ( ) const
inline

Definition at line 31 of file SiStripClusterInfo.h.

References SiStripCluster::amplitudes(), and cluster().

Referenced by calculate_noise(), charge(), chargeLR(), SiStripMonitorTrack::fillModMEs(), maxCharge(), maxIndex(), ShallowClustersProducer::NearDigis::NearDigis(), reclusterize(), and variance().

31 {return cluster()->amplitudes();}
const SiStripCluster * cluster() const
const std::vector< uint8_t > & amplitudes() const
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().

69  {
70  SiStripApvGain::Range detGainRange = gainHandle->getRange(cluster()->geographicalId());
71 
72  std::vector<float> gains;
73  for(size_t i=0; i< width(); i++){
74  gains.push_back( gainHandle->getStripGain( firstStrip()+i, detGainRange) );
75  }
76  return gains;
77 }
int i
Definition: DBlmapReader.cc:9
edm::ESHandle< SiStripGain > gainHandle
uint16_t firstStrip() const
const SiStripCluster * cluster() const
uint16_t width() const
std::pair< ContainerIterator, ContainerIterator > Range
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().

58  {
59  SiStripNoises::Range detNoiseRange = noiseHandle->getRange(cluster()->geographicalId());
60 
61  std::vector<float> noises;
62  for(size_t i=0; i < width(); i++){
63  noises.push_back( noiseHandle->getNoise( firstStrip()+i, detNoiseRange) );
64  }
65  return noises;
66 }
int i
Definition: DBlmapReader.cc:9
uint16_t firstStrip() const
const SiStripCluster * cluster() const
uint16_t width() const
edm::ESHandle< SiStripNoises > noiseHandle
std::pair< ContainerIterator, ContainerIterator > Range
Definition: SiStripNoises.h:41
std::vector< float > SiStripClusterInfo::stripNoisesRescaledByGain ( ) const

Definition at line 48 of file SiStripClusterInfo.cc.

References stripGains(), and stripNoises().

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

48  {
49  std::vector<float> noises = stripNoises();
50  std::vector<float> gains = stripGains();
51  transform(noises.begin(), noises.end(), gains.begin(),
52  noises.begin(),
53  std::divides<double>());
54  return noises;
55 }
std::vector< float > stripGains() const
std::vector< float > stripNoises() const
std::vector< bool > SiStripClusterInfo::stripQualitiesBad ( ) const

Definition at line 80 of file SiStripClusterInfo.cc.

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

Referenced by IsAnythingBad().

80  {
81  std::vector<bool> isBad;
82  for(int i=0; i< width(); i++) {
83  isBad.push_back( qualityHandle->IsStripBad( cluster()->geographicalId(),
84  firstStrip()+i) );
85  }
86  return isBad;
87 }
int i
Definition: DBlmapReader.cc:9
uint16_t firstStrip() const
edm::ESHandle< SiStripQuality > qualityHandle
const SiStripCluster * cluster() const
uint16_t width() const
float SiStripClusterInfo::variance ( ) const

Definition at line 34 of file SiStripClusterInfo.cc.

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

Referenced by ShallowClustersProducer::produce().

34  {
35  float q(0), x1(0), x2(0);
36  for(std::vector<uint8_t>::const_iterator
37  begin(stripCharges().begin()), end(stripCharges().end()), it(begin);
38  it!=end; ++it) {
39  unsigned i = it-begin;
40  q += (*it);
41  x1 += (*it) * (i+0.5);
42  x2 += (*it) * (i*i+i+1./3);
43  }
44  return (x2 - x1*x1/q ) / q;
45 }
int i
Definition: DBlmapReader.cc:9
#define end
Definition: vmac.h:38
const std::vector< uint8_t > & stripCharges() const
#define begin
Definition: vmac.h:31
uint16_t SiStripClusterInfo::width ( ) const
inline

Member Data Documentation

const SiStripCluster* SiStripClusterInfo::cluster_ptr
private

Definition at line 59 of file SiStripClusterInfo.h.

Referenced by cluster().

const edm::EventSetup& SiStripClusterInfo::es
private

Definition at line 60 of file SiStripClusterInfo.h.

Referenced by reclusterize(), and SiStripClusterInfo().

edm::ESHandle<SiStripGain> SiStripClusterInfo::gainHandle
private

Definition at line 62 of file SiStripClusterInfo.h.

Referenced by SiStripClusterInfo(), and stripGains().

edm::ESHandle<SiStripNoises> SiStripClusterInfo::noiseHandle
private

Definition at line 61 of file SiStripClusterInfo.h.

Referenced by SiStripClusterInfo(), and stripNoises().

edm::ESHandle<SiStripQuality> SiStripClusterInfo::qualityHandle
private
std::string SiStripClusterInfo::qualityLabel
private

Definition at line 64 of file SiStripClusterInfo.h.

Referenced by SiStripClusterInfo().