Example #1
0
#                                         mean   = 3.096 )   

# signal = Models.Needham_pdf ( 'Nh'           ,
#                              mass   = m_psi ,
#                              sigma  = 0.013 , 
#                              mean   = 3.096 )   


## 2b) create the  background : exponential times 1st order polymonial  

bkg   = Models.Bkg_pdf  ( 'B'  , mass = m_psi , power = 1 )


##  2c) create the model

model = Models.Fit1D ( signal     = signal ,
                       background = bkg    )  


## 3) try to fit:

r,f = model.fitTo  ( data , silence = True , ncpu = 8 ) 

signal .mean .release()
signal .sigma.release()

r,f = model.fitTo  ( data , ncpu = 8 , draw = True , silence = True ) 



## 
## signal0 = Models.Gauss_pdf ( 'G'           ,
Example #2
0
    def FitHisto(self, fit_methods, histo):
        """Fit Histogram for all fit_methods.

        The result is stored in a AnnaResult

        Arguments:
            fit_methods {list} -- fit configuration string
            histo {TH1} -- histo to be fitted

        Returns:
            list -- contains all the AnnaResults
        """

        try:
            assert histo is not None
        except AssertionError:
            error("Cannot get histo")
            return None

        subresult_list = list()
        print(""" \n========= > Fit histo {} < ========= """.format(
            histo.GetName()))

        for i, fit_method in enumerate(fit_methods):
            # Get the fit configuration
            for key in self._fit_key.keys():
                self._fit_key[key] = None
            self.DecodeFitType(fit_method)

            # Redefine the fit range to the histo boundaries
            hmin = histo.GetXaxis().GetXmin()
            hmax = histo.GetXaxis().GetXmax()
            if 'range' in self._fit_key.keys():
                if self._fit_key['range'] is not None:
                    print self._fit_key['range']
                    hmin = float(min(self._fit_key['range'].split(';')))
                    hmax = float(max(self._fit_key['range'].split(';')))

            fit_range = ROOT.RooRealVar(histo.GetXaxis().GetName(),
                                        histo.GetXaxis().GetTitle(), hmin,
                                        hmax)

            # get PDF and create fit model
            signal = self.CreateSignalPDF(fit_range)
            if signal is None:
                continue
            background = self.CreateBackgroundPDF(fit_range)
            if background is None:
                continue

            # return None
            model = Models.Fit1D(signal=signal, background=background)

            data = ROOT.RooDataHist(histo.GetName(), histo.GetTitle(),
                                    ROOT.RooArgList(fit_range), histo)

            print(" \n------- > with {} + {} (weight = {} ) \n".format(
                self._fit_key['signal'], self._fit_key['bkgr'],
                self._fit_key['weight']))

            result, frame = model.fitTo(data,
                                        silent=False,
                                        draw=True,
                                        refit=True,
                                        ncpu=8)
            debug("{}".format(result))

            # Create the AnnaResult
            sr_name = "{}_{}".format(fit_method, histo.GetName())
            sr = AnnaResult(name=sr_name, title=histo.GetTitle(), histo=histo)
            sr.weigth = self._fit_key['weight']
            sr.frame = frame
            for key in result.parameters().keys():
                sr.Set(key, result(key)[0].value(), result(key)[0].error())
            sr.Set("FitResult", result.status(), 0., 0.)
            sr.Set("CovMatrixStatus", result.covQual(), 0., 0.)

            subresult_list.append(sr)

        return subresult_list
Example #3
0
# =============================================================================
## gauss PDF
# =============================================================================
logger.info('Test Gauss_pdf')
signal_gauss = Models.Gauss_pdf(name='Gauss', mass=mass)

signal_gauss.mean.setVal(m.value())
signal_gauss.sigma.setVal(m.error())

models.append(signal_gauss)
# =============================================================================
## Gauss PDF
# =============================================================================
model_gauss = Models.Fit1D(signal=signal_gauss,
                           background=Models.Bkg_pdf('BkgGauss',
                                                     mass=mass,
                                                     power=0))
model_gauss.background.tau.fix(0)

with rooSilent():
    result, frame = model_gauss.fitTo(dataset0)
    result, frame = model_gauss.fitTo(dataset0)

if 0 != result.status() or 3 != result.covQual():
    logger.warning('Fit is not perfect MIGRAD=%d QUAL=%d ' %
                   (result.status(), result.covQual()))
    print result
else:
    print 'Signal & Background are: ', result('S')[0], result('B')[0]
    print 'Mean   & Sigma      are: ', result('mean_Gauss')[0], result(
        'sigma_Gauss')[0]
Example #4
0
mK = 0.49369
mPion = 0.1396

bw = cpp.Gaudi.Math.Phi0(1.0195, 0.0043, mK)

signal = Models.BreitWigner_pdf('BW0',
                                bw,
                                mass=m_phi,
                                gamma=0.0043,
                                mean=1.0195,
                                convolution=0.0015)

## Phase space as background:
ps = cpp.Gaudi.Math.PhaseSpaceNL(2 * mK, 10.0, 2, 5)
bkg = Models.PSPol_pdf('PS0', mass=m_phi, phasespace=ps, power=1)

f2 = cpp.Gaudi.Math.Flatte2(0.980, 165, 4.21, mPion, mPion, mK, mK)

flatte = Models.Flatte2_pdf('F20', f2, mass=m_phi, m0_980=1.000, m0g1=0.165)

flatte.mean.fix(0.980)

model = Models.Fit1D(signal=signal, othersignals=[flatte], background=bkg)

model.S.fix(10000)
model.B.fix(5000)
model.S_1.fix(5000)

data = model.pdf.generate(varset, 20000)
Example #5
0
model0.ss.fix(1000)
model0.sb.fix(300)
model0.bs.fix(300)
model0.bb.fix(300)

model1 = Models.Fit2D(
    signal_1=sigB,
    signal_2=sigPhi,
    ##
    bkg2=Models.PSPol_pdf('PSP', m_phi, ps2, power=1),
    bkgB=Models.PSPol_pdf('PSB', m_phi, ps2, power=1),
)

model_phi = Models.Fit1D(signal=sigPhi,
                         background=Models.PSPol_pdf('PSQ',
                                                     m_phi,
                                                     ps2,
                                                     power=1),
                         suffix='_P')

model_B = Models.Fit1D(signal=sigB,
                       background=Models.Bkg_pdf('BB', m_b, power=1),
                       suffix='_B')

varset = ROOT.RooArgSet(m_b, m_phi)
dataset = model0.pdf.generate(varset, 1900)

## 2D fits
with rooSilent():
    r, u = model1.fitTo(dataset)
    r, u = model1.fitTo(dataset)
Example #6
0

from    OstapTutor.TestVars1   import m_psi,m_ups
import  Ostap.FitModels        as     Models

signal_psi = Models.CB2_pdf('Jpsi' ,
                            mass  = m_psi ,
                            sigma = 0.013 ,
                            mean  = 3.096 )
signal_psi.aL.fix(1.8)
signal_psi.aR.fix(1.8)
signal_psi.nL.fix(1.8)
signal_psi.nR.fix(1.8)

## define model for J/psi
model_psi = Models.Fit1D(  signal      = signal_psi ,
                           background  = Models.Bkg_pdf  ( 'BJpsi'  , mass = m_psi ) )

##  define the model for Y 
model_Y   = Models.Manca2_pdf ( m_ups , power = 0    , 
                                m1s    = 9.4539e+00  ,
                                sigma  = 4.03195e-02 )

model_Ypsi = Models.MancaX_pdf ( model_Y      ,
                                 signal_psi   ,
                                 suffix  = '' ) 

  
# ==========================================================================================
# The END 
# ==========================================================================================
Example #7
0
signal_Dp = Models.Dp_pdf(mass=m_Dp,
                          name='Dp',
                          mean=1.8711e+00,
                          sigma=7.1183e-03)

signal_Ds = Models.Ds_pdf(mass=m_Ds,
                          name='Ds',
                          mean=1.9699e+00,
                          sigma=6.0178e-03)

signal_Lc = Models.Lc_pdf(mass=m_Lc,
                          name='Lc',
                          mean=2.2884e+00,
                          sigma=5.1856e-03)

model_D0 = Models.Fit1D(signal=signal_D0, bpower=1)
model_Dp = Models.Fit1D(signal=signal_Dp, bpower=1)
model_Ds = Models.Fit1D(signal=signal_Ds, bpower=1)
model_Lc = Models.Fit1D(signal=signal_Lc, bpower=1)

model_Y0 = Models.Manca_pdf(m_ups, power=1, name='Y0')

model_Y1 = Models.Manca2_pdf(m_ups,
                             power=2,
                             name='Y1',
                             m1s=9.4539e+00,
                             sigma=4.03195e-02)

model_Y2 = Models.Manca2_pdf(m_ups,
                             power=1,
                             name='Y2',