42 TString zdcConf(path);
43 zdcConf +=
"/ZdcRecConfig.conf";
47 ATH_MSG_INFO(
"ZdcC calibration LG " << env.GetValue(
"ZdcCCalibrationLG",
"1.;1.;1.;1."));
49 return StatusCode::SUCCESS;
57 << module.zdcSide() <<
" "
58 << module.zdcType() <<
" "
59 << module.zdcModule() <<
" "
60 << module.zdcChannel()
64 return StatusCode::SUCCESS;
72 return StatusCode::FAILURE;
75 for (
const auto zdcModule : moduleContainer)
79 return StatusCode::SUCCESS;
87 return StatusCode::FAILURE;
95 return StatusCode::SUCCESS;
100 size_t nsamp = adc.size();
101 float presamp = adc.at(0);
102 unsigned short max_adc = 0;
104 for (
size_t i = 0;i<nsamp;i++)
112 amp = max_adc - presamp;
113 time = max_index*deltaT;
128 size_t nsamp = adc.size();
129 float presamp = adc.at(0);
130 unsigned short max_adc = 0;
131 for (
size_t i = 0;i<nsamp;i++)
133 if (adc.at(i)>max_adc)
137 g.SetPoint(i,i*deltaT,adc.at(i)-presamp);
139 double timeScale = deltaT/12.5;
140 m_tf1FermiExpFit->SetParameters(max_adc-presamp,30*timeScale, 2.5*timeScale, 25*timeScale);
145 g.Fit(
"FermiExpFit",
"QWR",
"");
154 size_t nsamp = adc.size();
155 float presamp = adc.at(0);
157 for (
size_t i = 0;i<nsamp;i++)
173 for (
int isamp = 0;isamp<7;isamp++)
175 double arg = (t - isamp*T)/T;
178 ret +=
pvec[isamp+1] * std::sin(TMath::Pi()*arg)/(TMath::Pi()*arg);
186 const float offsetScale = 3;
190 double amp =
pvec[0];
192 double tau1 =
pvec[2];
193 double tau2 =
pvec[3];
195 double tauRatio = tau2/tau1;
196 double tauRatioMinunsOne = tauRatio - 1;
198 double norm = ( std::exp(-offsetScale/tauRatio)*
pow(1./tauRatioMinunsOne, 1./(1 + tauRatio))/
199 ( 1 +
pow(1./tauRatioMinunsOne, 1./(1 + 1/tauRatio))) );
201 double deltaT = t - (
t0 - offsetScale*tau1);
202 if (deltaT < 0) deltaT = 0;
204 double expTerm = std::exp(-deltaT/tau2);
205 double fermiTerm = 1./(1. + std::exp(-(t -
t0)/tau1));
207 return amp*expTerm*fermiTerm/norm;
#define ATH_CHECK
Evaluate an expression and check for errors.
constexpr int pow(int base, int exp) noexcept
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ServiceHandle< StoreGateSvc > & evtStore()
double SincInterp(const double *xvec, const double *pvec)
double FermiExpFit(double *xvec, double *pvec)
ZdcModuleContainer_v1 ZdcModuleContainer