File indexing completed on 2024-04-06 12:08:28
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #ifndef SiStripPulseShape_h_
0019 #define SiStripPulseShape_h_
0020
0021 double fpeak(double *x, double *par);
0022
0023 double fdeconv(double *x, double *par);
0024
0025 double fturnOn(double *x, double *par);
0026
0027 double fdecay(double *x, double *par);
0028
0029 double fpeak_convoluted(double *x, double *par);
0030
0031 double fdeconv_convoluted(double *x, double *par);
0032
0033 double pulse_raw(double x, double y, double z, double t);
0034
0035 double pulse_x0(double y, double z, double t);
0036
0037 double pulse_yz(double x, double z, double t);
0038
0039 double pulse_x0_yz(double z, double t);
0040
0041 double pulse(double x, double y, double z, double t);
0042
0043 class SiStripPulseShape {
0044 public:
0045 enum mode { peak, deconvolution };
0046 SiStripPulseShape() : mode_(deconvolution) {}
0047 virtual ~SiStripPulseShape() {}
0048 inline void setMode(const mode theMode) { mode_ = theMode; }
0049 inline mode getMode() const { return mode_; }
0050 inline double getNormalizedValue(const double &t) const {
0051 double parameters[5] = {0., -2.82, 0.066, 50, 20};
0052 double time = t;
0053 switch (mode_) {
0054 case peak: {
0055 return fpeak(&time, parameters);
0056 }
0057 case deconvolution: {
0058 return fdeconv(&time, parameters);
0059 }
0060 }
0061 }
0062
0063 private:
0064 mode mode_;
0065 };
0066
0067 #endif