Getting integral of fitted pdf

Dear Experts

  I want to get the integral of a fitted pdf. I was doing like

RooAbsReal *frac2 = pdfV.createIntegral(mass);
cout<<(frac2->getVal())<<endl;


It returns value in fraction ~0.75. if it is over full range it should not be 1? If not then 75% of what?

If I want to get the number of events in RooDataSet (in a full and sub-range), how I can do it?

Thanks for your help

Regards-Sunil

Hi Sunil,

If you want to calculate the fraction of a normalized pdf in a certain range in your
observable ‘mass’ you should do the following

mass.setRange(“signal”,lowVal,highVal) ;

then

RooAbsReal* fracInt = pdf.createIntegral(mass,mass,“signal”) ;

Note that in this invocation mass appears twice (once as spefication as normalization
observable and once as specification of integration observable). If you specify
the observable just once in createIntegral() your integrate a unnormalized pdf
expression, which you cannot interpret as a fraction.

Wouter

Hi Wouter

Thanks for your reply. Is it possible to get integral of pdf in term of number of events instead of fraction. Is it correct to multiply this fraction with total number of events in data? Please suggest a way to calculate the number of events in subrange of RooDataSet.

Thanks

Regards-Sunil

Hi Sunil,

A pdf is always in terms of probabilities, not in terms of event counts. To get an event count you can multiply the total event count associated with that pdf with the fraction.

For dataset you can use

data->sumEntries(const char* cutSpec, const char* cutRange=0)

e.g.

data->sumEntries(0,“signal”)

to find the number of tevents in that dataset that are in the named range “signal”.

Wouter