Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef ZDCANALYSIS_ZDCFITWRAPPER_H
6 #define ZDCANALYSIS_ZDCFITWRAPPER_H
56 void Initialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax);
57 void Initialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax,
float fitTmin,
float fitTmax,
float fitTRef);
61 virtual void DoInitialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax) = 0;
151 ZDCFitWrapper(wrapperTF1), m_defaultTau(defaultExpTau), m_fixTau(fixTau)
166 bool m_fixTau1{
false};
167 bool m_fixTau2{
false};
176 virtual void DoInitialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax)
override;
188 float fitT0 = theTF1->GetParameter(1);
190 float tau1 = theTF1->GetParameter(2);
191 float tau2 = theTF1->GetParameter(3);
195 if (tau2 > tau1) fitT0 += tau1 *
std::log(tau2 / tau1 - 1.0);
203 else throw std::runtime_error(
"Fit parameter does not exist.");
209 double amp = theTF1->GetParameter(0);
210 double constant = theTF1->GetParameter(4);
233 bool m_fixTau1{
false};
234 bool m_fixTau2{
false};
243 virtual void DoInitialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax)
override;
255 float fitT0 = theTF1->GetParameter(1);
257 float tau1 = theTF1->GetParameter(2);
258 float tau2 = theTF1->GetParameter(3);
262 if (tau2 > tau1) fitT0 += tau1 *
std::log(tau2 / tau1 - 1.0);
270 else throw std::runtime_error(
"Fit parameter does not exist.");
276 double amp = theTF1->GetParameter(0);
277 double constant = theTF1->GetParameter(4);
306 std::shared_ptr<TF1> m_expFermiFunc{};
314 virtual void DoInitialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax)
override;
323 virtual float GetTau1()
const override {
return m_tau1;}
324 virtual float GetTau2()
const override {
return m_tau2;}
332 if (
index == 0)
return m_tau1;
333 else if (
index == 1)
return m_tau2;
334 else throw std::runtime_error(
"Fit parameter does not exist.");
340 double amp = theTF1->GetParameter(0);
341 double C = theTF1->GetParameter(2);
352 double deltaT =
x[0] -
t0;
354 double expFermi = amp * m_norm * m_expFermiFunc->operator()(deltaT);
368 std::shared_ptr<TF1> m_expFermiFunc = 0;
369 std::shared_ptr<TF1> m_expFermiPreFunc = 0;
375 virtual void DoInitialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax)
override;
395 virtual float GetTau1()
const override {
return m_tau1;}
396 virtual float GetTau2()
const override {
return m_tau2;}
398 virtual float GetPreT0()
const override {
return 0;}
412 if (
index == 0)
return m_tau1;
413 else if (
index == 1)
return m_tau2;
415 else throw std::runtime_error(
"Fit parameter does not exist.");
424 double amp = theTF1->GetParameter(0);
425 if (amp <= 0)
return -1;
427 double preAmp = theTF1->GetParameter(2);
428 double preT0 = theTF1->GetParameter(3);
430 double deltaTPre = maxTime - preT0;
431 double background = preAmp * m_norm * m_expFermiFunc->operator()(deltaTPre);
433 return background / (amp + background);
442 double preAmp =
p[2];
446 double deltaT =
t -
t0;
447 double deltaTPre =
t - preT0;
456 double pulse1 = amp*m_norm*m_expFermiFunc->operator()(deltaT);
457 double pulse2 = preAmp * m_norm * (m_expFermiPreFunc->operator()(deltaTPre) -
458 m_expFermiPreFunc->operator()(deltaPresamp));
460 return C + pulse1 + pulse2;
471 double m_preNorm{1.};
473 std::shared_ptr<TF1> m_expFermiLHCfFunc = 0;
474 std::shared_ptr<TF1> m_expFermiPreFunc = 0;
480 virtual void DoInitialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax)
override;
486 double ampMin, ampMax;
489 double initialAmp = std::min<double>(std::max<double>(amp, ampMin), ampMax);
506 virtual float GetTau1()
const override {
return m_tau1;}
507 virtual float GetTau2()
const override {
return m_tau2;}
523 if (
index == 0)
return m_tau1;
524 else if (
index == 1)
return m_tau2;
526 else throw std::runtime_error(
"Fit parameter does not exist.");
535 double amp = theTF1->GetParameter(0);
536 if (amp <= 0)
return 1;
538 double preAmp = theTF1->GetParameter(2);
539 double preT0 = theTF1->GetParameter(3);
541 double deltaTPre = maxTime - preT0;
542 double background = preAmp * m_preNorm * m_expFermiLHCfFunc->operator()(deltaTPre);
544 return background / (amp + background);
555 double preAmp =
p[4];
559 m_expFermiLHCfFunc->SetParameter(0, amp);
560 m_expFermiLHCfFunc->SetParameter(2, tau1);
561 m_expFermiLHCfFunc->SetParameter(3, tau2);
562 m_expFermiLHCfFunc->SetParameter(4, tau2);
564 double deltaT =
t -
t0;
565 double deltaTPre =
t - preT0;
572 double pulse1 = m_expFermiLHCfFunc->operator()(deltaT);
573 double pulse2 = preAmp * m_preNorm * (m_expFermiPreFunc->operator()(deltaTPre) -
574 m_expFermiPreFunc->operator()(deltaPresamp));
576 return C + pulse1 + pulse2;
588 std::shared_ptr<TF1> m_expFermiFunc{0};
589 std::shared_ptr<TF1> m_expFermiPreFunc{0};
593 float defExpTau,
float fixExpTau);
596 virtual void DoInitialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax)
override;
610 virtual float GetTau1()
const override {
return m_tau1;}
611 virtual float GetTau2()
const override {
return m_tau2;}
622 if (
index == 0)
return m_tau1;
623 else if (
index == 1)
return m_tau2;
625 else throw std::runtime_error(
"Fit parameter does not exist.");
633 double amp = theTF1->GetParameter(0);
634 if (amp <= 0)
return -1;
636 double preAmp = theTF1->GetParameter(2);
637 double preT0 = theTF1->GetParameter(3);
639 double deltaTPre = maxTime - preT0;
640 double background = preAmp * m_norm * m_expFermiFunc->operator()(deltaTPre);
642 return background / (amp + background);
651 double expAmp =
p[2];
652 double expTau =
p[3];
653 double expSqrtTau =
p[4];
656 double deltaT =
t -
t0;
657 double pulse = amp * m_norm * m_expFermiFunc->operator()(deltaT);
664 if (
t > 0 && std::abs(expSqrtTau)>1
e-6) expPre = expAmp * (
std::exp(-
t/expTau-expSqrtTau*std::sqrt(
t)) -
std::exp(-tRef/expTau));
667 return C + pulse + expPre;
678 std::shared_ptr<TF1> m_expFermiLHCfFunc{};
679 std::shared_ptr<TF1> m_expFermiLHCfPreFunc{};
683 float defExpTau,
float fixExpTau);
686 virtual void DoInitialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax)
override;
700 virtual float GetTau1()
const override {
return m_tau1;}
701 virtual float GetTau2()
const override {
return m_tau2;}
706 float fitT0 = theTF1->GetParameter(1);
708 float tau1 = theTF1->GetParameter(2);
709 float tau2 = theTF1->GetParameter(3);
713 if (tau2 > tau1) fitT0 += tau1 *
std::log(tau2 / tau1 - 1.0);
722 if (
index == 0)
return m_tau1;
723 else if (
index == 1)
return m_tau2;
725 else throw std::runtime_error(
"Fit parameter does not exist.");
731 double amp = theTF1->GetParameter(0);
732 if (amp <= 0)
return 1;
736 double expAmp = theTF1->GetParameter(4);
737 double expTau = theTF1->GetParameter(5);
738 double bexpSqrt = theTF1->GetParameter(6);
741 double expPre = expAmp * (
std::exp(-maxTime/expTau - bexpSqrt*maxTime*maxTime) -
std::exp(-tRef/expTau - bexpSqrt*tRef*tRef));
743 return expPre / (amp + expPre);
756 double expAmp =
p[4];
757 double expTau =
p[5];
758 double bexpSqrt =
p[6];
759 double reflFrac =
p[7];
761 m_expFermiLHCfFunc->SetParameter(0, amp);
762 m_expFermiLHCfFunc->SetParameter(2, tau1);
763 m_expFermiLHCfFunc->SetParameter(3, tau2);
764 m_expFermiLHCfFunc->SetParameter(6, reflFrac);
766 m_timeCorr = m_tau1 *
std::log(m_tau2 / m_tau1 - 1.0);
768 double deltaT =
t -
t0;
769 double pulse = m_expFermiLHCfFunc->operator()(deltaT);
777 expPre = expAmp * (
std::exp(-
t/expTau - bexpSqrt*
t*
t) -
std::exp(-tRef/expTau - bexpSqrt*tRef*tRef));
779 return pulse + expPre;
801 virtual void DoInitialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax)
override;
810 virtual float GetTau1()
const override {
return m_tau1;}
811 virtual float GetTau2()
const override {
return m_tau2;}
819 if (
index == 0)
return m_tau1;
820 else if (
index == 1)
return m_tau2;
821 else throw std::runtime_error(
"Fit parameter does not exist.");
827 double amp = theTF1->GetParameter(0);
828 double slope = theTF1->GetParameter(2);
830 double background = slope *
GetTime();
831 return background / amp;
838 double deltaT =
x[0] -
t0;
840 double bckgd =
p[2] *
x[0] +
p[3];
842 double expFermi = amp * m_norm * m_expFermiFunc->operator()(deltaT);
844 return expFermi + bckgd;
862 virtual void DoInitialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax)
override;
881 virtual float GetTau1()
const override {
return m_tau1;}
882 virtual float GetTau2()
const override {
return m_tau2;}
889 fitPreT0 += m_timeCorr;
906 if (
index == 0)
return m_tau1;
907 else if (
index == 1)
return m_tau2;
909 else throw std::runtime_error(
"Fit parameter does not exist.");
918 double amp = theTF1->GetParameter(0);
919 double preAmp = theTF1->GetParameter(2);
920 double preT0 = theTF1->GetParameter(3);
921 double slope = theTF1->GetParameter(4);
923 double deltaTPre = maxTime - preT0;
925 double background = slope * maxTime + preAmp * m_norm * (m_expFermiFunc->operator()(deltaTPre) -
926 m_expFermiFunc->operator()(-preT0));
928 return background / amp;
937 double preAmp =
p[2];
939 double linSlope =
p[4];
941 double deltaT =
t -
t0;
942 double deltaTPre =
t - preT0;
949 double pulse1 = amp * m_norm * m_expFermiFunc->operator()(deltaT);
950 double pulse2 = preAmp * m_norm * (m_expFermiFunc->operator()(deltaTPre) -
951 m_expFermiFunc->operator()(deltaPresamp));
953 double bckgd = linSlope * (
t - deltaPresamp) +
p[5];
955 return pulse1 + pulse2 + bckgd;
975 virtual void DoInitialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax)
override;
995 virtual float GetTau1()
const override {
return m_tau1;}
996 virtual float GetTau2()
const override {
return m_tau2;}
1003 fitPreT0 += m_timeCorr;
1020 if (
index == 0)
return m_tau1;
1021 else if (
index == 1)
return m_tau2;
1023 else throw std::runtime_error(
"Fit parameter does not exist.");
1032 double amp = theTF1->GetParameter(0);
1033 double preAmp = theTF1->GetParameter(2);
1034 double preT0 = theTF1->GetParameter(3);
1035 double slope = theTF1->GetParameter(4);
1037 double deltaTPre = maxTime - preT0;
1039 double background = slope * maxTime + preAmp * m_norm * (m_expFermiFunc->operator()(deltaTPre) -
1040 m_expFermiFunc->operator()(-preT0));
1042 return background / amp;
1051 double preAmp =
p[2];
1052 double preT0 =
p[3];
1053 double linSlope =
p[4];
1054 double linConst =
p[5];
1055 double expamp =
p[6];
1057 double deltaT =
t -
t0;
1058 double deltaTPre =
t - preT0;
1065 double pulse1 = amp * m_norm * m_expFermiFunc->operator()(deltaT);
1066 double pulse2 = preAmp * m_norm * (m_expFermiFunc->operator()(deltaTPre) - m_expFermiFunc->operator()(deltaPresamp));
1068 double linBG = linSlope * (
t - deltaPresamp) + linConst;
1069 double expBG = expamp *
std::exp(-(
t) / m_tau2) - expamp;
1071 return pulse1 + pulse2 + linBG + expBG;
1090 virtual void DoInitialize(
float initialAmp,
float initialT0,
float ampMin,
float ampMax)
override;
1100 if (fixPrePulseToZero) {
1117 virtual float GetTau1()
const override {
return m_tau1;}
1118 virtual float GetTau2()
const override {
return m_tau2;}
1125 fitPreT0 += m_timeCorr;
1136 fitPostT0 += m_timeCorr;
1150 if (
index == 0)
return m_tau1;
1151 else if (
index == 1)
return m_tau2;
1153 else throw std::runtime_error(
"Fit parameter does not exist.");
1162 double amp = theTF1->GetParameter(0);
1163 double preAmp = theTF1->GetParameter(2);
1164 double preT0 = theTF1->GetParameter(3);
1165 double slope = theTF1->GetParameter(4);
1167 double deltaTPre = maxTime - preT0;
1169 double background = slope * maxTime + preAmp * m_norm * (m_expFermiFunc->operator()(deltaTPre) -
1170 m_expFermiFunc->operator()(-preT0));
1172 return background / amp;
1181 double preAmp =
p[2];
1182 double preT0 =
p[3];
1183 double linSlope =
p[4];
1184 double linConst =
p[5];
1185 double expamp =
p[6];
1186 double postAmp =
p[7];
1187 double postT0 =
p[8];
1189 double deltaT =
t -
t0;
1190 double deltaTPre =
t - preT0;
1191 double deltaTPost =
t - postT0;
1198 double pulse1 = amp * m_norm * m_expFermiFunc->operator()(deltaT);
1199 double pulse2 = preAmp * m_norm * (m_expFermiFunc->operator()(deltaTPre) - m_expFermiFunc->operator()(deltaPresamp));
1200 double pulse3 = postAmp * m_norm * m_expFermiFunc->operator()(deltaTPost);
1202 double linBG = linSlope *
t + linConst;
1205 return pulse1 + pulse2 + pulse3 + linBG + expBG;
1213 double amp =
pvec[0];
1215 double tau1 =
pvec[2];
1216 double tau2 =
pvec[3];
1219 double tauRatio = tau2 / tau1;
1220 double tauRatioMinunsOne = tauRatio - 1;
1222 double norm = (
std::pow(1. / tauRatioMinunsOne, 1. / (1 + tauRatio)) /
1223 ( 1 +
std::pow(1. / tauRatioMinunsOne, 1. / (1 + 1 / tauRatio))));
1225 double deltaT =
t -
t0;
1226 if (deltaT < 0) deltaT = 0;
1228 double expTerm =
std::exp(-deltaT / tau2);
1229 double fermiTerm = 1. / (1. +
std::exp(-(
t -
t0) / tau1));
1231 return amp * expTerm * fermiTerm /
norm +
C;
1238 double amp =
pvec[0];
1240 double tau1 =
pvec[2];
1241 double tau2 =
pvec[3];
1244 double refldelay =
pvec[5];
1245 double reflFrac =
pvec[6];
1246 double reflwidth =
pvec[7];
1247 double delta =
pvec[8];
1249 double tauRatio = tau2 / tau1;
1250 double tauRatioMinunsOne = tauRatio - 1;
1252 double norm =
std::pow(1. / tauRatioMinunsOne, 1. / (1 + tauRatio)) /
1253 ( 1 +
std::pow(1. / tauRatioMinunsOne, 1. / (1 + 1 / tauRatio))) ;
1255 double deltaT =
t -
t0;
1256 if (deltaT < 0) deltaT = 0;
1261 double expTerm = delta +
std::exp(-deltaT / tau2);
1262 double fermiTerm = 1. / (1. +
std::exp(-(
t -
t0) / tau1));
1264 double deltaTRefl = deltaT - refldelay;
1265 double reflTerm = -reflFrac*amp*
std::exp(-0.5*deltaTRefl*deltaTRefl/reflwidth/reflwidth);
1267 return amp * expTerm * fermiTerm /
norm +
C + reflTerm;
ZDCFitWrapper(const std::shared_ptr< TF1 > &wrapperTF1)
virtual float GetAmplitude() const =0
float GetTMinAdjust() const
virtual float GetAmpError() const override
std::shared_ptr< TF1 > m_wrapperTF1
virtual float GetTau1() const override
virtual void SetT0FitLimits(float tMin, float tMax)=0
virtual float GetTau1() const override
virtual float GetPostT0() const override
virtual void SetPostPulseT0Range(float, float, float) override
virtual float GetExpAmp() const override
virtual float GetShapeParameter(size_t index) const override
virtual void DoInitialize(float initialAmp, float initialT0, float ampMin, float ampMax)=0
virtual double operator()(const double *x, const double *p) override
virtual float GetPreAmp() const override
virtual float GetBkgdMaxFraction() const override
virtual void SetInitialExpPulse(float amp) override
virtual float GetPostAmp() const =0
virtual float GetShapeParameter(size_t index) const override
virtual float GetExpAmp() const override
virtual float GetShapeParameter(size_t index) const =0
std::shared_ptr< TF1 > m_expFermiFunc
virtual void SetInitialPrePulse(float amp, float t0, float, bool) override
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
float getDefaultExpTau() const
virtual float GetPostT0() const override
virtual float GetExpAmp() const =0
virtual float GetBkgdMaxFraction() const override
virtual void SetInitialPrePulse(float amp, float t0, float expamp, bool fixPrePulseToZero)=0
virtual float GetTime() const override
virtual float GetPreAmp() const override
virtual float GetAmpError() const override
~ZDCFitExpFermiLinearFixedTaus()
unsigned int GetPreT0ParIndex() const override
virtual void ConstrainFit()=0
virtual float GetTime() const override
virtual float GetTime() const =0
virtual float GetTau2() const override
virtual float GetTime() const override
unsigned int GetPreT0ParIndex() const override
std::vector< ALFA_RawData_p1 > t0
virtual float GetExpAmp() const override
virtual float GetBkgdMaxFraction() const override
virtual float GetShapeParameter(size_t index) const override
virtual void SetInitialPrePulse(float amp, float t0, float expamp, bool fixPrePulseToZero) override
virtual float GetShapeParameter(size_t index) const override
virtual float GetPostAmp() const override
virtual float GetBkgdMaxFraction() const override
virtual float GetBkgdMaxFraction() const override
virtual float GetAmplitude() const override
virtual float GetBkgdMaxFraction() const override
virtual std::shared_ptr< TF1 > GetWrapperTF1()
virtual float GetShapeParameter(size_t index) const override
unsigned int GetPreT0ParIndex() const override
virtual float GetPreT0() const override
virtual float GetTime() const override
virtual float GetPreAmp() const override
virtual float GetTau1() const override
virtual float GetTime() const override
virtual float GetTau2() const =0
virtual float GetAmplitude() const override
virtual float GetExpTau() const =0
std::shared_ptr< TF1 > m_expFermiFunc
virtual float GetShapeParameter(size_t index) const override
virtual float GetPreT0() const =0
ZDCPreExpFitWrapper(std::shared_ptr< TF1 > wrapperTF1, float defaultExpTau, bool fixTau)
virtual float GetBkgdMaxFraction() const override
virtual float GetPreAmp() const override
virtual float GetAmplitude() const override
virtual float GetPreAmp() const override
virtual float GetTau2() const override
~ZDCFitExpFermiLinearPrePulse()
virtual float GetTau2() const override
virtual float GetTau1() const override
virtual float GetExpAmp() const override
virtual void SetInitialPrePulse(float amp, float t0, float, bool) override
virtual float GetTau1() const override
virtual float GetTau1() const override
~ZDCFitExpFermiLHCfPrePulse()
virtual float GetPreT0() const override
virtual float GetTau2() const override
virtual float GetShapeParameter(size_t index) const override
virtual float GetTime() const override
virtual void UnconstrainFit()=0
virtual float GetAmpError() const =0
virtual float GetTau1() const override
void SetT0Range(float t0Min, float t0Max)
double ZDCFermiExpFitRefl(const double *xvec, const double *pvec)
virtual float GetBkgdMaxFraction() const override
virtual TF1 * GetWrapperTF1RawPtr() const
virtual float GetTime() const override
virtual float GetTau1() const override
virtual float GetPostT0() const override
~ZDCFitExpFermiLHCfPreExp()
virtual float GetExpAmp() const =0
virtual float GetTau2() const override
virtual float GetShapeParameter(size_t index) const override
virtual float GetAmpError() const override
virtual float GetTime() const override
virtual void SetInitialExpPulse(float expamp)=0
virtual float GetPreT0() const override
virtual float GetShapeParameter(size_t index) const override
virtual float GetAmpError() const override
virtual float GetBkgdMaxFraction() const =0
virtual float GetAmplitude() const override
virtual float GetBkgdMaxFraction() const override
virtual float GetTau2() const override
virtual float GetTau2() const override
virtual float GetExpTau() const override
virtual void SetPostPulseT0Range(float, float, float) override
virtual float GetAmpError() const override
virtual float GetPostAmp() const override
virtual float GetExpAmp() const override
virtual float GetShapeParameter(size_t index) const override
virtual float GetAmplitude() const override
virtual float GetAmplitude() const override
virtual float GetAmpError() const override
virtual float GetPostAmp() const override
virtual float GetPostAmp() const override
void Initialize(float initialAmp, float initialT0, float ampMin, float ampMax)
virtual float GetPreT0() const override
virtual float GetTau1() const =0
virtual float GetTime() const override
virtual float GetAmplitude() const override
virtual float GetExpTau() const override
virtual unsigned int GetPreT0ParIndex() const =0
std::shared_ptr< TF1 > m_expFermiFunc
virtual float GetTau2() const override
virtual float GetAmpError() const override
virtual float GetShapeParameter(size_t index) const override
virtual void SetInitialPrePulse(float amp, float t0, float, bool) override
virtual float GetExpAmp() const override
virtual float GetAmpError() const override
virtual float GetBkgdMaxFraction() const override
virtual float GetAmpError() const override
virtual float GetAmplitude() const override
virtual float GetExpAmp() const override
void SetAmpMinMax(float minAmp, float maxAmp)
virtual float GetTau1() const override
virtual float GetTau2() const override
virtual float GetBkgdMaxFraction() const override
virtual float GetAmplitude() const override
virtual float GetTime() const override
virtual float GetPostT0() const =0
virtual void SetPrePulseT0Range(float tmin, float tmax)=0
virtual float GetAmplitude() const override
ZDCPrePulseFitWrapper(std::shared_ptr< TF1 > wrapperTF1)
virtual void SetPostPulseT0Range(float tmin, float tmax, float initialPostT0)=0
virtual float GetAmpError() const override
virtual float GetAmpError() const override
virtual float GetTau1() const override
std::shared_ptr< TF1 > m_expFermiFunc
virtual unsigned int GetPreT0ParIndex() const override
virtual float GetPreT0() const override
virtual const TF1 * GetWrapperTF1() const
virtual double operator()(const double *x, const double *p)=0
virtual void SetInitialPrePulse(float amp, float t0, float expamp, bool) override
virtual float GetTau1() const override
virtual float GetAmplitude() const override
virtual float GetTau2() const override
virtual double operator()(const double *x, const double *p) override
Define macros for attributes used to control the static checker.
constexpr int pow(int base, int exp) noexcept
~ZDCFitExpFermiPrePulse()
virtual float GetPreAmp() const =0
virtual float GetPostAmp() const override
virtual float GetTime() const override
virtual void SetPostPulseT0Range(float, float, float) override
virtual float GetTau2() const override
~ZDCFitExpFermiFixedTaus()
virtual float GetPostT0() const override
virtual void SetPostPulseT0Range(float, float, float) override
virtual void SetInitialExpPulse(float amp) override
double ZDCFermiExpFit(const double *xvec, const double *pvec)
virtual unsigned int GetPreT0ParIndex() const override
virtual float GetPostT0() const override