ROOT logo
#if 0
TF1 *
TOFsignal(Float_t norm, Float_t mean, Float_t sigma, Float_t tail)
{

  TF1 *f = new TF1("fTOFsignal", "(x <= ([3] + [1])) * [0] * TMath::Gaus(x, [1], [2]) + (x > ([3] + [1])) * [0] * TMath::Gaus([3] + [1], [1], [2]) * TMath::Exp(-([3]) * (x - [3] - [1]) / ([2] * [2]))");

  f->SetParameter(0, norm);
  f->SetParameter(1, mean);
  f->SetParameter(2, sigma);
  f->SetParameter(3, tail);
  f->SetRange(mean - 10. * sigma, mean + 10. * sigma);
  return f;
}
#endif

Double_t
TOFsignal(Double_t *x, Double_t *par)
{
  Double_t norm = par[0];
  Double_t mean = par[1];
  Double_t sigma = par[2];
  Double_t tail = par[3];
  
  if (x[0] <= (tail + mean))
    return norm * TMath::Gaus(x[0], mean, sigma);
  else
    return norm * TMath::Gaus(tail + mean, mean, sigma) * TMath::Exp(-tail * (x[0] - tail - mean) / (sigma * sigma));
}

Double_t
TOFsignal_double(Double_t *x, Double_t *par)
{
  return TOFsignal(x, par) + TOFsignal(x, &par[4]);
}

Double_t
TOFsignal_triple(Double_t *x, Double_t *par)
{
  return TOFsignal(x, par) + TOFsignal(x, &par[4]) + TOFsignal(x, &par[8]);
}

static TF1 *fIntegrand = NULL;
Double_t 
TOFsignal_Integrand(const Double_t *x, const Double_t *par)
{
  Double_t f = TOFsignal(x, par);
  Double_t g = /*TMath::Abs(par[5] - x[0]) < 1.e-1 ? 1. : 0.;*/TMath::Gaus(x[0], par[5], par[4], kTRUE);
  return f * g;
}

Double_t
TOFsignal_convolution(const Double_t *x, const Double_t *par)
{
  if (!fIntegrand)
    fIntegrand = new TF1("fIntegrand", TOFsignal_Integrand, -10., 10., 6);
  fIntegrand->SetParameters(par[0], par[1], par[2], par[3], par[4], x[0]);
  Double_t integral = fIntegrand->Integral(-5. * par[4], 5. * par[4]);
  return integral;
}
 TOFsignal.C:1
 TOFsignal.C:2
 TOFsignal.C:3
 TOFsignal.C:4
 TOFsignal.C:5
 TOFsignal.C:6
 TOFsignal.C:7
 TOFsignal.C:8
 TOFsignal.C:9
 TOFsignal.C:10
 TOFsignal.C:11
 TOFsignal.C:12
 TOFsignal.C:13
 TOFsignal.C:14
 TOFsignal.C:15
 TOFsignal.C:16
 TOFsignal.C:17
 TOFsignal.C:18
 TOFsignal.C:19
 TOFsignal.C:20
 TOFsignal.C:21
 TOFsignal.C:22
 TOFsignal.C:23
 TOFsignal.C:24
 TOFsignal.C:25
 TOFsignal.C:26
 TOFsignal.C:27
 TOFsignal.C:28
 TOFsignal.C:29
 TOFsignal.C:30
 TOFsignal.C:31
 TOFsignal.C:32
 TOFsignal.C:33
 TOFsignal.C:34
 TOFsignal.C:35
 TOFsignal.C:36
 TOFsignal.C:37
 TOFsignal.C:38
 TOFsignal.C:39
 TOFsignal.C:40
 TOFsignal.C:41
 TOFsignal.C:42
 TOFsignal.C:43
 TOFsignal.C:44
 TOFsignal.C:45
 TOFsignal.C:46
 TOFsignal.C:47
 TOFsignal.C:48
 TOFsignal.C:49
 TOFsignal.C:50
 TOFsignal.C:51
 TOFsignal.C:52
 TOFsignal.C:53
 TOFsignal.C:54
 TOFsignal.C:55
 TOFsignal.C:56
 TOFsignal.C:57
 TOFsignal.C:58
 TOFsignal.C:59
 TOFsignal.C:60
 TOFsignal.C:61