![]() |
![]() |
#include <SimTracker/SiStripDigitizer/interface/SiGaussianTailNoiseAdder.h>
Public Member Functions | |
void | addNoise (std::vector< double > &, unsigned int &, unsigned int &, int, float) |
void | createRaw (std::vector< double > &, unsigned int &, unsigned int &, int, float, float) |
SiGaussianTailNoiseAdder (float, CLHEP::HepRandomEngine &) | |
~SiGaussianTailNoiseAdder () | |
Private Attributes | |
CLHEP::RandGaussQ * | gaussDistribution |
GaussianTailNoiseGenerator * | genNoise |
float | noiseRMS |
int | numStrips |
float | pedValue |
CLHEP::HepRandomEngine & | rndEngine |
float | threshold |
Definition at line 16 of file SiGaussianTailNoiseAdder.h.
SiGaussianTailNoiseAdder::SiGaussianTailNoiseAdder | ( | float | th, | |
CLHEP::HepRandomEngine & | eng | |||
) |
Definition at line 8 of file SiGaussianTailNoiseAdder.cc.
References gaussDistribution, genNoise, and rndEngine.
00008 : 00009 threshold(th), 00010 rndEngine(eng), 00011 gaussDistribution(0) 00012 { 00013 genNoise = new GaussianTailNoiseGenerator(rndEngine); 00014 gaussDistribution = new CLHEP::RandGaussQ(rndEngine); 00015 }
SiGaussianTailNoiseAdder::~SiGaussianTailNoiseAdder | ( | ) |
Definition at line 17 of file SiGaussianTailNoiseAdder.cc.
References gaussDistribution, and genNoise.
00017 { 00018 delete genNoise; 00019 delete gaussDistribution; 00020 }
void SiGaussianTailNoiseAdder::addNoise | ( | std::vector< double > & | in, | |
unsigned int & | minChannel, | |||
unsigned int & | maxChannel, | |||
int | ns, | |||
float | nrms | |||
) | [virtual] |
Implements SiNoiseAdder.
Definition at line 22 of file SiGaussianTailNoiseAdder.cc.
References gaussDistribution, GaussianTailNoiseGenerator::generate(), genNoise, noiseRMS, numStrips, p, and threshold.
Referenced by SiStripDigitizerAlgorithm::run().
00024 { 00025 00026 numStrips = ns; 00027 noiseRMS = nrms; 00028 00029 std::vector<std::pair<int,float> > generatedNoise; 00030 00031 genNoise->generate(numStrips,threshold,noiseRMS,generatedNoise); 00032 00033 // noise on strips with signal: 00034 // ---------------------------- 00035 00036 for (unsigned int iChannel=minChannel; iChannel<=maxChannel; iChannel++) { 00037 if(in[iChannel] != 0) { 00038 float noise = gaussDistribution->fire(0.,noiseRMS); 00039 in[iChannel] += noise; 00040 } 00041 } 00042 00043 // 00044 // Noise on the other strips 00045 00046 typedef std::vector<std::pair<int,float> >::const_iterator VI; 00047 00048 for(VI p = generatedNoise.begin(); p != generatedNoise.end(); p++){ 00049 if(in[(*p).first] == 0) { 00050 in[(*p).first] += (*p).second; 00051 } 00052 } 00053 00054 }
void SiGaussianTailNoiseAdder::createRaw | ( | std::vector< double > & | in, | |
unsigned int & | minChannel, | |||
unsigned int & | maxChannel, | |||
int | ns, | |||
float | nrms, | |||
float | ped | |||
) | [virtual] |
Implements SiNoiseAdder.
Definition at line 56 of file SiGaussianTailNoiseAdder.cc.
References gaussDistribution, GaussianTailNoiseGenerator::generateRaw(), genNoise, noiseRMS, numStrips, p, and pedValue.
Referenced by SiStripDigitizerAlgorithm::run().
00058 { 00059 00060 numStrips = ns; 00061 noiseRMS = nrms; 00062 pedValue = ped; 00063 00064 std::vector<std::pair<int,float> > generatedNoise; 00065 00066 genNoise->generateRaw(numStrips,noiseRMS,generatedNoise); 00067 00068 // noise on strips with signal: 00069 // ---------------------------- 00070 00071 for (unsigned int iChannel=minChannel; iChannel<=maxChannel; iChannel++) { 00072 if(in[iChannel] != 0) { 00073 float noise = gaussDistribution->fire(0.,noiseRMS); 00074 in[iChannel] += noise; 00075 } 00076 } 00077 00078 // 00079 // Noise on the other strips 00080 00081 typedef std::vector<std::pair<int,float> >::const_iterator VI; 00082 00083 for(VI p = generatedNoise.begin(); p != generatedNoise.end(); p++){ 00084 if(in[(*p).first] == 0) { 00085 in[(*p).first] += (*p).second; 00086 } 00087 } 00088 00089 // Add pedestals 00090 for (unsigned int iChannel=0; iChannel!=in.size(); iChannel++) { 00091 // std::cout << "Adding pedestal value " << pedValue << " from " << in[iChannel] << " to "; 00092 in[iChannel] += pedValue; 00093 // std::cout << in[iChannel] << std::endl; 00094 } 00095 00096 }
CLHEP::RandGaussQ* SiGaussianTailNoiseAdder::gaussDistribution [private] |
Definition at line 28 of file SiGaussianTailNoiseAdder.h.
Referenced by addNoise(), createRaw(), SiGaussianTailNoiseAdder(), and ~SiGaussianTailNoiseAdder().
Definition at line 29 of file SiGaussianTailNoiseAdder.h.
Referenced by addNoise(), createRaw(), SiGaussianTailNoiseAdder(), and ~SiGaussianTailNoiseAdder().
float SiGaussianTailNoiseAdder::noiseRMS [private] |
Definition at line 24 of file SiGaussianTailNoiseAdder.h.
Referenced by addNoise(), and createRaw().
int SiGaussianTailNoiseAdder::numStrips [private] |
Definition at line 23 of file SiGaussianTailNoiseAdder.h.
Referenced by addNoise(), and createRaw().
float SiGaussianTailNoiseAdder::pedValue [private] |
CLHEP::HepRandomEngine& SiGaussianTailNoiseAdder::rndEngine [private] |
float SiGaussianTailNoiseAdder::threshold [private] |