#include <SiTrivialDigitalConverter.h>
Public Member Functions | |
DigitalVecType | convert (const std::vector< double > &, edm::ESHandle< SiStripGain > &, unsigned int detid) |
DigitalRawVecType | convertRaw (const std::vector< double > &, edm::ESHandle< SiStripGain > &, unsigned int detid) |
SiTrivialDigitalConverter (float in) | |
Private Member Functions | |
int | convert (float in) |
int | convertRaw (float in) |
int | truncate (float in_adc) const |
int | truncateRaw (float in_adc) const |
Private Attributes | |
SiDigitalConverter::DigitalVecType | _temp |
SiDigitalConverter::DigitalRawVecType | _tempRaw |
const float | electronperADC |
Concrete implementation of SiDigitalConverter.
Definition at line 8 of file SiTrivialDigitalConverter.h.
SiTrivialDigitalConverter::SiTrivialDigitalConverter | ( | float | in | ) |
Definition at line 5 of file SiTrivialDigitalConverter.cc.
References _temp, and _tempRaw.
: electronperADC(in) { _temp.reserve(800); _tempRaw.reserve(800); }
SiDigitalConverter::DigitalVecType SiTrivialDigitalConverter::convert | ( | const std::vector< double > & | analogSignal, |
edm::ESHandle< SiStripGain > & | gainHandle, | ||
unsigned int | detid | ||
) | [virtual] |
Implements SiDigitalConverter.
Definition at line 12 of file SiTrivialDigitalConverter.cc.
References _temp, and linker::i.
Referenced by DigiSimLinkAlgorithm::run().
{ _temp.clear(); if(gainHandle.isValid()) { SiStripApvGain::Range detGainRange = gainHandle->getRange(detid); for ( size_t i=0; i<analogSignal.size(); i++) { if (analogSignal[i]<=0) continue; // convert analog amplitude to digital int adc = convert( (gainHandle->getStripGain(i, detGainRange))*(analogSignal[i]) ); if ( adc > 0) _temp.push_back(SiStripDigi(i, adc)); } } else { for ( size_t i=0; i<analogSignal.size(); i++) { if (analogSignal[i]<=0) continue; // convert analog amplitude to digital int adc = convert( analogSignal[i] ); if ( adc > 0) _temp.push_back(SiStripDigi(i, adc)); } } return _temp; }
int SiTrivialDigitalConverter::convert | ( | float | in | ) | [inline, private] |
Definition at line 18 of file SiTrivialDigitalConverter.h.
References electronperADC, and truncate().
{return truncate(in/electronperADC);}
SiDigitalConverter::DigitalRawVecType SiTrivialDigitalConverter::convertRaw | ( | const std::vector< double > & | analogSignal, |
edm::ESHandle< SiStripGain > & | gainHandle, | ||
unsigned int | detid | ||
) | [virtual] |
Implements SiDigitalConverter.
Definition at line 36 of file SiTrivialDigitalConverter.cc.
References _tempRaw, and linker::i.
Referenced by DigiSimLinkAlgorithm::run().
{ _tempRaw.clear(); if(gainHandle.isValid()) { SiStripApvGain::Range detGainRange = gainHandle->getRange(detid); for ( size_t i=0; i<analogSignal.size(); i++) { if (analogSignal[i]<=0) { _tempRaw.push_back(SiStripRawDigi(0)); continue; } // convert analog amplitude to digital int adc = convertRaw( (gainHandle->getStripGain(i, detGainRange))*(analogSignal[i])); _tempRaw.push_back(SiStripRawDigi(adc)); } } else { for ( size_t i=0; i<analogSignal.size(); i++) { if (analogSignal[i]<=0) { _tempRaw.push_back(SiStripRawDigi(0)); continue; } // convert analog amplitude to digital int adc = convertRaw( analogSignal[i] ); _tempRaw.push_back(SiStripRawDigi(adc)); } } return _tempRaw; }
int SiTrivialDigitalConverter::convertRaw | ( | float | in | ) | [inline, private] |
Definition at line 19 of file SiTrivialDigitalConverter.h.
References electronperADC, and truncateRaw().
{return truncateRaw(in/electronperADC);}
int SiTrivialDigitalConverter::truncate | ( | float | in_adc | ) | const [private] |
Definition at line 59 of file SiTrivialDigitalConverter.cc.
Referenced by convert().
{ //Rounding the ADC number instead of truncating it int adc = int(in_adc+0.5); /* 254 ADC: 254 <= raw charge < 1023 255 ADC: raw charge >= 1023 */ if (adc > 1022 ) return 255; if (adc > 253) return 254; //Protection if (adc < 0) return 0; return adc; }
int SiTrivialDigitalConverter::truncateRaw | ( | float | in_adc | ) | const [private] |
Definition at line 73 of file SiTrivialDigitalConverter.cc.
Referenced by convertRaw().
{ //Rounding the ADC number int adc = int(in_adc+0.5); if (adc > 1023 ) return 1023; //Protection if (adc < 0) return 0; return adc; }
Definition at line 24 of file SiTrivialDigitalConverter.h.
Referenced by convert(), and SiTrivialDigitalConverter().
Definition at line 25 of file SiTrivialDigitalConverter.h.
Referenced by convertRaw(), and SiTrivialDigitalConverter().
const float SiTrivialDigitalConverter::electronperADC [private] |
Definition at line 23 of file SiTrivialDigitalConverter.h.
Referenced by convert(), and convertRaw().