Problem with fitting extended user-defined P.D.F and RooAddPdf

Hi all,
I tried to define my own p.d.f to fit some data with a model of an exponential decay times a branching component p0 plus a constant background (for example: p0 * exp(-0.5*t) + background) to get the branching ratio p0, assuming that I’ve already known the number of events in the exponential term.

The code I used for fitting is as follows:


    RooRealVar x("x","x",0,10) ;
    RooRealVar nsig("nsig","nsig",80000,0,160000) ;
    RooRealVar nbkg("nbkg","nbkg",5000,0,10000) ;
    RooRealVar p0("p0","p0",0.8,0,1);

    RooGenericPdf signal("signal","signal","p0*exp(-0.5*x)",RooArgSet(p0,x));
    RooPolynomial background("background","background",x,RooArgList());
    RooExtendPdf signalext("signalext","sigalext",signal,nsig) ;

    RooExtendPdf backgroundext("backgroundext","backgroundext",background,nbkg) ;
    RooAddPdf  model("model","model",RooArgList(backgroundext,signalext)) ;

    RooDataSet* data = model.generate(x);
    nsig.setConstant(kTRUE);
    nbkg.setConstant(kTRUE);

    model.fitTo(*data,Extended());
    model.Print();
   TCanvas* c1=new TCanvas("c1","c1",600,600) ;
    c1->cd();
    RooPlot* xframe = x.frame(Title("extended ML fit example")) ;
    data->plotOn(xframe,Name("data"),Binning(1000));
    model.plotOn(xframe);
    gPad->SetLeftMargin(0.15) ; xframe->GetYaxis()->SetTitleOffset(1.4) ; xframe->Draw() ;

Here I’ve tried to fit the toy Monte-Carlo data first.
The result were a wrong value of p0 and a failed fitting status, although I’ve fixed the number of events for both signal and background.

MINUIT WARNING IN HESSE
 ============== Second derivative zero for parameter1
  MNHESS FAILS AND WILL RETURN DIAGONAL MATRIX. 
 FCN=-731997 FROM HESSE     STATUS=FAILED          3 CALLS          30 TOTAL
                     EDM=0    STRATEGY= 1  ERROR MATRIX UNCERTAINTY 100.0 per cent
  EXT PARAMETER                APPROXIMATE     INTERNAL      INTERNAL  
  NO.   NAME      VALUE            ERROR       STEP SIZE       VALUE   
   1  p0           5.71505e-01   3.36588e-01   0.00000e+00   6.43501e-01
                               ERR DEF= 0.5
 EXTERNAL ERROR MATRIX.    NDIM=  25    NPAR=  1    ERR DEF=0.5

Is there anything wrong with my code?

Thanks,

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