#include <SimTracker/SiStripDigitizer/interface/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) |
int | truncateRaw (float in_adc) |
Private Attributes | |
float | electronperADC |
Definition at line 8 of file SiTrivialDigitalConverter.h.
SiTrivialDigitalConverter::SiTrivialDigitalConverter | ( | float | in | ) |
Definition at line 5 of file SiTrivialDigitalConverter.cc.
References electronperADC.
00005 { 00006 electronperADC = in; 00007 }
int SiTrivialDigitalConverter::convert | ( | float | in | ) | [inline, private] |
Definition at line 18 of file SiTrivialDigitalConverter.h.
References electronperADC, and truncate().
00018 {return truncate(in/electronperADC);}
SiDigitalConverter::DigitalVecType SiTrivialDigitalConverter::convert | ( | const std::vector< double > & | analogSignal, | |
edm::ESHandle< SiStripGain > & | gainHandle, | |||
unsigned int | detid | |||
) | [virtual] |
Implements SiDigitalConverter.
Definition at line 10 of file SiTrivialDigitalConverter.cc.
References ecalMGPA::adc(), i, and edm::ESHandle< T >::isValid().
Referenced by SiStripDigitizerAlgorithm::run().
00010 { 00011 00012 SiDigitalConverter::DigitalVecType _temp; 00013 _temp.reserve(analogSignal.size()); 00014 00015 SiStripApvGain::Range detGainRange; 00016 if(gainHandle.isValid()) detGainRange = gainHandle->getRange(detid); 00017 00018 00019 for ( unsigned int i=0; i<analogSignal.size(); i++) { 00020 if (analogSignal[i]<=0) continue; 00021 float gainFactor = (gainHandle.isValid()) ? gainHandle->getStripGain(i, detGainRange) : 1; 00022 00023 // convert analog amplitude to digital 00024 int adc = convert( gainFactor*(analogSignal[i]) ); 00025 00026 if ( adc > 0) _temp.push_back(SiStripDigi(i, adc)); 00027 } 00028 return _temp; 00029 }
int SiTrivialDigitalConverter::convertRaw | ( | float | in | ) | [inline, private] |
Definition at line 19 of file SiTrivialDigitalConverter.h.
References electronperADC, and truncateRaw().
00019 {return truncateRaw(in/electronperADC);}
SiDigitalConverter::DigitalRawVecType SiTrivialDigitalConverter::convertRaw | ( | const std::vector< double > & | analogSignal, | |
edm::ESHandle< SiStripGain > & | gainHandle, | |||
unsigned int | detid | |||
) | [virtual] |
Implements SiDigitalConverter.
Definition at line 32 of file SiTrivialDigitalConverter.cc.
References ecalMGPA::adc(), i, and edm::ESHandle< T >::isValid().
Referenced by SiStripDigitizerAlgorithm::run().
00032 { 00033 00034 SiDigitalConverter::DigitalRawVecType _temp; 00035 _temp.reserve(analogSignal.size()); 00036 00037 SiStripApvGain::Range detGainRange; 00038 if(gainHandle.isValid()) detGainRange = gainHandle->getRange(detid); 00039 00040 00041 for ( unsigned int i=0; i<analogSignal.size(); i++) { 00042 // Raw Digis: we need all the channels 00043 // saturation below the baseline 00044 // (baseline=0 if we do not add pedestals) 00045 // --> the following line not needed: 00046 // if (analogSignal[i]<=0) continue; 00047 // and replace with this: 00048 if (analogSignal[i]<=0) { 00049 _temp.push_back(SiStripRawDigi(0)); 00050 continue; 00051 } 00052 00053 float gainFactor = (gainHandle.isValid()) ? gainHandle->getStripGain(i, detGainRange) : 1; 00054 00055 // convert analog amplitude to digital 00056 int adc = convertRaw( gainFactor*(analogSignal[i])); 00057 00058 _temp.push_back(SiStripRawDigi(adc)); 00059 } 00060 return _temp; 00061 }
int SiTrivialDigitalConverter::truncate | ( | float | in_adc | ) | [private] |
Definition at line 64 of file SiTrivialDigitalConverter.cc.
References ecalMGPA::adc(), and int.
Referenced by convert().
00064 { 00065 00066 //Rounding teh ADC number instaed of truncating it 00067 int adc = int(in_adc+0.5); 00068 /* 00069 254 ADC: 254<=raw charge < 511 00070 255 ADC: 512<= raw charge < 1023 00071 */ 00072 if (adc > 511 ) return 255; 00073 if (adc > 253) return 254; 00074 //Protection 00075 if (adc < 0) return 0; 00076 return adc; 00077 }
int SiTrivialDigitalConverter::truncateRaw | ( | float | in_adc | ) | [private] |
Definition at line 80 of file SiTrivialDigitalConverter.cc.
References ecalMGPA::adc(), and int.
Referenced by convertRaw().
00080 { 00081 00082 //Rounding the ADC number 00083 int adc = int(in_adc+0.5); 00084 00085 if (adc > 1023 ) return 1023; 00086 //Protection 00087 if (adc < 0) return 0; 00088 return adc; 00089 }
float SiTrivialDigitalConverter::electronperADC [private] |
Definition at line 23 of file SiTrivialDigitalConverter.h.
Referenced by convert(), convertRaw(), and SiTrivialDigitalConverter().