Implementing decay time fit with event level resolution function , confusing results

(ROOT version used: 6.20/04 )
I am trying to implement decay time fit with event-level resolution function using Roofit

  • I am doing a fit for the decay time of particle to obtain the lifetime.
  • For the purpose of my question, consider I only have the signal component.
  • so my lifetime pdf is , f(t,dt) = f(dt) X f(t|dt)
  • f(dt) is the pdf for error dt in decay time t.
  • ** f(t|dt) is a convolution of exponential with a gaussian resolution function using event-level errors in decay time.**

Following are the relevant lines of code I am using to implement event-level resolution function by two methods:
(Full fit macro and datasets are attached , see at the end)

Method 1:

 RooRealVar mean("mean","mean",0.0001,-2,0.007);
 RooRealVar sc1("sc1","sc1",1.0,0,2);
 RooGaussModel gauss1("gauss1","gauss",t,mean,sc1,dt); 

 RooDecay decay("decay","lifetime",t,tau,gauss1,RooDecay::SingleSided);


RooRealVar mean("mean","mean",0.0001,-2,0.007); // mean/bias                                                                             
RooRealVar sc1("sc1","sc1",1.0,0,2); // scaling factor   
RooFormulaVar sigma_t("sigma_t","sc1*dt",RooArgList(sc1,dt));
RooGaussModel gauss1("gauss1","gauss",t,mean,sigma_t);

RooDecay decay("decay","lifetime",t,tau,gauss1,RooDecay::SingleSided);

(All the fits are the unbinned maximum likelihood fits)

The results from the above two are very different:

Fit results Method1:
Note the value of lifetime tau and the mean
The value of mean doesn’t make sense as it is expected to be of the same order as lifetime tau.

Fit results Method2:
The value of tau is different by -0.93 X 10-6

What is the correct method and why are the two results different ??
Any feedback will be appreciated

Fit macro for method1: ds_lifetime_1.C (9.1 KB)

Fit macro for method2: ds_lifetime_2.C (9.1 KB)

data files:
signal_2dSR_2.txt (1.5 MB)
signal_2dSR_1.txt (1.5 MB)

@jonas @moneta @StephanH

Sorry for mentioning you directly. But any response will be helpful

1 Like

Apologies: this should have been my job to notify them this week and I failed! I’m sure they will reply now that you pinged them.

1 Like

Hi @amroo - also here, I have invited @moneta and @jonas to help, but due to the Christmas break this might take a bit longer than we’d hope.

1 Like

Thanks, I understand


The correct way of doing it is as in the tutorial ROOT: tutorials/roofit/rf306_condpereventerrors.C File Reference , which it seems to me like your Method1. You should remember to pass also the ConditionalObservable(dt) when calling fitTo.



This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.