sigFrac = eventFracs[ KKMassState + 1 ][yName] if eventFracs[ KKMassState + 1 ][yName]\ else 1. - sum( val for val in eventFracs[ KKMassState + 1 ].itervalues() if val ) yieldVar.setVal( sigFrac * nEvBin ) else : yieldVar.setVal( yieldVar.getVal() * nEvBin / nEv ) yieldVar.setError( sqrt( yieldVar.getVal() ) ) yieldVar.setMin(0.) yieldVar.setMax(nEvBin) splitCatState = splitCatIter.Next() # determine mass parameters in each subsample with a fit print 120 * '=' print 'P2VV - INFO: createB2CCFitNTuple: fitting with simultaneous mass PDF' simMassFitResult = sWeightMassPdf.fitTo( dataSets['pre'][0], Save = True, **fitOpts ) from P2VV.Imports import parValues simMassFitResult.PrintSpecial( text = True, LaTeX = True, normal = True, ParNames = parNames, ParValues = parValues ) simMassFitResult.covarianceMatrix().Print() simMassFitResult.correlationMatrix().Print() else : massPdfPars = massPdf.getVariables() sWeightMassPdf = massPdf ########################################################################################################################################### ## compute sWeights ## ######################
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 ) ########################################################################################################################################### ## compute sWeights ## ###################### print 120 * '=' print 'P2VV - INFO: createBs2JpsiKKDataSet: computing sWeights'
selStr = "{0} == {0}::{1}".format(split_cat.GetName(), state.GetName()) nEv = data.sumEntries() nEvBin = data.sumEntries(selStr) sigYield.setVal(sigYield.getVal() * nEvBin / nEv) sigYield.setError(sqrt(sigYield.getVal())) sigYield.setMin(0.0) sigYield.setMax(nEvBin) bkgYield.setVal(bkgYield.getVal() * nEvBin / nEv) bkgYield.setError(sqrt(bkgYield.getVal())) bkgYield.setMin(0.0) bkgYield.setMax(nEvBin) # determine mass parameters in each sub-sample with a fit sim_mass_result = sWeight_mass_pdf.fitTo(data, **fitOpts) sweight_pdf = sWeight_mass_pdf else: sweight_pdf = mass_pdf from P2VV.Utilities.SWeights import SData sdata = SData(Pdf=sweight_pdf, Data=data, Name="mass_sdata") sig_sdata = sdata.data("signal") bkg_sdata = sdata.data("background") from ROOT import TFile f = TFile.Open(input_file, "update") tree = f.Get("DecayTree")