PandaRoot
BSEmcPSAFPGASampleAnalyser.h
Go to the documentation of this file.
1 #ifndef BSEMCPSAFPGASAMPLEANALYSER_HH
2 #define BSEMCPSAFPGASAMPLEANALYSER_HH
3 
4 #include <string>
5 #include <vector>
6 
7 #include "Rtypes.h"
8 #include "RtypesCore.h"
9 
10 #include "BSEmcAbsPSA.h"
11 
16 class BSEmcWaveform;
17 class TBuffer;
18 class TClass;
19 class TMemberInspector;
20 
22  constexpr static Int_t fgMaxNumberOfHits{100};
23 
24  public:
26  BSEmcPSAFPGASampleAnalyser(const std::string &t_fname);
28 
29  virtual void initFromFile(const std::string &t_fname);
30  virtual void reset() = 0;
31  virtual void put(Float_t t_valueToStore) = 0;
32  virtual void setBaseline(Float_t t_newBaseline) { fBaseline_value = t_newBaseline; };
33 
34  virtual Float_t baseline() = 0;
35  Int_t nHits() { return fNumber_of_hits; };
36  Float_t sampleTime(Int_t t_index);
37  Float_t sampleAmplitude(Int_t t_index);
38  Float_t sampleIntegral(Int_t t_index);
39  Int_t samplePileup(Int_t t_index);
40 
41  virtual Int_t Process(const BSEmcWaveform *t_waveform);
42  virtual void Reset() { this->reset(); };
43  virtual void GetHit(Int_t t_i, Double_t &t_energy, Double_t &t_time);
44  virtual void GetHit(Int_t t_i, Double_t &t_energy, Double_t &t_time, Int_t &t_PileupType);
45 
46  virtual void Init(const std::vector<Double_t> &t_params);
47 
49  Int_t ma_trig_M;
50  Float_t hit_threshold;
51  Int_t cf_delay;
52  Float_t cf_ratio;
55  Int_t mwd_length;
56  Float_t mwd_tau;
57  Int_t mwd2_length;
58  Float_t mwd2_tau;
59  Int_t mwd3_length;
60  Float_t mwd3_tau;
61  Int_t sig_delay;
63  Float_t clock_unit; // unit time per point
64  Float_t iafactor; // integral vs ampltitue
65  };
66 
67  enum pileup_t { kSingle = 0, kPileup1 = 1, kPileup2 = 2, kInvalid = 99 };
69  status_t GetStatus() { return fStatus; }
70 
71  protected:
72  virtual void init(SampleAnalyserParams &t_params);
73 
75 
76  Float_t fBaseline_value{0};
77  Int_t fLocal_time{0};
78  Bool_t fPulse_detected{kFALSE};
80  Int_t fCF_zero_crossing_points{0}; // Unused
81 
89 
91 
92  // features of the detected pulses
93  Int_t fNumber_of_hits{0};
94  Float_t fTime[fgMaxNumberOfHits]{};
95  Float_t fIntegral[fgMaxNumberOfHits]{};
96  Float_t fAmplitude[fgMaxNumberOfHits]{};
97 
99  Int_t fPileups[fgMaxNumberOfHits]{};
100 
102 };
103 
104 #endif /*BSEMCPSAFPGASAMPLEANALYSER_HH*/
Baseclass for pulseshapeanalysis ( featureextraction )
Definition: BSEmcAbsPSA.h:26
BSEmcPSAFPGAFilterDelay * fMA_delay
virtual Float_t baseline()=0
represents a simulated waveform in an emc crystal
Definition: BSEmcWaveform.h:63
BSEmcPSAFPGAFilterDelay * fSignal_buffer
virtual void GetHit(Int_t t_i, Double_t &t_energy, Double_t &t_time)
Get energy and time of hit.
Int_t samplePileup(Int_t t_index)
ClassDef(BSEmcPSAFPGASampleAnalyser, 2)
virtual void reset()=0
Float_t fTime[fgMaxNumberOfHits]
virtual void initFromFile(const std::string &t_fname)
BSEmcPSAFPGALinFitter * fCF_Fitter
BSEmcPSAFPGAFilterMA * fMA_triggering
Float_t sampleAmplitude(Int_t t_index)
virtual void put(Float_t t_valueToStore)=0
Float_t sampleTime(Int_t t_index)
Float_t fAmplitude[fgMaxNumberOfHits]
virtual Int_t Process(const BSEmcWaveform *t_waveform)
Find Hits in Waveform.
Float_t sampleIntegral(Int_t t_index)
Int_t fPileups[fgMaxNumberOfHits]
virtual void setBaseline(Float_t t_newBaseline)
virtual void Init(const std::vector< Double_t > &t_params)
virtual ~BSEmcPSAFPGASampleAnalyser()
virtual void Reset()
reset found hits
Float_t fIntegral[fgMaxNumberOfHits]
BSEmcPSAFPGAFilterDelay * fSignal_delay
BSEmcPSAFPGAFilterDelay * fCF_delay
virtual void init(SampleAnalyserParams &t_params)