CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Friends
TT6CMNSubtractor Class Reference

#include <TT6CMNSubtractor.h>

Inheritance diagram for TT6CMNSubtractor:
SiStripCommonModeNoiseSubtractor

Public Member Functions

void init (const edm::EventSetup &es)
 
void subtract (const uint32_t &, const uint16_t &, std::vector< int16_t > &)
 
void subtract (const uint32_t &, const uint16_t &, std::vector< float > &)
 
- Public Member Functions inherited from SiStripCommonModeNoiseSubtractor
const std::vector< std::pair< short, float > > & getAPVsCM ()
 
virtual ~SiStripCommonModeNoiseSubtractor ()
 

Private Member Functions

template<typename T >
void subtract_ (const uint32_t &, const uint16_t &, std::vector< T > &)
 
 TT6CMNSubtractor (double in)
 

Private Attributes

double cut_to_avoid_signal_
 
uint32_t noise_cache_id
 
edm::ESHandle< SiStripNoisesnoiseHandle
 
uint32_t quality_cache_id
 
edm::ESHandle< SiStripQualityqualityHandle
 

Friends

class SiStripRawProcessingFactory
 

Additional Inherited Members

- Protected Member Functions inherited from SiStripCommonModeNoiseSubtractor
template<typename T >
float median (std::vector< T > &)
 
 SiStripCommonModeNoiseSubtractor ()
 
- Protected Attributes inherited from SiStripCommonModeNoiseSubtractor
std::vector< std::pair< short, float > > _vmedians
 

Detailed Description

Definition at line 9 of file TT6CMNSubtractor.h.

Constructor & Destructor Documentation

TT6CMNSubtractor::TT6CMNSubtractor ( double  in)
inlineprivate

Definition at line 23 of file TT6CMNSubtractor.h.

Member Function Documentation

void TT6CMNSubtractor::init ( const edm::EventSetup es)
virtual

Reimplemented from SiStripCommonModeNoiseSubtractor.

Definition at line 9 of file TT6CMNSubtractor.cc.

References edm::EventSetup::get(), noise_cache_id, noiseHandle, quality_cache_id, and qualityHandle.

9  {
10  uint32_t n_cache_id = es.get<SiStripNoisesRcd>().cacheIdentifier();
11  uint32_t q_cache_id = es.get<SiStripQualityRcd>().cacheIdentifier();
12 
13  if(n_cache_id != noise_cache_id) {
14  es.get<SiStripNoisesRcd>().get( noiseHandle );
15  noise_cache_id = n_cache_id;
16  }
17  if(q_cache_id != quality_cache_id) {
18  es.get<SiStripQualityRcd>().get( qualityHandle );
19  quality_cache_id = q_cache_id;
20  }
21 }
edm::ESHandle< SiStripNoises > noiseHandle
edm::ESHandle< SiStripQuality > qualityHandle
const T & get() const
Definition: EventSetup.h:56
uint32_t quality_cache_id
void TT6CMNSubtractor::subtract ( const uint32_t &  detId,
const uint16_t &  firstAPV,
std::vector< int16_t > &  digis 
)
virtual

Implements SiStripCommonModeNoiseSubtractor.

Definition at line 23 of file TT6CMNSubtractor.cc.

References subtract_().

23 { subtract_(detId, firstAPV, digis);}
void subtract_(const uint32_t &, const uint16_t &, std::vector< T > &)
void TT6CMNSubtractor::subtract ( const uint32_t &  detId,
const uint16_t &  firstAPV,
std::vector< float > &  digis 
)
virtual

Implements SiStripCommonModeNoiseSubtractor.

Definition at line 24 of file TT6CMNSubtractor.cc.

References subtract_().

24 { subtract_(detId,firstAPV, digis);}
void subtract_(const uint32_t &, const uint16_t &, std::vector< T > &)
template<typename T >
void TT6CMNSubtractor::subtract_ ( const uint32_t &  detId,
const uint16_t &  firstAPV,
std::vector< T > &  digis 
)
inlineprivate

Definition at line 29 of file TT6CMNSubtractor.cc.

References funct::abs(), cut_to_avoid_signal_, SiStripNoises::getNoiseFast(), SiStripNoises::getRange(), SiStripBadStrip::getRange(), SiStripQuality::IsStripBad(), eostools::ls(), noiseHandle, and qualityHandle.

Referenced by subtract().

29  {
30 
31  short FixedBias=128;
32  SiStripNoises::Range detNoiseRange = noiseHandle->getRange(detId);
33  SiStripQuality::Range detQualityRange = qualityHandle->getRange(detId);
34 
35  typename std::vector<T>::iterator fs,ls;
36  double sumVal = 0.0;
37  double sumWt = 0.0;
38 
39  for (uint16_t istrip=0; istrip<digis.size(); ++istrip){
40 
41  if ( !qualityHandle->IsStripBad(detQualityRange,istrip+firstAPV*128) ) {
42  float stripNoise=noiseHandle->getNoiseFast(istrip+firstAPV*128,detNoiseRange);
43 
44  if( std::abs(digis[istrip]-FixedBias) < cut_to_avoid_signal_*stripNoise ) {
45  double nWeight = 1/(stripNoise*stripNoise);
46  sumVal += (digis[istrip]-FixedBias)*nWeight;
47  sumWt += nWeight;
48  }
49  }
50 
51  if (istrip%128 == 127){
52  double CM = (sumWt) ? sumVal/sumWt :0.0;
53 
54  fs = digis.begin()+istrip-127;
55  ls = digis.begin()+istrip+1;
56 
57  while (fs < ls) {
58  *fs = static_cast<T>(*fs-FixedBias-CM);
59  fs++;
60  }
61 
62  sumVal = 0.0;
63  sumWt = 0.0;
64  }
65  }
66 }
edm::ESHandle< SiStripNoises > noiseHandle
bool IsStripBad(const uint32_t &detid, const short &strip) const
static float getNoiseFast(const uint16_t &strip, const Range &range)
Definition: SiStripNoises.h:67
edm::ESHandle< SiStripQuality > qualityHandle
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
def ls(path, rec=False)
Definition: eostools.py:348
const Range getRange(const uint32_t detID) const
const Range getRange(const uint32_t detID) const
std::pair< ContainerIterator, ContainerIterator > Range
std::pair< ContainerIterator, ContainerIterator > Range
Definition: SiStripNoises.h:48
long double T

Friends And Related Function Documentation

friend class SiStripRawProcessingFactory
friend

Definition at line 11 of file TT6CMNSubtractor.h.

Member Data Documentation

double TT6CMNSubtractor::cut_to_avoid_signal_
private

Definition at line 26 of file TT6CMNSubtractor.h.

Referenced by subtract_().

uint32_t TT6CMNSubtractor::noise_cache_id
private

Definition at line 30 of file TT6CMNSubtractor.h.

Referenced by init().

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

Definition at line 28 of file TT6CMNSubtractor.h.

Referenced by init(), and subtract_().

uint32_t TT6CMNSubtractor::quality_cache_id
private

Definition at line 30 of file TT6CMNSubtractor.h.

Referenced by init().

edm::ESHandle<SiStripQuality> TT6CMNSubtractor::qualityHandle
private

Definition at line 29 of file TT6CMNSubtractor.h.

Referenced by init(), and subtract_().