PandaRoot
BSEmcShapingNoiseAdder.h
Go to the documentation of this file.
1 //#pragma once
2 #ifndef BSEMCSHAPINGNOISEADDER_HH
3 #define BSEMCSHAPINGNOISEADDER_HH
4 
5 #include <vector>
6 
7 #include "Rtypes.h"
8 #include "RtypesCore.h"
9 
11 
12 class BSEmcWaveform;
14 class TBuffer;
15 class TClass;
16 class TMemberInspector;
17 
24  public:
26  BSEmcShapingNoiseAdder(Double_t t_shapingTime, Double_t t_sampleRate, Double_t t_noiseWidth, Double_t t_inputScale);
27 
28  virtual void Modify(BSEmcWaveform *t_wf) /*override*/;
29 
30  protected:
31  private:
32  Double_t fShapingTime{0};
33  Double_t fNoiseWidth{0};
34  Double_t fInputScale{0};
35 
36  Double_t fSingleNoiseWidth{0};
37 
38  class MA { // moving Average Buffer
39  private:
40  std::vector<Double_t> fBuffer{};
41  UInt_t fBPointer{0};
42  Double_t fSum{0};
43 
44  public:
45  MA(UInt_t t_size) : fBuffer(t_size, 0.0), fBPointer(0), fSum(0){};
46 
47  Double_t operator()(Double_t t_xN)
48  {
49  fSum += t_xN - fBuffer[fBPointer];
50  fBuffer[fBPointer] = t_xN;
51  fBPointer++;
52  fBPointer %= fBuffer.size();
53 
54  return fSum / fBuffer.size();
55  }
56  UInt_t GetSize() { return fBuffer.size(); };
57  } fMA_buffer;
58 
60 };
61 
62 #endif /*BSEMCSHAPINGNOISEADDER_HH*/
represents a simulated waveform in an emc crystal
Definition: BSEmcWaveform.h:63
interface for waveform modifiers
Abstract base class for waveform simulator.
ClassDef(BSEmcAbsWaveformModifier, 1)
virtual void Modify(BSEmcWaveform *t_wf)
waveform modifier to add noise to waveform