def __call__(self, data): pdf_pars = self.__pdf.getParameters(data.get()) if not self.__parameters: self.__parameters = pdf_pars self.__parameters = [p for p in pdf_pars] + [self.__status] else: for p in self.__parameters: pdf_par = pdf_pars.find(p.GetName()) if not pdf_par: continue pdf_par.setVal(p.getVal()) pdf_par.setError(p.getError()) success = False status = 4 for i in range(3): self.__result = self.__pdf.fitTo(data, **self.__fit_opts) status = self.__result.status() if status == 0: success = True break if status < 4: self.__status.setIndex(self.__result.status()) else: self.__status.setIndex(4) if success: from P2VV.Utilities.SWeights import SData self.__sData = SData(Pdf=self.__pdf, Data=data, Name="MassSPlot") data = self.__sData.data(self.__comp) if self.__correct_weights: from P2VV.Utilities.DataHandling import correctWeights data = correctWeights(data, splitCatNames=None, ImportIntoWS=False) return data else: return None
minosPars += [ 'Gamma', 'dGamma', 'dM', 'AparPhase', 'AperpPhase' ] if args.model in [ 'phi', 'lamb_phi' ] : minosPars += [ 'phiCP', 'A0Mag2', 'AperpMag2' ] if args.model == 'lamb_phi' : minosPars += [ 'lambdaCP' ] elif args.model == 'polarDep' : minosPars += [ 'phiCPAv', 'phiCPRel_Apar', 'phiCPRel_AperpApar', 'phiCPRel_AS' , 'CCPAv', 'CCPRel_Apar', 'CCPRel_Aperp', 'CCPAv_AS', 'avA02', 'avAperp2' ] minosPars = [ pdfPars.find(par) for par in minosPars ] if minosPars : print 'Bs2JpsiphiMCFit: running Minos for parameters', ', '.join( '"%s"' % par.GetName() for par in minosPars ) # fit data if dataSet.isWeighted() : from P2VV.Utilities.DataHandling import correctWeights fitData = correctWeights( dataSet, [ ] ) else : fitData = dataSet fitResult = pdf.fitTo( fitData, SumW2Error = False, Save = True, NumCPU = args.numCPU, Optimize = 2, Timer = True, Minimizer = 'Minuit2' , Strategy = 1, Offset = True, Hesse = runHesse, Minos = minosPars ) if pdfConfig['lambdaCPParam'] == 'observables_CPVDecay' : from P2VV.Imports import parNames, parValuesCPVDecay as parValues elif args.model == 'phi' : from P2VV.Imports import parNames, parValuesFixLamb as parValues else : from P2VV.Imports import parNames, parValues print 120 * '-' print 'parameter values:' fitResult.PrintSpecial( text = True, LaTeX = True, normal = True, ParNames = parNames, ParValues = parValues ) print 120 * '-'
minosPars += [ 'Gamma', '{0}dGamma{0}'.format(blindAdd), 'dM', 'AparPhase', 'AperpPhase' ] if args.model in [ 'phi', 'lamb_phi' ] : minosPars += [ '{0}phiCP{0}'.format(blindAdd), 'A0Mag2', 'AperpMag2' ] if args.model == 'lamb_phi' : minosPars += [ 'lambdaCP' ] elif args.model == 'polarDep' : minosPars += [ '{0}phiCPAv{0}'.format(blindAdd), '{0}phiCPRel_Apar{0}'.format(blindAdd) , '{0}phiCPRel_AperpApar{0}'.format(blindAdd), '{0}phiCPRel_AS{0}'.format(blindAdd) , 'CCPAv', 'CCPRel_Apar', 'CCPRel_Aperp', 'CCPAv_AS', 'avA02', 'avAperp2' ] minosPars = [ pdfPars.find(par) for par in minosPars ] if minosPars : print 'Bs2JpsiKK3fbFit: running Minos for parameters', ', '.join( '"%s"' % par.GetName() for par in minosPars ) # fit data from P2VV.Utilities.DataHandling import correctWeights fitData = correctWeights( dataSet, [ 'runPeriod', 'KKMassCat' ] ) fitResult = pdf.fitTo( fitData, SumW2Error = False, Save = True, NumCPU = args.numCPU, Optimize = 2, Timer = True, Minimizer = 'Minuit2' , Strategy = 1, Offset = True, Hesse = runHesse, Minos = minosPars ) if pdfConfig['lambdaCPParam'] == 'observables_CPVDecay' : from P2VV.Imports import parNames, parValuesCPVDecay as parValues elif args.model == 'phi' : from P2VV.Imports import parNames, parValuesFixLamb as parValues else : from P2VV.Imports import parNames, parValues print 120 * '-' print 'parameter values:' fitResult.PrintSpecial( text = True, LaTeX = True, normal = True, ParNames = parNames, ParValues = parValues ) print 120 * '-' print 'correlation matrix:' fitResult.correlationMatrix().Print()
pdf = pdfBuild.pdf() if not 'Optimize' in fitOpts or fitOpts['Optimize'] < 2 : # unset cache-and-track for par in pdfBuild['taggingParams'].parameters() : par.setAttribute( 'CacheAndTrack', False ) if parFileIn : # read parameters from file pdfConfig.readParametersFromFile( filePath = parFileIn ) pdfConfig.setParametersInPdf(pdf) # data set with weights corrected for background dilution: for phi_s fit only! if corrSFitErr == 'sumWeight'\ or ( type(corrSFitErr) != str and hasattr( corrSFitErr, '__iter__' ) and hasattr( corrSFitErr, '__getitem__' ) ) : from P2VV.Utilities.DataHandling import correctWeights fitData = correctWeights( sigData, 'KKMassCat' if pdfConfig['paramKKMass'] == 'simultaneous' else '' , CorrectionFactors = None if corrSFitErr == 'sumWeight' else corrSFitErr ) else : fitData = sigData # get observables and parameters in PDF pdfObs = pdf.getObservables(fitData) pdfPars = pdf.getParameters(fitData) ########################################################################################################################################### ## fit data ## ############## # float/fix values of some parameters for CEvenOdds in pdfBuild['taggingParams']['CEvenOdds'] :
from P2VV.Parameterizations.FullPDFs import Bs2Jpsiphi_PdfBuilder as PdfBuilder pdfBuild = PdfBuilder( **pdfConfig ) pdf = pdfBuild.pdf() if not 'Optimize' in fitOpts or fitOpts['Optimize'] < 2 : # unset cache-and-track for par in pdfBuild['taggingParams'].parameters() : par.setAttribute( 'CacheAndTrack', False ) if parFileIn : # read parameters from file pdfConfig.readParametersFromFile( filePath = parFileIn ) pdfConfig.setParametersInPdf(pdf) # data set with weights corrected for background dilution: for phi_s fit only! from P2VV.Utilities.DataHandling import correctWeights fitData = correctWeights( dataSet, 'KKMassCat' if pdfConfig['paramKKMass'] == 'simultaneous' else '' ) # get observables and parameters in PDF pdfObs = pdf.getObservables(fitData) pdfPars = pdf.getParameters(fitData) ########################################################################################################################################### ## fit data ## ############## # fix values of some parameters for CEvenOdds in pdfBuild['taggingParams']['CEvenOdds'] : if not pdfConfig['SSTagging'] : CEvenOdds.setConstant('avgCEven.*') CEvenOdds.setConstant( 'avgCOdd.*', True )
from P2VV.Utilities.DataHandling import addTransversityAngles addTransversityAngles( fitData, 'trcospsi', 'trcostheta', 'trphi' , angles[0].GetName(), angles[1].GetName(), angles[2].GetName() ) # write data to file from P2VV.Utilities.DataHandling import writeData writeData( dataSetFile, dataSetName, fitData ) elif pdfConfig['sFit'] : defData = pdfBuild['sigSWeightData'] sigData = pdfBuild['sigSWeightData'] bkgData = pdfBuild['bkgSWeightData'] if corrSFitErr == 'sumWeight'\ or ( type(corrSFitErr) != str and hasattr( corrSFitErr, '__iter__' ) and hasattr( corrSFitErr, '__getitem__' ) ) : from P2VV.Utilities.DataHandling import correctWeights fitData = correctWeights( pdfBuild['sigSWeightData'], 'KKMassCat' if pdfConfig['parameterizeKKMass'] == 'simultaneous' else '' , CorrectionFactors = None if corrSFitErr == 'sumWeight' else corrSFitErr ) else : fitData = pdfBuild['sigSWeightData'] else : defData = pdfBuild['data'] fitData = pdfBuild['data'] sigData = pdfBuild['sigSWeightData'] bkgData = pdfBuild['bkgSWeightData'] # get observables and parameters in PDF pdfObs = pdf.getObservables(fitData) pdfPars = pdf.getParameters(fitData) # print parameters
bkgYield.setVal( bkgYield.getVal() * nEvBin / nEv ) bkgYield.setError( sqrt( bkgYield.getVal() ) ) bkgYield.setMin(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 from P2VV.Utilities.DataHandling import correctWeights sdata = SData( Pdf = sweight_pdf, Data = data, Name = 'mass_sdata') sig_sdata = correctWeights(sdata.data('signal'), splitCatNames = [excl_biased.GetName()], ImportIntoWS = False) bkg_sdata = correctWeights(sdata.data('background'), splitCatNames = [excl_biased.GetName()], ImportIntoWS = False) from array import array weights = array('d') from ROOT import TFile f = TFile.Open(input_file, "read") tree = f.Get("DecayTree") from ROOT import gDirectory tree.Draw(">>elist", cut, "entrylist") output = "temp.root" output_file = TFile(output, "recreate")
from P2VV.Parameterizations.FullPDFs import Bs2Jpsiphi_PdfBuilder as PdfBuilder pdfBuild = PdfBuilder( **pdfConfig ) pdf = pdfBuild.pdf() if not 'Optimize' in fitOpts or fitOpts['Optimize'] < 2 : # unset cache-and-track for par in pdfBuild['taggingParams'].parameters() : par.setAttribute( 'CacheAndTrack', False ) if parFileIn : # read parameters from file pdfConfig.readParametersFromFile( filePath = parFileIn ) pdfConfig.setParametersInPdf(pdf) # data set with weights corrected for background dilution: for phi_s fit only! from P2VV.Utilities.DataHandling import correctWeights fitData = correctWeights( dataSet, corrSFitErrCats ) # get observables and parameters in PDF pdfObs = pdf.getObservables(fitData) pdfPars = pdf.getParameters(fitData) # get test parameters testPars = [ pdfPars.find(name) for name in testParNames ] ########################################################################################################################################### ## get NLL values ## #################### # fix values of some parameters for CEvenOdds in pdfBuild['taggingParams']['CEvenOdds'] :