PandaRoot
BSEmcPSAFPGAPileupAnalyser.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 #ifndef BSEMCPSAFPGAPILEUPANALYSER_HH
14 #define BSEMCPSAFPGAPILEUPANALYSER_HH
15 
16 #include <fstream>
17 #include <string>
18 #include <vector>
19 
20 #include "Rtypes.h"
21 #include "RtypesCore.h"
22 
24 
25 class BSEmcWaveform;
31 class TF1;
32 class TBuffer;
33 class TClass;
34 class TMemberInspector;
35 
37  constexpr static Int_t fgMaxNumberOfHits{1000};
38 
39  public:
42  virtual void SetVerbose(Int_t t_verbose = 0) { fVerbose = t_verbose; }
43 
44  virtual void initFromFile() /*override*/ {};
45  virtual void Init(const std::vector<Double_t> &t_params, TF1 *t_r_thres, TF1 *t_r_mean, Float_t t_extBaselineValue = 0);
46  virtual void Init(const std::vector<Double_t> &t_params, TF1 *t_r_thres, TF1 *t_r_mean, UInt_t t_baselineStartSample, UInt_t t_baselineStopSample);
47 
48  virtual void GetHit(Int_t t_idx, Double_t &t_energy, Double_t &t_time);
49  virtual void GetHit(Int_t t_idx, Double_t &t_energy, Double_t &t_time, Int_t &t_pileupType);
50 
51  void GetEnergyMeasures(Int_t t_idx, Double_t &t_amplitude, Double_t &t_integral);
52  virtual void reset() /*override*/;
53  virtual void put(Float_t t_valueToStore) /*override*/;
54 
55  virtual Float_t baseline() /*override*/ { return fBaseline_value; };
56  virtual void setBaselineWindow(UInt_t t_startSample, UInt_t t_stopSample);
57 
58  protected:
60 
61  virtual void setBaseline(Float_t t_newBaseline) /*override*/;
62  virtual void InitParameters(const std::vector<Double_t> &t_params);
63  virtual void Init2(const std::vector<Double_t> &t_params, TF1 *t_r_thres, TF1 *t_r_mean);
64  Int_t fVerbose{0};
65  TF1 *fInt_thres{nullptr};
66  TF1 *fInt_mean{nullptr};
67 
70  Float_t fBaselineSum{0};
71 
74 
77  Double_t fCF_prev_val{0};
78  Double_t fCF_prev_val2{0};
79  std::ofstream fRatio, fMWD, fMWD2;
80  Bool_t fEnergy_finished{kFALSE};
81  Bool_t fEnergy_finished_mwd{kFALSE};
82  Bool_t fEnergy_finished_mwd2{kFALSE};
83  Bool_t fPulse_detected_mwd{kFALSE};
84  Bool_t fPulse_detected_mwd2{kFALSE};
85  Bool_t fTiming_finished{kFALSE};
86  Bool_t fFunc_defined{kFALSE};
87 
88  UInt_t fCF_crossing{0};
89  Bool_t fIn_cfRise{kFALSE};
90  Float_t fCFZero[fgMaxNumberOfHits]{};
91  Float_t fCFRise[fgMaxNumberOfHits]{};
92  Float_t fSavedValuetoStore{0};
93  Float_t fSav_mwd{0};
94  Float_t fSav_mwd2{0};
95  Float_t fSquare_mwd2{0};
96  Float_t fSquare{0};
97  Float_t fT{0};
98  Float_t fT_mwd{0};
99  Float_t fT_mwd2[fgMaxNumberOfHits];
100  Float_t fMax{0};
101  Float_t fMax_mwd2[100];
102  Float_t fMax_mwd{0};
103  Float_t fR_mwd{0};
104  Int_t fSaved_local_time[fgMaxNumberOfHits];
105  Int_t fSaved_local_time_mwd[fgMaxNumberOfHits];
106  Int_t fSaved_local_time_mwd2[fgMaxNumberOfHits];
107  Int_t fNumber_of_puls{0};
113  Int_t fZ[fgMaxNumberOfHits];
114  Int_t fZ_mwd[fgMaxNumberOfHits];
115  Int_t fZ_mwd2[fgMaxNumberOfHits];
116  Float_t fCfZero[fgMaxNumberOfHits];
117  Float_t fCfZero2[fgMaxNumberOfHits];
118  Float_t fCfRise[fgMaxNumberOfHits];
119  Float_t fSignal_buffer_mwd[fgMaxNumberOfHits][fgMaxNumberOfHits];
120  Float_t fSignal_buffer_mwd2[fgMaxNumberOfHits][fgMaxNumberOfHits];
121 
123 };
124 
125 #endif /*BSEMCPSAFPGAPILEUPANALYSER_HH*/
virtual ~BSEmcPSAFPGAPileupAnalyser()
represents a simulated waveform in an emc crystal
Definition: BSEmcWaveform.h:75
BSEmcPSAFPGAFilterMWD * fMWD_filter2
Float_t fCFZero[fgMaxNumberOfHits]
Int_t fSaved_local_time[fgMaxNumberOfHits]
virtual void GetHit(Int_t t_idx, Double_t &t_energy, Double_t &t_time)
Get energy and time of hit.
ClassDef(BSEmcPSAFPGAPileupAnalyser, 2)
BSEmcPSAFPGAFilterMWD * fMWD_filter3
Float_t fCFRise[fgMaxNumberOfHits]
virtual void Init2(const std::vector< Double_t > &t_params, TF1 *t_r_thres, TF1 *t_r_mean)
virtual void SetVerbose(Int_t t_verbose=0)
Float_t fT_mwd2[fgMaxNumberOfHits]
virtual void setBaselineWindow(UInt_t t_startSample, UInt_t t_stopSample)
Float_t fCfZero[fgMaxNumberOfHits]
Int_t fSaved_local_time_mwd[fgMaxNumberOfHits]
Float_t fSignal_buffer_mwd[fgMaxNumberOfHits][fgMaxNumberOfHits]
void GetEnergyMeasures(Int_t t_idx, Double_t &t_amplitude, Double_t &t_integral)
virtual void put(Float_t t_valueToStore)
virtual void Init(const std::vector< Double_t > &t_params, TF1 *t_r_thres, TF1 *t_r_mean, Float_t t_extBaselineValue=0)
enum BSEmcPSAFPGAPileupAnalyser::@1 fBaselineMode
Float_t fSignal_buffer_mwd2[fgMaxNumberOfHits][fgMaxNumberOfHits]
virtual void setBaseline(Float_t t_newBaseline)
Float_t fCfZero2[fgMaxNumberOfHits]
BSEmcPSAFPGAFilterMWD * fMWD_filter1
Float_t fCfRise[fgMaxNumberOfHits]
Int_t fSaved_local_time_mwd2[fgMaxNumberOfHits]
virtual void InitParameters(const std::vector< Double_t > &t_params)