PandaRoot
BSEmcFullStackedWaveformSimulator.h
Go to the documentation of this file.
1 //#pragma once
2 #ifndef BSEMCFULLSTACKEDWAVEFORMSIMULATOR_HH
3 #define BSEMCFULLSTACKEDWAVEFORMSIMULATOR_HH
4 
5 #include <iostream>
6 #include <vector>
7 
8 #include "Rtypes.h"
9 #include "RtypesCore.h"
10 
12 
13 class BSEmcWaveformData;
14 class BSEmcWaveform;
15 class BSEmcAbsPulseshape;
16 class TClonesArray;
17 class TBuffer;
18 class TClass;
19 class TMemberInspector;
20 
28  public:
30  BSEmcFullStackedWaveformSimulator(Double_t t_sampleRate, BSEmcAbsPulseshape *t_pulseShape);
32 
33  virtual void Init(Double_t t_samplingBeforeFirstPulse, Double_t t_samplingAfterLastPulse, Double_t t_cutoff, Double_t t_activeTimeIncrement);
34 
35  virtual void GetAbsoluteTimeInterval(BSEmcWaveformData *t_wfData, Double_t &t_startTime, Double_t &t_activeTime) /*override*/; // in ns
36 
37  virtual Double_t GetTimeBeforeFirstHit(BSEmcWaveformData * /*unused*/) /*override*/ { return fSamplingBeforeFirstPulse; } // in ns //wfData //[R.K.03/2017] unused variable(s)
38 
39  virtual Double_t GetScale() /*override*/ { return fScale; }
40  virtual BSEmcWaveform *Get1GevWaveform() /*override*/ { return f1GeVWaveform; };
41 
42  virtual Double_t GetPulseRiseTime() { return fPulseRiseTime; };
43 
44  protected:
45  virtual BSEmcWaveform *MakeWaveform(BSEmcWaveformData *t_wfData, TClonesArray *t_arrayToStore = nullptr);
46  virtual BSEmcWaveform *
47  MakeSingleWaveform(Double_t t_hitEnergy, Double_t t_hitTime, TClonesArray *t_arrayToStore = nullptr, Int_t t_detId = -1, Int_t t_trackId = -1, Int_t t_hitIndex = -1);
48 
49  virtual Double_t CalcWaveForTime(Double_t t_absoluteTime, BSEmcWaveformData *t_wfData);
50  Double_t CalcSingleWaveForTime(Double_t t_absoluteTime, Double_t t_energy, Double_t t_pulseTime);
51 
52  private:
53  // don't allow copying (-Weffc++)
55  BSEmcFullStackedWaveformSimulator &operator=(const BSEmcFullStackedWaveformSimulator &); // no implementation
56 
57  private:
58  Double_t fSamplingBeforeFirstPulse{-1};
59  Double_t fSamplingAfterLastPulse{-1};
60  Double_t fCutoff{-1}; //<! minimum pulse after which waveform simulation is terminated. Given as corresponding energy/GeV when cutoff value treated as pulse amplitude.
61 
62  BSEmcAbsPulseshape *fPulseshape{nullptr};
63 
64  Double_t fScale{-1};
65  BSEmcWaveform *f1GeVWaveform{nullptr};
66 
67  Double_t fPulseRiseTime{-1};
68 
69  Double_t fActiveTimeIncrement{-1};
70 
72 };
73 
74 #endif /*BSEMCFULLSTACKEDWAVEFORMSIMULATOR_HH*/
represents a simulated waveform in an emc crystal
Definition: BSEmcWaveform.h:63
virtual void GetAbsoluteTimeInterval(BSEmcWaveformData *t_wfData, Double_t &t_startTime, Double_t &t_activeTime)
Double_t CalcSingleWaveForTime(Double_t t_absoluteTime, Double_t t_energy, Double_t t_pulseTime)
virtual Double_t GetTimeBeforeFirstHit(BSEmcWaveformData *)
virtual BSEmcWaveform * MakeWaveform(BSEmcWaveformData *t_wfData, TClonesArray *t_arrayToStore=nullptr)
virtual void Init(Double_t t_samplingBeforeFirstPulse, Double_t t_samplingAfterLastPulse, Double_t t_cutoff, Double_t t_activeTimeIncrement)
Abstract base class for waveform simulator.
pulseshape interface
virtual BSEmcWaveform * MakeSingleWaveform(Double_t t_hitEnergy, Double_t t_hitTime, TClonesArray *t_arrayToStore=nullptr, Int_t t_detId=-1, Int_t t_trackId=-1, Int_t t_hitIndex=-1)
represents a simulated waveform in an emc crystal, used by BSEmcFwEndcapTimebasedWaveforms ...
virtual Double_t CalcWaveForTime(Double_t t_absoluteTime, BSEmcWaveformData *t_wfData)