ATLAS Offline Software
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 
)

Definition at line 662 of file ZDCFitWrapper.cxx.

663 {
664  static const float offsetScale = 0;
665 
666  double t = xvec[0];
667 
668  double amp = pvec[0];
669  double t0 = pvec[1];
670  double tau1 = pvec[2];
671  double tau2 = pvec[3];
672  double C = pvec[4];
673 
674  double tauRatio = tau2 / tau1;
675  double tauRatioMinunsOne = tauRatio - 1;
676 
677  double norm = ( std::exp(-offsetScale / tauRatio) * std::pow(1. / tauRatioMinunsOne, 1. / (1 + tauRatio)) /
678  ( 1 + std::pow(1. / tauRatioMinunsOne, 1. / (1 + 1 / tauRatio))) );
679 
680  double deltaT = t - (t0 - offsetScale * tau1);
681  if (deltaT < 0) deltaT = 0;
682 
683  double expTerm = std::exp(-deltaT / tau2);
684  double fermiTerm = 1. / (1. + std::exp(-(t - t0) / tau1));
685 
686  return amp * expTerm * fermiTerm / norm + C;
687 }

◆ ZDCFermiExpFitRefl()

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

Definition at line 689 of file ZDCFitWrapper.cxx.

690 {
691  static const float offsetScale = 0;
692 
693  double t = xvec[0];
694 
695  double amp = pvec[0];
696  double t0 = pvec[1];
697  double tau1 = pvec[2];
698  double tau2 = pvec[3];
699  double C = pvec[4];
700 
701  double refldelay = pvec[5];
702  double reflFrac = pvec[6];
703  double reflwidth = pvec[7];
704  double delta = pvec[8];
705 
706  double tauRatio = tau2 / tau1;
707  double tauRatioMinunsOne = tauRatio - 1;
708 
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);
711 
712  double deltaT = t - (t0 - offsetScale * tau1);
713  if (deltaT < 0) deltaT = 0;
714 
715  // Note: the small constant added here accounts for the very long tail on the pulse
716  // which doesn't go to zero over the time range that we sample
717  //
718  double expTerm = delta + std::exp(-deltaT / tau2);
719  double fermiTerm = 1. / (1. + std::exp(-(t - t0) / tau1));
720 
721  double deltaTRefl = deltaT - refldelay;
722  double reflTerm = -reflFrac*amp*std::exp(-0.5*deltaTRefl*deltaTRefl/reflwidth/reflwidth);
723 
724  return amp * expTerm * fermiTerm / norm + C + reflTerm;
725 }
PlotCalibFromCool.norm
norm
Definition: PlotCalibFromCool.py:100
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
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