#include <CommonTools/SiStripZeroSuppression/interface/SiStripTT6CommonModeNoiseSubtraction.h>
Public Member Functions | |
void | init (const edm::EventSetup &es) |
SiStripTT6CommonModeNoiseSubtraction (double in) | |
void | subtract (const uint32_t &, std::vector< int16_t > &) |
~SiStripTT6CommonModeNoiseSubtraction () |
Definition at line 7 of file SiStripTT6CommonModeNoiseSubtraction.h.
SiStripTT6CommonModeNoiseSubtraction::SiStripTT6CommonModeNoiseSubtraction | ( | double | in | ) | [inline] |
Definition at line 10 of file SiStripTT6CommonModeNoiseSubtraction.h.
00010 :SiStripCommonModeNoiseSubtractor(in){};
SiStripTT6CommonModeNoiseSubtraction::~SiStripTT6CommonModeNoiseSubtraction | ( | ) | [inline] |
void SiStripTT6CommonModeNoiseSubtraction::init | ( | const edm::EventSetup & | es | ) | [virtual] |
Implements SiStripCommonModeNoiseSubtractor.
Definition at line 6 of file SiStripTT6CommonModeNoiseSubtraction.cc.
References edm::EventSetup::get(), SiStripCommonModeNoiseSubtractor::noiseHandle, and SiStripCommonModeNoiseSubtractor::qualityHandle.
00006 { 00007 es.get<SiStripNoisesRcd>().get(noiseHandle); 00008 es.get<SiStripQualityRcd>().get(qualityHandle); 00009 }
void SiStripTT6CommonModeNoiseSubtraction::subtract | ( | const uint32_t & | detId, | |
std::vector< int16_t > & | digis | |||
) | [virtual] |
Implements SiStripCommonModeNoiseSubtractor.
Definition at line 11 of file SiStripTT6CommonModeNoiseSubtraction.cc.
References funct::abs(), SiStripCommonModeNoiseSubtractor::cut_to_avoid_signal_, lat::endl(), edm::isDebugEnabled(), LogDebug, ls, SiStripCommonModeNoiseSubtractor::noiseHandle, SiStripCommonModeNoiseSubtractor::qualityHandle, and ss.
00011 { 00012 00013 short FixedBias=128; 00014 SiStripNoises::Range detNoiseRange = noiseHandle->getRange(detId); 00015 SiStripQuality::Range detQualityRange = qualityHandle->getRange(detId); 00016 #ifdef DEBUG_SiStripZeroSuppression_ 00017 std::stringstream ss; 00018 if (edm::isDebugEnabled()) 00019 ss << "[SiStripTT6CommonModeNoiseSubtraction::subtract] digis.size()= " << digis.size() << std::endl; 00020 #endif 00021 00022 std::vector<int16_t>::iterator fs; 00023 std::vector<int16_t>::iterator ls; 00024 double sumVal = 0.0; 00025 double sumWt = 0.0; 00026 00027 for (uint16_t istrip=0;istrip<digis.size();++istrip){ 00028 if ( !qualityHandle->IsStripBad(detQualityRange,istrip) ) { 00029 float stripNoise=noiseHandle->getNoise(istrip,detNoiseRange); 00030 if( abs(digis[istrip]-FixedBias) < cut_to_avoid_signal_*stripNoise ) { 00031 double nWeight = 1/(stripNoise*stripNoise); 00032 sumVal += (digis[istrip]-FixedBias)*nWeight; 00033 sumWt += nWeight; 00034 } 00035 } 00036 00037 if (istrip%128 == 127){ 00038 double CM = (sumWt) ? sumVal/sumWt :0.0; 00039 00040 fs = digis.begin()+istrip-127; 00041 ls = digis.begin()+istrip+1; 00042 00043 #ifdef DEBUG_SiStripZeroSuppression_ 00044 if (edm::isDebugEnabled()) 00045 ss << " APV= " << (uint16_t) istrip/128 << " CM= " << CM << std::endl; 00046 #endif 00047 while (fs < ls) { 00048 *fs = (int16_t) (*fs-FixedBias-CM); 00049 #ifdef DEBUG_SiStripZeroSuppression_ 00050 if (edm::isDebugEnabled()) 00051 ss << " adc CM subtr " << *fs << std::endl; 00052 #endif 00053 fs++; 00054 } 00055 sumVal = 0.0; 00056 sumWt = 0.0; 00057 } 00058 } 00059 #ifdef DEBUG_SiStripZeroSuppression_ 00060 LogDebug("SiStripZeroSuppression") << ss.str().c_str(); 00061 #endif 00062 }