#include "CxxUtils/checker_macros.h"
#include <TF1.h>
#include <memory>
Go to the source code of this file.
◆ ZDCFermiExpFit()
double ZDCFermiExpFit |
( |
const double * |
xvec, |
|
|
const double * |
pvec |
|
) |
| |
Definition at line 662 of file ZDCFitWrapper.cxx.
664 static const float offsetScale = 0;
668 double amp =
pvec[0];
670 double tau1 =
pvec[2];
671 double tau2 =
pvec[3];
674 double tauRatio = tau2 / tau1;
675 double tauRatioMinunsOne = tauRatio - 1;
677 double norm = (
std::exp(-offsetScale / tauRatio) *
std::pow(1. / tauRatioMinunsOne, 1. / (1 + tauRatio)) /
678 ( 1 +
std::pow(1. / tauRatioMinunsOne, 1. / (1 + 1 / tauRatio))) );
680 double deltaT =
t - (
t0 - offsetScale * tau1);
681 if (deltaT < 0) deltaT = 0;
683 double expTerm =
std::exp(-deltaT / tau2);
684 double fermiTerm = 1. / (1. +
std::exp(-(
t -
t0) / tau1));
686 return amp * expTerm * fermiTerm /
norm +
C;
◆ ZDCFermiExpFitRefl()
double ZDCFermiExpFitRefl |
( |
const double * |
xvec, |
|
|
const double * |
pvec |
|
) |
| |
Definition at line 689 of file ZDCFitWrapper.cxx.
691 static const float offsetScale = 0;
695 double amp =
pvec[0];
697 double tau1 =
pvec[2];
698 double tau2 =
pvec[3];
701 double refldelay =
pvec[5];
702 double reflFrac =
pvec[6];
703 double reflwidth =
pvec[7];
704 double delta =
pvec[8];
706 double tauRatio = tau2 / tau1;
707 double tauRatioMinunsOne = tauRatio - 1;
709 double norm = (
std::exp(-offsetScale / tauRatio) *
std::pow(1. / tauRatioMinunsOne, 1. / (1 + tauRatio)) /
710 ( 1 +
std::pow(1. / tauRatioMinunsOne, 1. / (1 + 1 / tauRatio))) ) / (1 + delta);
712 double deltaT =
t - (
t0 - offsetScale * tau1);
713 if (deltaT < 0) deltaT = 0;
718 double expTerm = delta +
std::exp(-deltaT / tau2);
719 double fermiTerm = 1. / (1. +
std::exp(-(
t -
t0) / tau1));
721 double deltaTRefl = deltaT - refldelay;
722 double reflTerm = -reflFrac*amp*
std::exp(-0.5*deltaTRefl*deltaTRefl/reflwidth/reflwidth);
724 return amp * expTerm * fermiTerm /
norm +
C + reflTerm;