Fractions in extended fit

Dear RooFit-Savants,

For an efficiency measurement we perform an extended fit [workspace contents printed at the end of the post]. Our PDF is the sum of a Gaussian and a CB, which we fit without constraints in MC. And obtain a value for the fraction of events of peak1 versus peak2. Now we want to fit the data, but keeping the fraction of events below each peak constant. Our initial naive implementation basically just froze the fraction parameter (cPass) in the sum of the two peak pdf’s:

This however, seems to not fix the fraction of events in “signalTailPass” versus “signal1Pass”. Thus the question: How do we perform an extended fit with fixed fractions?

The manual and google haven’t been too helpful so far, so any pointer to material elucidating the issue would be of help.

Cheers
Philip

RooWorkspace()  contents

variables
---------
(TmeanF,TmeanP,TsigmaF,TsigmaP,_efficiencyCategory_,alphaF,alphaFail,alphaP,alphaPass,betaFail,betaPass,cFail,cPass,efficiency,gammaFail,gammaP,gammaPass,mass,massP,meanF,meanP,nF,nP,numBackgroundFail,numBackgroundPass,numSignalAll,passingALL,peakFail,peakPass,probe_Ele_abseta,probe_Ele_pt,sigmaF,sigmaF_2,sigmaP,sigmaP_2,signalFractionInPassing)

p.d.f.s
-------
RooCMSShape::backgroundFail[ x=mass alpha=alphaFail beta=betaFail gamma=gammaFail peak=peakFail ] = 1.21353
RooCMSShape::backgroundPass[ x=mass alpha=alphaPass beta=betaPass gamma=gammaPass peak=peakPass ] = 5.19998
RooAddPdf::pdfFail[ numSignalFail * signalFail + numBackgroundFail * backgroundFail ] = 1.05865
RooAddPdf::pdfPass[ numSignalPass * signalPass + numBackgroundPass * backgroundPass ] = 0.578354
RooFFTConvPdf::signal1Fail[ signalBWFail(mass) (*) signalResFail(mass) ] = 0.0135033
RooFFTConvPdf::signal1Pass[ signalBWPass(mass) (*) signalResPass(mass) ] = 0.00820698
RooBreitWigner::signalBWFail[ x=mass mean=massP width=gammaP ] = 0.00805569
RooBreitWigner::signalBWPass[ x=mass mean=massP width=gammaP ] = 0.00805569
RooAddPdf::signalFail[ cFail * signalTailFail + [%] * signal1Fail ] = 0.874399
RooAddPdf::signalPass[ cPass * signalTailPass + [%] * signal1Pass ] = 0.544334
RooCBExGaussShape::signalResFail[ m=mass  m0=meanF  sigma=sigmaF  alpha=alphaF  n=nF  sigma_2=sigmaF_2 ] = 2.08269e-138
RooCBExGaussShape::signalResPass[ m=mass  m0=meanP  sigma=sigmaP  alpha=alphaP  n=nP  sigma_2=sigmaP_2 ] = 0
RooGaussian::signalTailFail[ x=mass mean=TmeanF sigma=TsigmaF ] = 0.855308
RooGaussian::signalTailPass[ x=mass mean=TmeanP sigma=TsigmaP ] = 0.576384
RooSimultaneous::simPdf[ indexCat=_efficiencyCategory_ Failed=pdfFail Passed=pdfPass ] = 0.24578

functions
--------
RooFormulaVar::numSignalFail[ actualVars=(efficiency,numSignalAll) formula="(1-efficiency)*numSignalAll" ] = 13807.4
RooFormulaVar::numSignalPass[ actualVars=(efficiency,numSignalAll) formula="efficiency*numSignalAll" ] = 99260.3

Hi,
Have you tried setting the fraction parameter class to constant in the fit ?

Lorenzo