PandaRoot
PndEmcBWEndcapNoiseAdder.h
Go to the documentation of this file.
1 //#pragma once
2 #ifndef PNDEMCBWENDCAPNOISEADDER_H_
3 #define PNDEMCBWENDCAPNOISEADDER_H_
4 
6 #include "TString.h"
7 #include "TRandom.h"
8 
9 class PndEmcWaveform;
10 class TVirtualFFT;
11 
18 {
19  public:
22  PndEmcBWEndcapNoiseAdder(Int_t mode, Double_t sampling_rate, const Double_t* ps_freq,
23  const Double_t* ps_power, Int_t ps_size, Double_t adc_noise, Double_t fe_noise,
24  Double_t sigma_ps, Double_t sigma_ges, Int_t seed, Int_t verbose); // mode: 0 - full, 1 - reduced, 2 - last
25 
26  virtual void Modify(PndEmcWaveform* wf);
27 
28  private:
29  Int_t fTraceLength;
30  Int_t fBufferPosition;
31  Int_t fWaveformLength;
32  Int_t fPowerSpecSample;
33  Double_t fSamplingRate;
34  Double_t fAdcNoise;
35  Double_t fFENoise;
36  Double_t fSigmaPs;
37  Double_t fSigmaGes;
38  Double_t fInputScale;
39  const Double_t* fPSFreq;
40  const Double_t* fPSPower;
41  TVirtualFFT* fft;
42  Int_t fVerbose;
43 
44  Int_t fBufferSize;
45  Int_t fPSNoiseMode; // 0 for precision; 1 for speed; 2 for last
46  Double_t fBufferUseRate;
47  Bool_t fBufferIsEmpty;
48  Double_t* fPSNoiseBuffer;
49  Double_t* fBandNoiseBuffer;
50  Double_t* fFFTFreqBuffer;
51  Double_t* fFFTReCoeffBuffer;
52  Double_t* fFFTImCoeffBuffer;
53  void expand_buffer(Int_t wf_size);
54 
55  void get_ps_noise(PndEmcWaveform* wf);
56  void generate_ps_noise();
57  void generate_band_noise(Double_t min_freq, Double_t max_freq);
58  void get_rnd_noise(PndEmcWaveform* wf, Double_t noise);
59 
61 };
62 
63 #endif
interface for waveform modifiers
ClassDef(PndEmcAbsWaveformModifier, 1)
represents a simulated waveform in an emc crystal
virtual void Modify(PndEmcWaveform *wf)
waveform modifier to add noise to waveform