FairRoot/PandaRoot
Classes | Public Member Functions | Protected Member Functions | Private Attributes | List of all members
PndEmcShapingNoiseAdder Class Reference

waveform modifier to add noise to waveform More...

#include <PndEmcShapingNoiseAdder.h>

Inheritance diagram for PndEmcShapingNoiseAdder:
PndEmcAbsWaveformModifier

Classes

class  MA
 

Public Member Functions

 PndEmcShapingNoiseAdder ()
 
 PndEmcShapingNoiseAdder (Double_t fShapingTime, Double_t sampleRate, Double_t noiseWidth, Double_t inputScale)
 
virtual void Modify (PndEmcWaveform *wf)
 
virtual Double_t GetScale ()
 

Protected Member Functions

std::vector< Double_t > & GetWaveformReference (PndEmcWaveform *wf)
 
 ClassDef (PndEmcAbsWaveformModifier, 1)
 

Private Attributes

Double_t fShapingTime
 
Double_t fNoiseWidth
 
Double_t fInputScale
 
Double_t fSingleNoiseWidth
 
class PndEmcShapingNoiseAdder::MA fMA_buffer
 

Detailed Description

waveform modifier to add noise to waveform

Author
Ph. Mahlberg mahlb.nosp@m.erg@.nosp@m.hiskp.nosp@m..uni.nosp@m.-bonn.nosp@m..de

Definition at line 15 of file PndEmcShapingNoiseAdder.h.

Constructor & Destructor Documentation

PndEmcShapingNoiseAdder::PndEmcShapingNoiseAdder ( )

Definition at line 8 of file PndEmcShapingNoiseAdder.cxx.

8  :
9  fShapingTime(0),
10  fNoiseWidth(0.),
11  fInputScale(0.0),
12  fSingleNoiseWidth(0.0),
13  fMA_buffer(0) {
14 }
class PndEmcShapingNoiseAdder::MA fMA_buffer
PndEmcShapingNoiseAdder::PndEmcShapingNoiseAdder ( Double_t  fShapingTime,
Double_t  sampleRate,
Double_t  noiseWidth,
Double_t  inputScale 
)

Definition at line 16 of file PndEmcShapingNoiseAdder.cxx.

References fInputScale, fMA_buffer, fNoiseWidth, fSingleNoiseWidth, PndEmcShapingNoiseAdder::MA::GetSize(), and CAMath::Sqrt().

16  :
17  fShapingTime(shapingTime),
18  fNoiseWidth(noiseWidth),
19  fInputScale(inputScale),
20  //MA buffer size as long as no of samples forming rising edge of wf
21 
22  fMA_buffer((Int_t) (shapingTime*sampleRate)) {
23  Int_t bufferSize = fMA_buffer.GetSize();
24 
25  if(!bufferSize) {
26  std::cout << "-E PndEmcShapedNoiseWaveformSimulator: pulse raises in less than one sample. Noise generation will fail" << std::endl;
27  }
28 
29  //noise of individual sample is averaged over bufferSize samples --> fNoiseWidth² = bufferSize * fSingleNoiseWidth²
30  fSingleNoiseWidth = fNoiseWidth * TMath::Sqrt(bufferSize); //still in GeV
31 
32  //Init buffer
33  while(bufferSize--) { //init buffer
34  fMA_buffer(gRandom->Gaus(0, fSingleNoiseWidth*fInputScale));
35  }
36  }
class PndEmcShapingNoiseAdder::MA fMA_buffer
static T Sqrt(const T &x)
Definition: PndCAMath.h:37

Member Function Documentation

PndEmcAbsWaveformModifier::ClassDef ( PndEmcAbsWaveformModifier  ,
 
)
protectedinherited
virtual Double_t PndEmcAbsWaveformModifier::GetScale ( )
inlinevirtualinherited

Reimplemented in PndEmcWfRescaler, and PndEmcWaveformDigitizer.

Definition at line 19 of file PndEmcAbsWaveformModifier.h.

19 { return 1.; };
std::vector<Double_t>& PndEmcAbsWaveformModifier::GetWaveformReference ( PndEmcWaveform wf)
inlineprotectedinherited

Definition at line 24 of file PndEmcAbsWaveformModifier.h.

References PndEmcWaveform::fSignal.

Referenced by PndEmcWaveformDigitizer::Modify(), Modify(), and PndEmcWfRescaler::Modify().

24  {
25  if(PndEmcMultiWaveform* multiWf = dynamic_cast<PndEmcMultiWaveform*>(wf)) {
26  Int_t activeWf = multiWf->GetActiveWaveform();
27  return multiWf->fSignals.at(activeWf);
28  }
29  return wf->fSignal;
30  }
std::vector< Double_t > fSignal
Class to hold multiple waveforms from one Emc Hit / ADC readout.
void PndEmcShapingNoiseAdder::Modify ( PndEmcWaveform wf)
virtual

Implements PndEmcAbsWaveformModifier.

Definition at line 39 of file PndEmcShapingNoiseAdder.cxx.

References fInputScale, fMA_buffer, fSingleNoiseWidth, and PndEmcAbsWaveformModifier::GetWaveformReference().

39  {
40 
41  for(std::vector<Double_t>::iterator it=GetWaveformReference(wf).begin(); it!=GetWaveformReference(wf).end(); ++it) {
42 
43  (*it) += fMA_buffer(gRandom->Gaus(0, fSingleNoiseWidth*fInputScale)); //smear with shaping noise
44  }
45 }
class PndEmcShapingNoiseAdder::MA fMA_buffer
std::vector< Double_t > & GetWaveformReference(PndEmcWaveform *wf)

Member Data Documentation

Double_t PndEmcShapingNoiseAdder::fInputScale
private

Definition at line 28 of file PndEmcShapingNoiseAdder.h.

Referenced by Modify(), and PndEmcShapingNoiseAdder().

class PndEmcShapingNoiseAdder::MA PndEmcShapingNoiseAdder::fMA_buffer
private

Referenced by Modify(), and PndEmcShapingNoiseAdder().

Double_t PndEmcShapingNoiseAdder::fNoiseWidth
private

Definition at line 27 of file PndEmcShapingNoiseAdder.h.

Referenced by PndEmcShapingNoiseAdder().

Double_t PndEmcShapingNoiseAdder::fShapingTime
private

Definition at line 26 of file PndEmcShapingNoiseAdder.h.

Double_t PndEmcShapingNoiseAdder::fSingleNoiseWidth
private

Definition at line 30 of file PndEmcShapingNoiseAdder.h.

Referenced by Modify(), and PndEmcShapingNoiseAdder().


The documentation for this class was generated from the following files: