Beispiel #1
0
ws['lambdaCP'].setConstant(False)


###########################################################################################################################################
## fit data ##
##############

# fit
fitResult = pdf.fitTo( fitData, SumW2Error = False, Save = True, NumCPU = options.NumCpu, Optimize = 2, Timer = True, 
                       Minimizer = 'Minuit2', Strategy = 1, Offset = True 
                       )

# save
from P2VV.Imports import parNames, parValues
fitResult.PrintSpecial( text = True, ParNames = parNames, ParValues = parValues )
fitResult.SetName( parFileOut.replace('.par','') )
from ROOT import TFile
resultFile = TFile.Open( parFileOut.replace('.par','.root'), 'recreate')
resultFile.cd()
fitResult.Write()
resultFile.Close()

if parFileOut:
    pdfConfig.getParametersFromPdf( pdf,  fitData )
    pdfConfig.writeParametersToFile( filePath = parFileOut, Floating = True )
    if 'True' in options.writeUnBlPar:
        for parName in ['phiCP', 'dGamma']:
            par = pdfConfig.parameters().pop('__%s__'%parName)
            pdfConfig.parameters()[parName] = (ws[parName].getVal(), ) + par[1:]
        pdfConfig.writeParametersToFile( filePath = parFileOut.replace('.par','_unbl.par'), Floating = True )
Beispiel #2
0
    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()
print 120 * '-'
print 'covariance matrix:'
fitResult.covarianceMatrix().Print()
print 120 * '-' + '\n'

if parFileOut :
    # write parameters to file
    pdfConfig.getParametersFromPdf( pdf, fitData )
    pdfConfig.writeParametersToFile(  filePath = parFileOut
                                    , FitStatus = ( fitResult.status(), fitResult.minNll(), fitResult.edm() )
                                   )

if resultFileOut :
    # write fit result to file
    from ROOT import TFile, TObject
    resultFile = TFile.Open( resultFileOut, 'RECREATE' )
    resultFile.Append(fitResult)
    resultFile.Write( resultFileOut, TObject.kOverwrite )
    resultFile.Close()
Beispiel #3
0
        import random
        print 'Bs2JpsiKKFit: give floating parameters random offsets (scale = %.2f sigma; seed = %s)'\
              % ( randomParVals[0], str(randomParVals[1]) if randomParVals[1] else 'system time' )
        random.seed( randomParVals[1] if randomParVals[1] else None )
        for par in pdfPars :
            if not par.isConstant() : par.setVal( par.getVal() + 2. * ( random.random() - 0.5 ) * randomParVals[0] * par.getError() )

    # set test-parameter values
    print 'Bs2JpsiKKFit: fit iteration %d' % valIt
    print 'Bs2JpsiKKFit: setting test-parameter values'
    for parIt, par in enumerate(testPars) :
        par.setVal( parVals[parIt] )
        print ( '  {0:%ds} = {1:+10.4g}' % maxLenFitParName ).format( par.GetName(), par.getVal() )

    # fit data
    print 'Bs2JpsiKKFit: fitting %d events (%s)' % ( fitData.numEntries(), 'weighted' if fitData.isWeighted() else 'not weighted' )
    fitResult = pdf.fitTo( fitData, SumW2Error = False, Save = True, Hesse = False, Offset = False, **fitOpts )

    # print parameter values
    from P2VV.Imports import parNames, parValues
    print 'Bs2JpsiKKFit: parameters:'
    fitResult.PrintSpecial( text = True, ParNames = parNames, ParValues = parValues )

    # write parameters to file
    from math import log10
    filePF = ( '_{0:0%dd}' % indexWidth ).format( startIndex + valIt )
    pdfConfig.getParametersFromPdf( pdf, fitData )
    pdfConfig.writeParametersToFile( filePath = outDirPath + 'fitPars_' + jobID + filePF + '.par'
                                    , FitStatus = ( fitResult.status(), fitResult.minNll(), fitResult.edm() ) )