Ejemplo n.º 1
0
    logger = getLogger(__name__)
# =============================================================================
## make simple test mass
mass = ROOT.RooRealVar('test_mass', 'Some test mass', -3, 3)

## book very simple data set
varset0 = ROOT.RooArgSet(mass)
dataset0 = ROOT.RooDataSet(dsID(), 'Test Data set-0', varset0)

mmin = mass.getMin()
mmax = mass.getMax()

## fill it
m1 = VE(0, 0.1**2)
for i in range(0, 20000):
    mass.setVal(m1.gauss())
    dataset0.add(varset0)

m2 = VE(0, 0.2**2)
for i in range(0, 10000):
    mass.setVal(m2.gauss())
    dataset0.add(varset0)

logger.info('DATASET %s' % dataset0)

models = set()


# =============================================================================
## Single gauss
# =============================================================================
Ejemplo n.º 2
0
## book very simple data set
varset = ROOT.RooArgSet(m_x, m_y)
dataset = ROOT.RooDataSet(dsID(), 'Test Data set-1', varset)

m = VE(3.100, 0.015**2)

N_ss = 5000
N_sb = 500
N_bs = 500
N_bb = 1000

random.seed(0)

## fill it : 5000 events  Gauss * Gauss
for i in range(0, N_ss):
    m_x.value = m.gauss()
    m_y.value = m.gauss()
    dataset.add(varset)

## fill it : 2500 events  Gauss * const
for i in range(0, N_sb):
    m_x.value = m.gauss()
    m_y.value = random.uniform(*m_y.minmax())
    dataset.add(varset)

## fill it : 2500 events  const * Gauss
for i in range(0, N_bs):
    m_x.value = random.uniform(*m_x.minmax())
    m_y.value = m.gauss()
    dataset.add(varset)
Ejemplo n.º 3
0
def test_splot():

    logger = getLogger('test_splot')

    ## make simple test mass
    mass = ROOT.RooRealVar('test_mass', 'Some test mass', 0, 10)
    tau = ROOT.RooRealVar('test_tau', 'Some test tau', 0, 10)

    ## book very simple data set
    varset = ROOT.RooArgSet(mass, tau)
    dataset = ROOT.RooDataSet(dsID(), 'Test Data set', varset)

    mmin, mmax = mass.minmax()
    tmin, tmax = tau.minmax()

    m0 = VE(3, 0.2**2)
    taus = 6
    taub = 0.4
    NS = 5000
    NB = 5000

    ## generate signal
    for i in range(0, NS):
        m = m0.gauss()
        while not mmin < m < mmax:
            m = m0.gauss()
        t = random.expovariate(1. / taus)
        while not tmin < t < tmax:
            t = random.expovariate(1. / taus)
        mass.value = m
        tau.value = t
        dataset.add(varset)

    ## generate background
    for i in range(0, NB):
        m = random.expovariate(1. / 5)
        while not mmin < m < mmax:
            m = random.expovariate(1. / 3)
        t = random.expovariate(1. / taub)
        while not tmin < t < tmax:
            t = random.expovariate(1. / taus)
        mass.value = m
        tau.value = t
        dataset.add(varset)

    logger.info("Original dataset\n%s" % dataset.table(prefix='# '))

    signal = Models.Gauss_pdf('G',
                              xvar=mass,
                              mean=(3, 2, 4),
                              sigma=(0.2, 0.1, 0.5))

    model = Models.Fit1D(signal=signal, background=1)
    model.S = NS
    model.B = NB

    signal.mean.fix(m0.value())
    signal.sigma.fix(m0.error())
    model.fitTo(dataset, silent=True)
    signal.mean.release()
    signal.sigma.release()

    model.fitTo(dataset, silent=True)
    with use_canvas('test_splot'):
        r, f = model.fitTo(dataset, silent=True, draw=True, nbins=50)
    logger.info("Mass fit : fit results\n%s" %
                r.table(title='Mass fit', prefix='# '))

    ## make splot analysis
    model.sPlot(dataset)
    logger.info("Dataset after sPlot\n%s" % dataset.table(prefix='# '))

    ## make signal-weighted dataset
    ds_signal = dataset.makeWeighted('S_sw')

    ## make background-weighted dataset
    ds_bkg = dataset.makeWeighted('B_sw')

    logger.info("Signal-weighted dataset\n%s" % ds_signal.table(prefix='# '))
    logger.info("Background-weighted dataset\n%s" % ds_bkg.table(prefix='# '))

    ##  make exponential fits fot signal and background samples
    TS = Models.Bkg_pdf('TS', xvar=tau, power=0)
    TB = Models.Bkg_pdf('TB', xvar=tau, power=0)

    TS.fitTo(ds_signal, silent=True)
    TS.fitTo(ds_signal, silent=True)
    with use_canvas('test_splot'):
        rS, f = TS.fitTo(ds_signal, silent=True, draw=True, nbins=100)
    logger.info("Tau/signal fit : fit results\n%s" %
                rS.table(title='Tau signal fit', prefix='# '))

    TB.fitTo(ds_bkg, silent=True)
    TB.fitTo(ds_bkg, silent=True)
    with use_canvas('test_splot'):
        rB, f = TB.fitTo(ds_bkg, silent=True, draw=True, nbins=100)
    logger.info("Tau/bkg fit : fit results\n%s" %
                rB.table(title='Tau bkg fit', prefix='# '))

    logger.info("Tau/signal : %28s vs %s" % (abs(1.0 / rS.tau_TS), taus))
    logger.info("Tau/bkg    : %28s vs %s" % (abs(1.0 / rB.tau_TB), taub))
Ejemplo n.º 4
0
else : 
    logger = getLogger ( __name__ )
# =============================================================================
## make simple test mass 
mass     = ROOT.RooRealVar ( 'test_mass' , 'Some test mass' , 3.0 , 3.2 )

## book very simple data set
varset0   = ROOT.RooArgSet  ( mass )
dataset   = ROOT.RooDataSet ( dsID() , 'Test Data set-0' , varset0 )  

mmin , mmax = mass.minmax()

## fill it 
m = VE(3.100,0.015**2)
for i in range(0,1000) :
    mass.value = m.gauss () 
    dataset.add ( varset0 )
for i in range(0,100) :
    mass.value = random.uniform ( *mass.minmax() )
    dataset.add ( varset0 )

logger.info ('DATASET\n%s' % dataset )

NORM  = 1.0 / math.sqrt ( 2.0 * math.pi )
CDF   = Ostap.Math.gauss_cdf

from ostap.fitting.models import Gauss_pdf
pdf   = Gauss_pdf( "G"                               ,
                   xvar  = mass                      , 
                   mean  = ( 3.080 , 3.05  , 3.15  ) ,
                   sigma = ( 0.010 , 0.005 , 0.020 ) ) 
Ejemplo n.º 5
0
    logger = getLogger(__name__)
# =============================================================================
## make simple test mass
mass = ROOT.RooRealVar('test_mass', 'Some test mass', 3.0, 3.2)

## book very simple data set
varset0 = ROOT.RooArgSet(mass)
dataset0 = ROOT.RooDataSet(dsID(), 'Test Data set-0', varset0)

mmin = mass.getMin()
mmax = mass.getMax()

## fill it
m = VE(3.100, 0.015**2)
for i in xrange(0, 5000):
    mass.setVal(m.gauss())
    dataset0.add(varset0)

for i in xrange(0, 500):
    mass.setVal(random.uniform(mass.getMin(), mass.getMax()))
    dataset0.add(varset0)

logger.info('DATASET %s' % dataset0)

models = set()

## signal component
signal_gauss = Models.Gauss_pdf(
    name='Gauss',  ## the name 
    mass=mass,  ## the variable 
    mean=m.value(),  ## mean value (fixed)
Ejemplo n.º 6
0
def test_minuit_weighted () : 

    logger = getLogger ( "test_minuit_weighted" )
    
    ## make simple test variable
    xvar    = ROOT.RooRealVar ( 'test_x' , 'Some test x' , 0 , 10 )
    yvar    = ROOT.RooRealVar ( 'test_y' , 'Some test y' , 0 , 1  )
    ## book very simple data set
    varset  = ROOT.RooArgSet  ( xvar , yvar )
    dataset = ROOT.RooDataSet ( dsID() , 'Test Data set-0' , varset )  
    
    NS = 10000
    NB = 10000
    
    xmin , xmax = xvar.minmax()
    ymin , ymax = yvar.minmax()
    
    ## fill it 
    x = VE(5.0,1**2)
    for i in range(0,NS) :
        xvar.value = x.gauss ()
        y = -1
        while not ymin <= y <= ymax : y = random.expovariate ( 1/0.1 ) 
        yvar.value = y 
        dataset.add ( varset )
    
    for i in range(0,NB) :
        xvar.value = random.uniform ( xmin , xmax ) 
        y = -1
        while not ymin <= y <= ymax : y = random.expovariate ( 1/0.9 ) 
        yvar.value = y 
        dataset.add ( varset   )

    logger.info ('DATASET\n%s' % dataset )

    signal  = Models.Gauss_pdf ('G' , xvar = xvar , mean = ( 4, 6 ) , sigma =   ( 0.5 , 1.5 ) )
    model   = Models.Fit1D ( signal = signal , background = 0 )
    model.S = NS 
    model.B = NB 

    with use_canvas ( "test_minuit_weighted" ) , wait ( 2 ) : 
        r0 , _  = model.fitTo ( dataset , silent = True , draw = False )
        r0 , f0 = model.fitTo ( dataset , silent = True , draw = True  , nbins = 100 )
    
    logger.info ('Fit result\n%s' % r0.table ()  )
    
    ## make splot
    model.sPlot ( dataset )
    dsw =  dataset.makeWeighted ( "S_sw" )
    
    logger.info ('Weighted DATASET\n%s' % dsw )
    
    ## fitting function for the  exponential stuff
    expf = Models.Bkg_pdf ( 'E' , xvar = yvar , power = 0 )

    # ==============================================================================
    ## ROOT/RooFit "feature" @see https://sft.its.cern.ch/jira/browse/ROOT-10668
    if (6,19) <= root_info  < (6,20,6)  :
        expf.tau.SetTitle ( expf.tau.GetName() ) 
        
    rw , fw = expf.fitTo ( dsw , silent = True , draw = False )
    rw , fw = expf.fitTo ( dsw , silent = True , draw = True  , nbins = 50 )
    
    logger.info ('Weighted fit result (incorrect)\n%s' % rw.table ( title = 'incorrect')  )
    
    r2 , f2 = expf.fitTo ( dsw , silent = True , sumw2 = True , draw = False )
    r2 , f2 = expf.fitTo ( dsw , silent = True , sumw2 = True , draw = True  , nbins = 50 )
    
    r2.Print('vvv')
    
    logger.info ('Weighted fit result (SumW2=True)\n%s' % r2.table ( 'SumW2=True')  )
    
    if (6,19) <= root_info :
        with use_canvas ( "test_minuit_weighted" ) , wait ( 2 ) : 
            ra , fa = expf.fitTo ( dsw , asymptotic = True , draw = False , silent = True )
            ra , fa = expf.fitTo ( dsw , asymptotic = True , draw = True  , silent = True , nbins = 50 )
            logger.info ('Weighted fit result (asymptotic=True)\n%s' % ra.table ( 'Asymptotic=True')  )
        
    m = expf.minuit ( dataset = dsw , scale = False , silent = True )
    m.migrad ( 5 )
    rm = m.save() 
    
    logger.info ('MiNUIT fit result (incorrect) \n%s' % rm.table ( title = 'incorrect')  )
    
    ms = expf.minuit ( dataset = dsw , scale = True , silent = True )
    ms.migrad ( 5 )
    rs = ms.save() 
    
    logger.info ('MiNUIT (scale=True) fit result\n%s' % rs.table ( title = 'scaled')  )
Ejemplo n.º 7
0
def test_components_2 () :
    
    ## make simple test mass 
    mass    = ROOT.RooRealVar ( 'test_mass' , 'Some test mass' , 0 , 10 )
    
    ## book very simple data set
    varset  = ROOT.RooArgSet  ( mass )
    dataset = ROOT.RooDataSet ( dsID() , 'Test Data set' , varset )  

    mmin, mmax = mass.minmax()

    ##  two gaussinan signal cmppnent
    N1   = 5000
    m1   = VE(5,0.2**2)
    
    N2   = 5000
    m2   = VE(3,0.3**2)

    ## background exponential components 
    taub = 5.0
    NB   = 5000
    
    ## generate 1st signal 
    for i in range(0,N1) :
        m = m1.gauss ()
        while not mmin < m < mmax : m =  m1.gauss() 
        mass.value = m
        dataset.add  ( varset )

    ## generate 2nd signal 
    for i in range(0,N2) :
        m = m2.gauss ()
        while not mmin < m < mmax : m =  m2.gauss() 
        mass.value = m
        dataset.add  ( varset )
        
    ##  generate background  
    for i in range ( 0,NB) : 
        m = random.expovariate ( 1./ taub )
        while not mmin < m < mmax : m = random.expovariate ( 1./ taub )
        mass.value = m
        dataset.add ( varset )
        
    logger.info ( "Original dataset\n%s" % dataset.table ( prefix = '# ' ) )
        
    signal1 = Models.Gauss_pdf ( 'G1'  , xvar = mass  , mean = ( 5 , 4, 6 ) , sigma = ( 0.2 , 0.1 , 0.3 ) )
    signal2 = Models.Gauss_pdf ( 'G2'  , xvar = mass  , mean = ( 3 , 2, 4 ) , sigma = ( 0.3 , 0.2 , 0.4 ) )

    S1    = ROOT.RooRealVar       ( 'S1' , '1st signal yeild'  , N1          ,  1   , 10000 )  
    ratio = ROOT.RooRealVar       ( 'R'  , 'ratio of S2 to S1' , 1.0*N2 / N1 , 0.05 , 100   )
    S2    = signal1.vars_multiply ( S1 , ratio , name = 'S2' , title = '2ns signal yield'   )

    model = Models.Fit1D( signals = [ signal1 , signal2 ] , background = 1 , S = ( S1 , S2 ) ) 
    
    model.B = NB

    signal1.mean .fix ( m1.value () )
    signal1.sigma.fix ( m1.error () )
    signal2.mean .fix ( m2.value () )
    signal2.sigma.fix ( m2.error () )
    model.fitTo ( dataset , silent = True )
    signal1.mean .release() 
    signal1.sigma.release() 
    signal2.mean .release() 
    signal2.sigma.release() 

    model.fitTo ( dataset , silent = True )
    r , f = model.fitTo ( dataset , silent = True , draw = True , nbins = 50 )
    logger.info ( "Mass fit : fit results\n%s" % r.table ( title = 'Mass fit' , prefix = '# ' ) )

    r , f = model.fitTo ( dataset , silent = True , draw = True , nbins = 50 , minos = ('R','S1') )
    logger.info ( "Mass fit : fit results\n%s" % r.table ( title = 'Mass fit' , prefix = '# ' ) )
Ejemplo n.º 8
0
## book very simple data set
varset = ROOT.RooArgSet(m_x, m_y)
dataset = ROOT.RooDataSet(dsID(), 'Test Data set-1', varset)

m = VE(3.100, 0.015**2)

N_ss = 5000
N_sb = 2500
N_bs = 2500
N_bb = 5000

random.seed(0)

## fill it : 5000 events  Gauss * Gauss
for i in xrange(0, N_ss):
    m_x.setVal(m.gauss())
    m_y.setVal(m.gauss())
    dataset.add(varset)

## fill it : 2500 events  Gauss * const
for i in xrange(0, N_sb):
    m_x.setVal(m.gauss())
    m_y.setVal(random.uniform(m_y.getMin(), m_y.getMax()))
    dataset.add(varset)

## fill it : 2500 events  const * Gauss
for i in xrange(0, N_bs):
    m_x.setVal(random.uniform(m_x.getMin(), m_x.getMax()))
    m_y.setVal(m.gauss())
    dataset.add(varset)
Ejemplo n.º 9
0
def test_fitting_in_range_2d():

    logger = getLogger('test_fitting_in_range_2d')
    ## make simple test mass
    m_x = ROOT.RooRealVar('m_x', 'Some test mass(X)', 0, 5)
    m_y = ROOT.RooRealVar('m_y', 'Some test mass(Y)', 6, 10)

    ## book very simple data set
    varset = ROOT.RooArgSet(m_x, m_y)
    dataset = ROOT.RooDataSet(dsID(), 'Test Data set-1', varset)

    m1 = VE(3, 0.10**2)
    m2 = VE(7, 0.10**2)

    ## fill it with three gausissians, 5k events each
    N_ss = 5000
    N_sb = 1000
    N_bs = 500
    N_bb = 100

    random.seed(0)

    ## S x S
    for i in range(N_ss):
        m_x.value = m1.gauss()
        m_y.value = m2.gauss()
        dataset.add(varset)

    ## S x B
    for i in range(N_sb):
        m_x.value = m1.gauss()
        m_y.value = random.uniform(*m_y.minmax())
        dataset.add(varset)

    ## B x S
    for i in range(N_bs):
        m_x.value = random.uniform(*m_x.minmax())
        m_y.value = m2.gauss()
        dataset.add(varset)

    ## B x B
    for i in range(N_bb):
        m_x.value = random.uniform(*m_x.minmax())
        m_y.value = random.uniform(*m_y.minmax())
        dataset.add(varset)

    logger.info('Dataset:\n%s' % dataset.table(prefix='# '))

    ## various fit components
    signal_x1 = Models.Gauss_pdf('G1x',
                                 xvar=m_x,
                                 mean=m1.value(),
                                 sigma=m1.error())
    signal_y1 = Models.Gauss_pdf(name='G1y',
                                 xvar=m_y,
                                 mean=m2.value(),
                                 sigma=m2.error())

    bkg_x = make_bkg(-1, 'Bx', m_x)
    bkg_y = make_bkg(-1, name='By', xvar=m_y)

    ## build fit model
    model = Models.Fit2D(name='fit_comp',
                         signal_x=signal_x1,
                         signal_y=signal_y1,
                         bkg_1x=bkg_x,
                         bkg_1y=bkg_y)
    model.SS = N_ss
    model.SB = N_sb
    model.BS = N_bs
    model.BB = N_bb

    r = model.fitTo(dataset, silent=True)
    r = model.fitTo(dataset, silent=True)

    dataset.m_y.setRange('fit', 8, 10.)
    model.yvar.setRange('fit', 8, 10.)

    with use_canvas('test_fitting_in_range_2d'):
        with wait(2):
            model.draw1(dataset, nbins=200, in_range=(6, 8))
        with wait(2):
            model.draw1(dataset, nbins=200, in_range='fit')

    dataset.m_x.setRange('fit2', 0, 2.5)
    model.xvar.setRange('fit2', 0, 2.5)

    with use_canvas('test_fitting_in_range_2d'):
        with wait(2):
            model.draw2(dataset, nbins=200, in_range=(2.5, 5))
        with wait(2):
            model.draw2(dataset, nbins=200, in_range='fit2')
Ejemplo n.º 10
0
## fill it with three gausissians, 5k events each
N_sss = 5000
N_ssb = 5000
N_sbs = 5000
N_sbb = 1000

N_bss = 500
N_bsb = 100
N_bbs = 100
N_bbb = 250

random.seed(0)

## fill it : 5000 events  Gauss * Gauss *Gauss
for i in range(0, N_sss):
    m_x.value = m1.gauss()
    m_y.value = m2.gauss()
    m_z.value = m3.gauss()
    dataset.add(varset)

## fill it : 500 events  Gauss * const * Gauss
for i in range(0, N_ssb):
    m_x.value = m1.gauss()
    m_y.value = random.uniform(*m_y.minmax())
    m_z.value = m3.gauss()

    dataset.add(varset)

## fill it : 500 events  const * Gauss * Gauss
for i in range(0, N_sbs):
    m_x.value = random.uniform(*m_x.minmax())
Ejemplo n.º 11
0
def test_fitting_in_range_3d():

    logger = getLogger('test_fitting_in_range_3d')

    ## make simple test mass
    m_x = ROOT.RooRealVar('m_x', 'Some test mass(X)', 0, 5)
    m_y = ROOT.RooRealVar('m_y', 'Some test mass(Y)', 6, 10)
    m_z = ROOT.RooRealVar('m_z', 'Some test mass(z)', 10, 15)

    ## book very simple data set
    varset = ROOT.RooArgSet(m_x, m_y, m_z)
    dataset = ROOT.RooDataSet(dsID(), 'Test Data set-1', varset)

    m1 = VE(3, 0.10**2)
    m2 = VE(7, 0.10**2)
    m3 = VE(12, 0.10**2)

    N_sss = 5000
    N_ssb = 5000
    N_sbs = 5000
    N_sbb = 1000

    N_bss = 500
    N_bsb = 100
    N_bbs = 100
    N_bbb = 250

    random.seed(0)

    ## S x S x S
    for i in range(N_sss):
        m_x.value = m1.gauss()
        m_y.value = m2.gauss()
        m_z.value = m3.gauss()
        dataset.add(varset)

    ## S x S x B
    for i in range(N_ssb):
        m_x.value = m1.gauss()
        m_y.value = m2.gauss()
        m_z.value = random.uniform(*m_z.minmax())
        dataset.add(varset)

    ## S x B x S
    for i in range(N_sbs):
        m_x.value = m1.gauss()
        m_y.value = random.uniform(*m_y.minmax())
        m_z.value = m3.gauss()
        dataset.add(varset)

    ## B x S x S
    for i in range(N_bss):
        m_x.value = random.uniform(*m_x.minmax())
        m_y.value = m2.gauss()
        m_z.value = m3.gauss()
        dataset.add(varset)

    ## S x B x B
    for i in range(N_sbb):
        m_x.value = m1.gauss()
        m_y.value = random.uniform(*m_y.minmax())
        m_z.value = random.uniform(*m_z.minmax())
        dataset.add(varset)

    ## B x S x B
    for i in range(N_bsb):
        m_x.value = random.uniform(*m_x.minmax())
        m_y.value = m2.gauss()
        m_z.value = random.uniform(*m_z.minmax())
        dataset.add(varset)

    ## B x B x S
    for i in range(N_bbs):
        m_x.value = random.uniform(*m_x.minmax())
        m_y.value = random.uniform(*m_y.minmax())
        m_z.value = m3.gauss()
        dataset.add(varset)

    ## B x B x B
    for i in range(N_bbb):
        m_x.value = random.uniform(*m_x.minmax())
        m_y.value = random.uniform(*m_y.minmax())
        m_z.value = random.uniform(*m_z.minmax())
        dataset.add(varset)

    logger.info('Dataset:\n%s' % dataset.table(prefix='# '))

    signal_x1 = Models.Gauss_pdf('G1x',
                                 xvar=m_x,
                                 mean=m1.value(),
                                 sigma=m1.error())
    signal_y1 = Models.Gauss_pdf(name='G1y',
                                 xvar=m_y,
                                 mean=m2.value(),
                                 sigma=m2.error())
    signal_z1 = Models.Gauss_pdf(name='G1z',
                                 xvar=m_z,
                                 mean=m3.value(),
                                 sigma=m3.error())

    bkg_x = make_bkg(-1, 'Bx', m_x)
    bkg_y = make_bkg(-1, name='By', xvar=m_y)
    bkg_z = make_bkg(-1, name='Bz', xvar=m_z)

    model = Models.Fit3D(
        name='fit_comp',
        signal_x=signal_x1,
        signal_y=signal_y1,
        signal_z=signal_z1,
        bkg_1x=bkg_x,
        bkg_1y=bkg_y,
        bkg_1z=bkg_z,
    )

    model.SSS = N_sss
    model.SSB = N_ssb
    model.SBS = N_sbs
    model.BSS = N_bss
    model.SBB = N_sbb
    model.BSB = N_bsb
    model.BBS = N_bbs
    model.BBB = N_bbb

    r = model.fitTo(dataset, silent=True)
    r = model.fitTo(dataset, silent=True)

    dataset.m_y.setRange('fit', 6, 8.)
    model.yvar.setRange('fit', 6, 8.)

    t = 1.0

    with use_canvas('test_fitting_in_range_3d'):
        with wait(t):
            model.draw1(dataset,
                        nbins=200,
                        in_range3=(11, 12),
                        in_range2=(8, 10))
        with wait(t):
            model.draw1(dataset,
                        nbins=200,
                        in_range3=(11, 12),
                        in_range2='fit')
        with wait(t):
            model.draw1(dataset, nbins=200, in_range3=(11, 12))
        with wait(t):
            model.draw1(dataset, nbins=200, in_range2='fit')

    dataset.m_x.setRange('fit2', 2.5, 3.)
    model.xvar.setRange('fit2', 2.5, 3.)

    with use_canvas('test_fitting_in_range_3d'):
        with wait(t):
            model.draw2(dataset,
                        nbins=200,
                        in_range3=(11, 12),
                        in_range1=(0, 3))
        with wait(t):
            model.draw2(dataset,
                        nbins=200,
                        in_range3=(11, 12),
                        in_range1='fit2')
        with wait(t):
            model.draw2(dataset, nbins=200, in_range3=(11, 12))
        with wait(t):
            model.draw2(dataset, nbins=200, in_range1='fit2')

    dataset.m_x.setRange('fit3', 2.5, 3.)
    model.xvar.setRange('fit3', 2.5, 3.)

    with use_canvas('test_fitting_in_range_3d'):
        with wait(t):
            model.draw3(dataset, nbins=200, in_range2=(6, 8), in_range1=(0, 3))
        with wait(t):
            model.draw3(dataset, nbins=200, in_range2=(6, 8), in_range1='fit3')
        with wait(t):
            model.draw3(dataset, nbins=200, in_range2=(6, 8))
        with wait(t):
            model.draw3(dataset, nbins=200, in_range1='fit3')