#     theFitter.getWorkSpace().var('fMU').setConstant(True)
#     theFitter.getWorkSpace().var('fSU').setConstant(True)

# theFitter.getWorkSpace().var('nDiboson').setConstant()
#theFitter.getWorkSpace().var('nTTbar').setConstant()
# theFitter.getWorkSpace().var('nSingleTop').setConstant()
# theFitter.getWorkSpace().var('nZjets').setConstant()
#theFitter.getWorkSpace().var('nWjets').setConstant()
theFitter.getWorkSpace().var('nQCD').setConstant()

if (opts.Nj == 3):
    theFitter.getWorkSpace().var('nTTbar').setConstant()
if (opts.mH <= 300) and (opts.Nj == 2):
    theFitter.getWorkSpace().var('nTTbar').setConstant()

theFitter.loadData()
theFitter.resetYields()
if fitterPars.includeMuons:
    theFitter.getWorkSpace().var('nQCD').setConstant()

fr = theFitter.fit()

tries = 1
ndf = Long(fr.floatParsFinal().getSize()-5)
while (fr.covQual() < 2) and (tries < 3):
    print "Fit didn't converge well.  Will try again."
    # theFitter.getWorkSpace().var('nDiboson').setConstant()
    theFitter.getWorkSpace().var('nTTbar').setConstant()
    # theFitter.getWorkSpace().var('nSingleTop').setConstant()
    theFitter.getWorkSpace().var('nQCD').setConstant()
    # theFitter.getWorkSpace().var('nZjets').setConstant()
    parser.add_option("--NP", action="store_true", dest="NP", default=False, help="put NP on the plot")
    parser.add_option("--Err", dest="Err", default=-1.0, type="float", help="error band level")
    (opts, args) = parser.parse_args()

    import pyroot_logon

    config = __import__(opts.modeConfig)

    from ROOT import TFile, Double, Long, gROOT, TCanvas

    ## gROOT.ProcessLine('.L RooWjjFitterParams.h+');
    gROOT.ProcessLine(".L EffTableReader.cc+")
    gROOT.ProcessLine(".L EffTableLoader.cc+")
    gROOT.ProcessLine(".L RooWjjFitterUtils.cc+")
    gROOT.ProcessLine(".L RooWjjMjjFitter.cc+")
    from ROOT import RooWjjMjjFitter, RooFit, RooMsgService, RooArgList, RooArgSet
    from math import sqrt

    RooMsgService.instance().setGlobalKillBelow(RooFit.WARNING)

    fitterPars = config.theConfig(opts.Nj, opts.mcdir, opts.startingFile, opts.toydataFile)

    theFitter = RooWjjMjjFitter(fitterPars)

    theFitter.makeFitter(False)
    theFitter.loadData()

    theFitter.loadParameters(opts.startingFile)

    (frames, cans) = plot2BodyDist(theFitter, fitterPars, 0, 3, opts.Err, opts.NP)
#     theFitter.getWorkSpace().var('fMU').setConstant(True)
#     theFitter.getWorkSpace().var('fSU').setConstant(True)

# theFitter.getWorkSpace().var('nDiboson').setConstant()
#theFitter.getWorkSpace().var('nTTbar').setConstant()
# theFitter.getWorkSpace().var('nSingleTop').setConstant()
# theFitter.getWorkSpace().var('nZjets').setConstant()
#theFitter.getWorkSpace().var('nWjets').setConstant()
theFitter.getWorkSpace().var('nQCD').setConstant()

if (opts.Nj == 3):
    theFitter.getWorkSpace().var('nTTbar').setConstant()
if (opts.mH <= 300) and (opts.Nj == 2):
    theFitter.getWorkSpace().var('nTTbar').setConstant()

theFitter.loadData()
theFitter.resetYields()
if fitterPars.includeMuons:
    theFitter.getWorkSpace().var('nQCD').setConstant()

fr = theFitter.fit()

tries = 1
ndf = Long(fr.floatParsFinal().getSize()-5)
while (fr.covQual() < 2) and (tries < 3):
    print "Fit didn't converge well.  Will try again."
    # theFitter.getWorkSpace().var('nDiboson').setConstant()
    theFitter.getWorkSpace().var('nTTbar').setConstant()
    # theFitter.getWorkSpace().var('nSingleTop').setConstant()
    theFitter.getWorkSpace().var('nQCD').setConstant()
    # theFitter.getWorkSpace().var('nZjets').setConstant()
示例#4
0
                      help='error band level')
    (opts, args) = parser.parse_args()

    import pyroot_logon
    config = __import__(opts.modeConfig)

    from ROOT import TFile, Double, Long, gROOT, TCanvas
    ## gROOT.ProcessLine('.L RooWjjFitterParams.h+');
    gROOT.ProcessLine('.L EffTableReader.cc+')
    gROOT.ProcessLine('.L EffTableLoader.cc+')
    gROOT.ProcessLine('.L RooWjjFitterUtils.cc+')
    gROOT.ProcessLine('.L RooWjjMjjFitter.cc+')
    from ROOT import RooWjjMjjFitter, RooFit, \
         RooMsgService, RooArgList, RooArgSet
    from math import sqrt

    RooMsgService.instance().setGlobalKillBelow(RooFit.WARNING)

    fitterPars = config.theConfig(opts.Nj, opts.mcdir, opts.startingFile,
                                  opts.toydataFile )

    theFitter = RooWjjMjjFitter(fitterPars)

    theFitter.makeFitter(False)
    theFitter.loadData()

    theFitter.loadParameters(opts.startingFile)

    (frames, cans) = plot2BodyDist(theFitter, fitterPars,
                                   0, 3, opts.Err, opts.NP)