Esempio n. 1
0
def __find_param(var, input_cats, split_pars_dict, split_cat_pars):
    from P2VV.RooFitWrappers import RooObject
    ws = RooObject.ws()
    split_cats = split_pars_dict.get( ws[ var.GetName() ], set() )
    if not var.isFundamental() :
        split = False
        for splVar, splCats in split_pars_dict.iteritems() :
            if var.dependsOn(splVar) : split = True
            split_cats |= splCats
        if not split : split_cats = set()
    if not split_cats :
        return var
    else :
        catLabels = [(cat.GetName(), cat.getLabel()) for cat in input_cats if cat in split_cats]
        catsStr = ';'.join(lab[1] for lab in catLabels)
        if len(catLabels) > 1 : catsStr = '{' + catsStr + '}'
        from P2VV.Utilities.General import getSplitPar
        splitVar = getSplitPar(var.GetName(), catsStr, split_cat_pars)
        assert splitVar, 'P2VV - ERROR: Bs2Jpsiphi_PdfBuilder: parameter "%s" is set to be constrained for category "%s", but it is not found in PDF'\
               % (var.GetName(), catsStr)
        from ROOT import RooRealVar, RooCategory, RooFormulaVar
        from P2VV.RooFitWrappers import RealVar, Category, FormulaVar
        wrappers = { RooRealVar : RealVar, RooCategory : Category, RooFormulaVar : FormulaVar }
        assert type(splitVar) in wrappers\
               , 'P2VV - ERROR: Bs2Jpsiphi_PdfBuilder: wrapping of RooFit object "%s" of type "%s" not implemented (yet)'\
                 % ( splitVar.GetName(), type(splitVar) )
        return wrappers[ type(splitVar) ]( Name = splitVar.GetName() )
Esempio n. 2
0
rlife2 = RooRealVar("rlife2", "rlife2", 6.07734, 0.1, 10)
gexp2 = RooGExpModel("gexp2", "gexp2", t_diff_st, mean_gexp, sigma_gexp, rlife2, one, one, one, False, RooGExpModel.Flipped)

frac_gexp2 = RooRealVar("frac_gexp2", "frac_gexp2", 0.184357, 0.01, 0.99)
gexps = RooAddPdf("gexps", "gexps", RooArgList(gexp2, gexp1), RooArgList(frac_gexp2))

frac_gexps = RooRealVar("frac_gexps", "frac_gexps", 0.0118392, 0.001, 0.99)
model = RooAddPdf("model", "model", RooArgList(gexps, gaussians), RooArgList(frac_gexps))
model.setParameterizeIntegral(RooArgSet(st))


from P2VV import RooFitDecorators
from ROOT import RooWorkspace
from P2VV.RooFitWrappers import RooObject
obj = RooObject(workspace = 'w')
w = obj.ws()
w.put(model)
w.put(sdata)

from ROOT import TPaveText
if options.momentum_calib:
    year_label = TPaveText(0.71, 0.32, 0.89, 0.45, "NDC")
else:
    year_label = TPaveText(0.71, 0.72, 0.89, 0.85, "NDC")

year_label.SetFillColor(0)
pos = args[0].find('201')
year_label.AddText(args[0][pos : pos + 4])
year_label.SetBorderSize(0)

fitOpts = dict(NumCPU = 8, Timer = 1, Save = True, Minimizer = 'Minuit2', Optimize = 1,