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  public:
18  PndEmcShapingNoiseAdder(Double_t fShapingTime, Double_t sampleRate, Double_t noiseWidth, Double_t inputScale);
19 
20  virtual void Modify(PndEmcWaveform *wf);
21 
22  protected:
23  private:
24  Double_t fShapingTime;
25  Double_t fNoiseWidth;
26  Double_t fInputScale;
27 
28  Double_t fSingleNoiseWidth;
29 
30  class MA { // moving Average Buffer
31  private:
32  std::vector<Double_t> buffer;
33  UInt_t bpointer;
34  Double_t sum;
35 
36  public:
37  MA(UInt_t size) : buffer(size, 0.0), bpointer(0), sum(0){};
38 
39  Double_t operator()(Double_t xN)
40  {
41  sum += xN - buffer[bpointer];
42  buffer[bpointer] = xN;
43  bpointer++;
44  bpointer %= buffer.size();
45 
46  return sum / buffer.size();
47  }
48  UInt_t GetSize() { return buffer.size(); };
49  } fMA_buffer;
50 
52 };
53 
54 #endif
virtual void Modify(PndEmcWaveform *wf)
interface for waveform modifiers
ClassDef(PndEmcAbsWaveformModifier, 1)
Abstract base class for waveform simulator.
represents a simulated waveform in an emc crystal
waveform modifier to add noise to waveform