PandaRoot
PndEmcPSAFPGAPileupAnalyser.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 PNDEMCFPGAPILEUPANALYSER_HH
14 #define PNDEMCFPGAPILEUPANALYSER_HH
15 
17 #include <string>
18 #include "TRandom.h"
19 #include <fstream>
20 
21 class PndEmcWaveform;
25 class PndEmcPSAFPGAFilterMWDsmooth;
28 class TF1;
29 class TGraph;
30 
31 #define MAX_NUMBER_OF_HITS 1000
32 
34 
35  public:
38  virtual void SetVerbose(Int_t verbose=0) { fVerbose = verbose; }
39 
41 
42  virtual void initFromFile() {};
43  virtual void Init(const std::vector<Double_t> &params, TF1* R_thres, TF1* R_mean, float extBaselineValue=0);
44  virtual void Init(const std::vector<Double_t> &params, TF1* R_thres, TF1* R_mean, unsigned int baselineStartSample, unsigned int baselineStopSample);
45 
46  virtual void GetHit(Int_t i, Double_t &Energy, Double_t &Time);
47  //Collect Hits with pile-up flags
48  virtual void GetHit2(Int_t i, Double_t &Energy, Double_t &Time, Int_t &PileupType);
49 
50  void GetEnergyMeasures(Int_t i, Double_t &Amplitude, Double_t &Integral);
51  virtual void reset();
52  virtual void put(float valueToStore);
53  virtual float baseline() {return baseline_value;};
54 
55 
56 
57 protected:
59 
60  virtual void setBaseline(float newBaseline);
61  virtual void setBaselineWindow(unsigned int startSample, unsigned int stopSample);
62  virtual void InitParameters(const std::vector<Double_t> &params);
63  virtual void Init2(const std::vector<Double_t> &params, TF1* R_thres, TF1* R_mean);
64 
65  Int_t fVerbose;
66  TF1* Int_thres;
67  TF1* Int_mean;
68  TGraph* grxy;
69  unsigned int BaselineStartSample;
70  unsigned int BaselineStopSample;
71  float BaselineSum;
72 
78  double CF_prev_val;
79  double CF_prev_val2;
80  std::ofstream Ratio,MWD,MWD2,Ratio_int;
87  // bool timing_finished_mwd;
89  unsigned int cf_crossing;
90  bool in_cfRise;
92  float sav_mwd;
93  float sav_mwd2;
94  float Square_mwd2;
95  float Square;
96  float t;
97  float t_mwd;
99  float max;
100 float max_mwd2[100];
101 float max_mwd;
102 float R_mwd;
121 
122 
124 };
125 
126 
127 
128 
129 
130 #endif
virtual void Init(const std::vector< Double_t > &params, TF1 *R_thres, TF1 *R_mean, float extBaselineValue=0)
int saved_local_time[MAX_NUMBER_OF_HITS]
virtual void setBaselineWindow(unsigned int startSample, unsigned int stopSample)
PndEmcPSAFPGAFilterMWD * MWD_filter2
virtual void SetVerbose(Int_t verbose=0)
virtual void GetHit2(Int_t i, Double_t &Energy, Double_t &Time, Int_t &PileupType)
virtual void GetHit(Int_t i, Double_t &Energy, Double_t &Time)
Get energy and time of hit.
float signal_buffer[MAX_NUMBER_OF_HITS][MAX_NUMBER_OF_HITS]
void GetEnergyMeasures(Int_t i, Double_t &Amplitude, Double_t &Integral)
unsigned int i
Definition: P4_F32vec4.h:33
#define MAX_NUMBER_OF_HITS
PndEmcPSAFPGAFilterDelay * CF_prev
enum PndEmcPSAFPGAPileupAnalyser::@0 baselineMode
int saved_local_time_mwd[MAX_NUMBER_OF_HITS]
float signal_buffer_mwd2[MAX_NUMBER_OF_HITS][MAX_NUMBER_OF_HITS]
PndEmcPSAFPGAFilterMWD * MWD_filter3
virtual void put(float valueToStore)
PndEmcPSAFPGAFilterMWD * MWD_filter1
represents a simulated waveform in an emc crystal
virtual ~PndEmcPSAFPGAPileupAnalyser()
float signal_buffer_mwd[MAX_NUMBER_OF_HITS][MAX_NUMBER_OF_HITS]
virtual void setBaseline(float newBaseline)
ClassDef(PndEmcPSAFPGAPileupAnalyser, 2)
virtual void InitParameters(const std::vector< Double_t > &params)
int saved_local_time_mwd2[MAX_NUMBER_OF_HITS]
virtual void Init2(const std::vector< Double_t > &params, TF1 *R_thres, TF1 *R_mean)