Calculating pull and residual

Dear experts,

I am trying to calculate the pull distribution to test the bias in my fit .
To calculate pull I am using the ROOT default pull description. I am using

  RooMCStudy* mcstudy = new RooMCStudy(final_pdf,RooArgSet(mbc,deltae,helicity,nb),FitModel(fit_pdf));

mcstudy->generateAndFit(100,206) ;

RooPlot* frame1 = mcstudy->plotParam(nsig,Bins(40)) ;
RooPlot* frame2 = mcstudy->plotError(nsig,Bins(40)) ;
RooPlot* frame3 = mcstudy->plotPull(nsig,Bins(40),FitGauss(kTRUE)) ;

where final_pdf is my final pdf in which I fix signal parameters to montecarlo values, background parameters also I kept fixed. The values I use that I oblained from my real data fit and the signal and background yields also I keep fixed.

In my fit_pdf I use the fit model that I uae for my real data fit. I fix signal parameters to my MC value in that also.
Background parameters I keep floated, initial parameters to MC values. The signal and background yields I keep floated.

Please tell me whether the procedure is correct.

Also, I have seen that the description of pull is

yield_meas - yield_true/ Error_yield

But in the root default case, the description goes like this :

if (meas.hasAsymError()) {
Double_t delta = _meas-_true ;
if (delta<0) {
return delta/meas.getAsymErrorHi() ;
} else {
return -delta/meas.getAsymErrorLo() ;
} else if (meas.hasError()) {
return (_meas-_true)/meas.getError() ;
} else {
return 0 ;

I don’t understand the Asymerror part.
When this part will contribute ? Please explain. Also please tell whether I am calculating pull correctly.

I find that people when they calculate pull manually they just do the meas -true/ error part only.
Also please tell how I will plot residual .

With regards,