Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Classes | Functions
ZDCFitWrapper.h File Reference
#include "CxxUtils/checker_macros.h"
#include <TF1.h>
#include <memory>
Include dependency graph for ZDCFitWrapper.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  ZDCFitWrapper
 
class  ZDCPrePulseFitWrapper
 
class  ZDCPreExpFitWrapper
 
class  ZDCFitExpFermiVariableTaus
 
class  ZDCFitExpFermiVariableTausLHCf
 
class  ZDCFitExpFermiVariableTausRun3
 
class  ZDCFitExpFermiFixedTaus
 
class  ZDCFitExpFermiPrePulse
 
class  ZDCFitExpFermiLHCfPrePulse
 
class  ZDCFitExpFermiPreExp
 
class  ZDCFitExpFermiLHCfPreExp
 
class  ZDCFitExpFermiLinearFixedTaus
 
class  ZDCFitExpFermiLinearPrePulse
 
class  ZDCFitComplexPrePulse
 
class  ZDCFitGeneralPulse
 

Functions

double ZDCFermiExpFit (const double *xvec, const double *pvec)
 
double ZDCFermiExpFitRefl (const double *xvec, const double *pvec)
 

Function Documentation

◆ ZDCFermiExpFit()

double ZDCFermiExpFit ( const double *  xvec,
const double *  pvec 
)
inline

Definition at line 1209 of file ZDCFitWrapper.h.

1210 {
1211  double t = xvec[0];
1212 
1213  double amp = pvec[0];
1214  double t0 = pvec[1];
1215  double tau1 = pvec[2];
1216  double tau2 = pvec[3];
1217  double C = pvec[4];
1218 
1219  double tauRatio = tau2 / tau1;
1220  double tauRatioMinunsOne = tauRatio - 1;
1221 
1222  double norm = (std::pow(1. / tauRatioMinunsOne, 1. / (1 + tauRatio)) /
1223  ( 1 + std::pow(1. / tauRatioMinunsOne, 1. / (1 + 1 / tauRatio))));
1224 
1225  double deltaT = t - t0;
1226  if (deltaT < 0) deltaT = 0;
1227 
1228  double expTerm = std::exp(-deltaT / tau2);
1229  double fermiTerm = 1. / (1. + std::exp(-(t - t0) / tau1));
1230 
1231  return amp * expTerm * fermiTerm / norm + C;
1232 }

◆ ZDCFermiExpFitRefl()

double ZDCFermiExpFitRefl ( const double *  xvec,
const double *  pvec 
)
inline

Definition at line 1234 of file ZDCFitWrapper.h.

1235 {
1236  double t = xvec[0];
1237 
1238  double amp = pvec[0];
1239  double t0 = pvec[1];
1240  double tau1 = pvec[2];
1241  double tau2 = pvec[3];
1242  double C = pvec[4];
1243 
1244  double refldelay = pvec[5];
1245  double reflFrac = pvec[6];
1246  double reflwidth = pvec[7];
1247  double delta = pvec[8];
1248 
1249  double tauRatio = tau2 / tau1;
1250  double tauRatioMinunsOne = tauRatio - 1;
1251 
1252  double norm = std::pow(1. / tauRatioMinunsOne, 1. / (1 + tauRatio)) /
1253  ( 1 + std::pow(1. / tauRatioMinunsOne, 1. / (1 + 1 / tauRatio))) ;
1254 
1255  double deltaT = t - t0;
1256  if (deltaT < 0) deltaT = 0;
1257 
1258  // Note: the small constant added here accounts for the very long tail on the pulse
1259  // which doesn't go to zero over the time range that we sample
1260  //
1261  double expTerm = delta + std::exp(-deltaT / tau2);
1262  double fermiTerm = 1. / (1. + std::exp(-(t - t0) / tau1));
1263 
1264  double deltaTRefl = deltaT - refldelay;
1265  double reflTerm = -reflFrac*amp*std::exp(-0.5*deltaTRefl*deltaTRefl/reflwidth/reflwidth);
1266 
1267  return amp * expTerm * fermiTerm / norm + C + reflTerm;
1268 }
PlotCalibFromCool.norm
norm
Definition: PlotCalibFromCool.py:100
DMTest::C
C_v1 C
Definition: C.h:26
ALFA_EventTPCnv_Dict::t0
std::vector< ALFA_RawData_p1 > t0
Definition: ALFA_EventTPCnvDict.h:42
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
pvec
std::array< fp_t, 2 > pvec
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:9
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15