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'

# compute sWeights
from P2VV.Utilities.SWeights import SData
sWeightsBuilder = SData( Pdf = sWeightMassPdf, Data = preDataSet, Name = 'JpsiKK' )
preSDataSet = sWeightsBuilder.data()