FairRoot/PandaRoot
PndEmcShapingNoiseAdder.h
Go to the documentation of this file.
1 //#pragma once
2 #ifndef PNDEMCSHAPINGNOISEADDER_H_
3 #define PNDEMCSHAPINGNOISEADDER_H_
4 
6 
7 class PndEmcWaveform;
9 
16 {
17  public:
19  PndEmcShapingNoiseAdder(Double_t fShapingTime, Double_t sampleRate, Double_t noiseWidth, Double_t inputScale);
20 
21  virtual void Modify(PndEmcWaveform* wf);
22 
23  protected:
24 
25  private:
29 
31 
32 
33  class MA { // moving Average Buffer
34  private:
35  std::vector<Double_t> buffer;
36  UInt_t bpointer;
38 
39  public:
40  MA(UInt_t size): buffer(size, 0.0), bpointer(0), sum(0) {};
41 
43  sum += xN - buffer[bpointer];
44  buffer[bpointer] = xN;
45  bpointer++;
46  bpointer %= buffer.size();
47 
48  return sum/buffer.size();
49  }
50  UInt_t GetSize() { return buffer.size(); };
51  } fMA_buffer;
52 
54 };
55 
56 #endif
virtual void Modify(PndEmcWaveform *wf)
interface for waveform modifiers
class PndEmcShapingNoiseAdder::MA fMA_buffer
ClassDef(PndEmcAbsWaveformModifier, 1)
std::vector< Double_t > buffer
Abstract base class for waveform simulator.
Double_t
represents a simulated waveform in an emc crystal
waveform modifier to add noise to waveform