def test_p1xp1_BBsym():
    logger.info(
        'Symmetric non-factorized fit model:  ( Gauss + P1 ) (x) ( Gauss + P1 ) + BBsym'
    )
    sb = ROOT.RooRealVar('sb', 'SB', 0, 10000)
    model = Models.Fit2DSym(
        suffix='_6',
        signal_x=signal1,
        signal_y=signal2s,
        bkg_1x=-1,
        bkg_2D=Models.PolyPos2Dsym_pdf('P2D5', m_x, m_y, n=2),
    )

    ## fit with fixed mass and sigma
    with rooSilent():
        result, frame = model.fitTo(dataset)
        model.signal_x.sigma.release()
        model.signal_y.sigma.release()
        model.signal_x.mean.release()
        model.signal_y.mean.release()
        result, frame = model.fitTo(dataset)
        model.draw1(dataset)
        model.draw2(dataset)

    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:
        logger.info('S1xS2 : %20s' % result(model.SS)[0])
        logger.info('S1xB2 : %20s' % (result(model.SB)[0] / 2))
        logger.info('B1xS2 : %20s' % (result(model.BS)[0] / 2))
        logger.info('B1xB2 : %20s' % result(model.BB)[0])

    models.add(model)
Exemple #2
0
def test_p1xp1_BBs () :
    
    logger.info ('Non-factorized symmetric background fit model:  ( Gauss + P1 ) (x) ( Gauss + P1 ) + BBsym' )
    model   = Models.Fit2D (
        suffix   = '_4' , 
        signal_x = signal1  ,
        signal_y = signal2s ,
        bkg_1x     = -1 , 
        bkg_1y     = -1 ,
        bkg_2D    = Models.PolyPos2Dsym_pdf ( 'P2Ds' , m_x , m_y , n = 2 ) 
        )
    
    ## fit with fixed mass and sigma
    with rooSilent() : 
        result, frame = model. fitTo ( dataset )
        model.signal_x.sigma.release () 
        model.signal_y.sigma.release ()
        model.signal_x.mean .release () 
        model.signal_y.mean .release () 
        result, frame = model. fitTo ( dataset )
        
        
    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 :
        logger.info ('S1xS2 : %20s' % result ( model.SS ) [0] )
        logger.info ('S1xB2 : %20s' % result ( model.SB ) [0] )
        logger.info ('B1xS2 : %20s' % result ( model.BS ) [0] )
        logger.info ('B1xB2 : %20s' % result ( model.BB ) [0] )

    models.add ( model ) 
Exemple #3
0
def test_polypossym2D():

    logger = getLogger('test_polypossym2D')

    logger.info('Test PolyPos2Dsym_pdf: Symmetric positive polynomial')
    model = Models.PolyPos2Dsym_pdf('P2Ds ', m_x, m_y, n=2)

    with rooSilent():
        result, f = model.fitTo(dataset)
    with use_canvas('test_polypossym2D'):
        with wait(1):
            model.draw1(dataset)
        with wait(1):
            model.draw2(dataset)

    result, f = model.fitTo(dataset, silent=True)

    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:
        logger.info('Bernstein Coefficients:\n%s' % model.pars())

    models.add(model)
def test_p1xp1_BBss():
    logger.info(
        'Symmetrised fit model with non-factorized symmetric background:  ( Gauss + P1 ) (x) ( Gauss + P1 ) + BBsym'
    )
    sb = ROOT.RooRealVar('sb', 'SB', 0, 10000)
    model = Models.Fit2D(suffix='_5',
                         signal_1=Models.Gauss_pdf('Gx',
                                                   m_x.getMin(),
                                                   m_x.getMax(),
                                                   mass=m_x),
                         signal_2=Models.Gauss_pdf('Gy',
                                                   m_y.getMin(),
                                                   m_y.getMax(),
                                                   mass=m_y),
                         power1=1,
                         power2=1,
                         bkg2D=Models.PolyPos2Dsym_pdf('P2Ds', m_x, m_y, n=2),
                         sb=sb,
                         bs=sb)

    model.signal1.sigma.fix(m.error())
    model.signal2.sigma.fix(m.error())
    model.signal1.mean.fix(m.value())
    model.signal2.mean.fix(m.value())
    model.signal1.mean.fix(m.value())
    model.signal2.mean.fix(m.value())
    model.bkg1.tau.fix(0)
    model.bkg2.tau.fix(0)

    ## fit with fixed mass and sigma
    with rooSilent():
        result, frame = model.fitTo(dataset)
        model.signal1.sigma.release()
        model.signal2.sigma.release()
        model.signal1.mean.release()
        model.signal2.mean.release()
        result, frame = model.fitTo(dataset)

    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:
        logger.info('S1xS2 : %20s' % result(model.ss)[0])
        logger.info('S1xB2 : %20s' % result(model.sb)[0])
        logger.info('B1xS2 : %20s' % result(model.bs)[0])
        logger.info('B1xB2 : %20s' % result(model.bb)[0])

    models.add(model)
Exemple #5
0
def test_p1xp1_BBss():

    logger = getLogger('test_p1xp1_BBss')

    logger.info(
        'Symmetrised fit model with non-factorized symmetric background:  ( Gauss + P1 ) (x) ( Gauss + P1 ) + BBsym'
    )
    sb = ROOT.RooRealVar('sb', 'SB', 2500, 0, 10000)
    model = Models.Fit2D(suffix='_5',
                         signal_x=signal1,
                         signal_y=signal2s,
                         bkg_1x=-1,
                         bkg_2D=Models.PolyPos2Dsym_pdf('P2Ds', m_x, m_y, n=1),
                         sb=sb,
                         bs=sb)

    model.SS = N_ss
    model.BB = N_bb
    model.SB = 2500

    ## fit with fixed mass and sigma
    with rooSilent(), use_canvas('test_p1xp1_BBss'):
        result, frame = model.fitTo(dataset)
        model.signal_x.sigma.release()
        model.signal_y.sigma.release()
        model.signal_x.mean.release()
        model.signal_y.mean.release()
        result, frame = model.fitTo(dataset)
        with wait(1):
            model.draw1(dataset)
        with wait(1):
            model.draw2(dataset)

        model.draw1(dataset)
        model.draw2(dataset)

    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:
        logger.info('S1xS2 : %20s' % result(model.SS)[0])
        logger.info('S1xB2 : %20s' % result(model.SB)[0])
        logger.info('B1xS2 : %20s' % result(model.BS)[0])
        logger.info('B1xB2 : %20s' % result(model.BB)[0])

    models.add(model)