# set values of split parameters
        for par, vals in tResPars.iteritems() :
            for cat, val in vals.iteritems() : ws[ par + '_' + cat ].setVal(val)
        for par, vals in SWaveAmps.iteritems() :
            for cat, val in vals.iteritems() : ws[ par + '_' + cat ].setVal(val)

    else :
        pdf = protoPdf

if parFileIn :
    # read parameter values from file
    from P2VV.Parameterizations.FullPDFs import PdfConfiguration
    pdfConfig = PdfConfiguration()
    pdfConfig.readParametersFromFile( filePath = parFileIn )
    pdfConfig.setParametersInPdf(pdf)


###########################################################################################################################################
## compute angular efficiency moments ##
########################################

# print PDF, data, variables and parameters
print '\nData set:'
data.Print()

if normPdf :
    print '\nPDF:'
    pdf.Print()
    print '\nIntegration set for PDF:'
    for var in intSet : print var.GetName(),
        sWeightMassPdf.indexCat().setIndex( splitCat.getVal() )
        KKState = observables['KKMassCat'].getLabel()
        for it, parName in enumerate(constSplitPars) :
            par = getSplitPar( parName, KKState, massPdfPars )
            par.setVal( constSplitVals[KKState][it] )

if parFileIn or parFileOut :
    # create PDF configuration object
    from P2VV.Parameterizations.FullPDFs import PdfConfiguration as PdfConfig
    pdfConfig = PdfConfig()

print 120 * '='
if parFileIn :
    # read parameters from file
    pdfConfig.readParametersFromFile( filePath = parFileIn )
    pdfConfig.setParametersInPdf(sWeightMassPdf)
print 'P2VV - INFO: createBs2JpsiKKDataSet: observables in mass PDF:'
massPdfObs.Print('v')
print 'P2VV - INFO: createBs2JpsiKKDataSet: parameters in mass PDF:'
massPdfPars.Print('v')

# determine mass parameters with a fit
print 'P2VV - INFO: createBs2JpsiKKDataSet: fitting mass PDF'
simMassFitResult = sWeightMassPdf.fitTo( preDataSet, Save = True, SumW2Error = False, NumCPU = args.numCPU, Optimize = 1, Timer = True
                                        , Minimizer = 'Minuit2', Strategy = 1, Offset = True, Hesse = runHesse, Minos = minosPars )
simMassFitResult.PrintSpecial( text = True )

if parFileOut :
    # write parameters to file
    pdfConfig.getParametersFromPdf( sWeightMassPdf, preDataSet )
    pdfConfig.writeParametersToFile( filePath = parFileOut )
示例#3
0
simMassPdf = SimultaneousPdf(  massPdf.GetName() + '_simul'
                             , MasterPdf       = massPdf
                             , SplitCategories = [ pars[1] for pars in splitPars ]
                             , SplitParameters = [ pars[0] for pars in splitPars ]
                            )
massPdfObs  = simMassPdf.getObservables(dataSet)
massPdfPars = simMassPdf.getParameters(dataSet)

# create PDF configuration object
from P2VV.Parameterizations.FullPDFs import PdfConfiguration as PdfConfig
pdfConfig = PdfConfig()

# read parameters from file
print 120 * '='
pdfConfig.readParametersFromFile( filePath = args.parFilePathIn )
pdfConfig.setParametersInPdf(simMassPdf)
print 'P2VV - INFO: splitDataSetSigBkg: observables in mass PDF:'
massPdfObs.Print('v')
print 'P2VV - INFO: splitDataSetSigBkg: parameters in mass PDF:'
massPdfPars.Print('v')


###########################################################################################################################################
## split data into signal and background ##
###########################################

# create integration sets
from ROOT import RooArgSet
intSet = RooArgSet()
normSet = RooArgSet( massPdfObs.find('mass') )