ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtElectronicResponse.h
Go to the documentation of this file.
1 #ifndef ATELECTRONICRESPONSE_H
2 #define ATELECTRONICRESPONSE_H
3 
4 #include <functional>
5 #include <string>
6 #include <vector>
7 
14 namespace ElectronicResponse {
15 
33 protected:
34  virtual double GetResponse(double time) const = 0;
35  virtual double GetResponse(int padNum, double time) const = 0;
36 
37 public:
38  virtual ~AtElectronicResponse() = default;
42  double operator()(double time) const { return GetResponse(time); }
46  double operator()(int padNum, double time) const { return GetResponse(padNum, time); }
47 };
48 
54 protected:
55  double fPeakingTime;
56 
57 public:
58  AtNominalResponse(double peakingTime);
59 
60 protected:
61  virtual double GetResponse(double time) const override;
62  virtual double GetResponse(int padNum, double time) const override { return GetResponse(time); }
63 };
64 
70 protected:
71  using ReducedResponse = std::function<double(double)>;
72  double fPeakingTime;
74 
75 public:
76  AtReducedTimeResponse(double peakingTime, ReducedResponse response);
77 
78 protected:
79  virtual double GetResponse(double time) const override;
80  virtual double GetResponse(int padNum, double time) const override { return GetResponse(time); }
81 };
82 
88 protected:
89  double fTBTime;
90  std::vector<double> fTrace;
91 
92 public:
97  AtVectorResponse(double tbTime, std::vector<double> trace);
98 
99 protected:
100  virtual double GetResponse(double time) const override;
101  virtual double GetResponse(int padNum, double time) const override { return GetResponse(time); }
102 };
103 
110 
111 public:
112  AtFileResponse(double tbTime, std::string filePath);
113 };
114 
115 } // namespace ElectronicResponse
116 
117 #endif //#ifndef ATELECTRONICRESPONSE_H
ElectronicResponse::AtReducedTimeResponse::ReducedResponse
std::function< double(double)> ReducedResponse
Definition: AtElectronicResponse.h:71
ElectronicResponse::AtVectorResponse::fTBTime
double fTBTime
Definition: AtElectronicResponse.h:89
ElectronicResponse::AtReducedTimeResponse::GetResponse
virtual double GetResponse(int padNum, double time) const override
Definition: AtElectronicResponse.h:80
ElectronicResponse::AtReducedTimeResponse::fPeakingTime
double fPeakingTime
Definition: AtElectronicResponse.h:72
ElectronicResponse::AtVectorResponse::GetResponse
virtual double GetResponse(double time) const override
Definition: AtElectronicResponse.cxx:43
ElectronicResponse::AtElectronicResponse::GetResponse
virtual double GetResponse(int padNum, double time) const =0
ElectronicResponse::AtNominalResponse::GetResponse
virtual double GetResponse(double time) const override
Definition: AtElectronicResponse.cxx:15
ElectronicResponse::AtNominalResponse::GetResponse
virtual double GetResponse(int padNum, double time) const override
Definition: AtElectronicResponse.h:62
ElectronicResponse::AtElectronicResponse
Base class for describing the response of electronics to charge.
Definition: AtElectronicResponse.h:32
ElectronicResponse::AtVectorResponse
Response function speficied as a trace.
Definition: AtElectronicResponse.h:87
ElectronicResponse::AtReducedTimeResponse::fResponse
ReducedResponse fResponse
Electric peaking time in us.
Definition: AtElectronicResponse.h:73
ElectronicResponse::AtVectorResponse::AtVectorResponse
AtVectorResponse(double tbTime, std::vector< double > trace)
Definition: AtElectronicResponse.cxx:39
ElectronicResponse::AtElectronicResponse::GetResponse
virtual double GetResponse(double time) const =0
ElectronicResponse::AtFileResponse
Response function speficied as a trace in a txt file.
Definition: AtElectronicResponse.h:109
ElectronicResponse::AtNominalResponse::fPeakingTime
double fPeakingTime
Definition: AtElectronicResponse.h:55
ElectronicResponse::AtNominalResponse::AtNominalResponse
AtNominalResponse(double peakingTime)
Electric peaking time in us.
Definition: AtElectronicResponse.cxx:13
ElectronicResponse::AtReducedTimeResponse::GetResponse
virtual double GetResponse(double time) const override
Definition: AtElectronicResponse.cxx:31
ElectronicResponse::AtReducedTimeResponse::AtReducedTimeResponse
AtReducedTimeResponse(double peakingTime, ReducedResponse response)
Definition: AtElectronicResponse.cxx:26
ElectronicResponse::AtFileResponse::AtFileResponse
AtFileResponse(double tbTime, std::string filePath)
Definition: AtElectronicResponse.cxx:56
ElectronicResponse::AtVectorResponse::GetResponse
virtual double GetResponse(int padNum, double time) const override
Definition: AtElectronicResponse.h:101
ElectronicResponse::AtElectronicResponse::operator()
double operator()(int padNum, double time) const
Definition: AtElectronicResponse.h:46
ElectronicResponse::AtElectronicResponse::operator()
double operator()(double time) const
Definition: AtElectronicResponse.h:42
ElectronicResponse::AtElectronicResponse::~AtElectronicResponse
virtual ~AtElectronicResponse()=default
trace
std::array< Double_t, 512 > trace
Definition: AtCalibration.h:9
ElectronicResponse::AtVectorResponse::fTrace
std::vector< double > fTrace
Width of a time bucket in us.
Definition: AtElectronicResponse.h:90
ElectronicResponse::AtNominalResponse
Nominal response of GET electronics.
Definition: AtElectronicResponse.h:53
ElectronicResponse::AtReducedTimeResponse
Response of GET electronics given by a function of the reduced time.
Definition: AtElectronicResponse.h:69
ElectronicResponse
Definition: AtVectorResponse.h:8