def theConfig(Nj, mcdir="", initFile=""):
    fitterPars = RooWjjFitterParams()
    fitterPars.smoothingOrder = 1
    # fitterPars.MCDirectory = "root://cmseos.fnal.gov:1094//eos/uscms/store/user/lnujj/HCP2012METfix/ReducedTrees/RD_"
    fitterPars.MCDirectory = "/uscms_data/d1/andersj/Wjj/2012/data/ReducedTrees/RD_"

    fitterPars.WpJDirectory = fitterPars.MCDirectory
    if len(mcdir) > 0:
        fitterPars.WpJDirectory = mcdir
        fitterPars.toyWpJ = False
    fitterPars.QCDDirectory = fitterPars.MCDirectory[:-3]
    # fitterPars.QCDDirectory = 'root://cmseos:1094//eos/uscms/store/user/lnujj/2012_RDTrees_PAT/'
    fitterPars.initParamsFile = initFile
    # fitterPars.constraintParamsFile = "HWWConstraints2Jets.txt";
    fitterPars.DataDirectory = fitterPars.MCDirectory
    # fitterPars.DataDirectory = "/uscms_data/d1/andersj/Wjj/2012/data/ICHEP2012/ReducedTrees/RD_"
    # fitterPars.muonData = 'SingleMu_0p56fb_Golden.root'
    # fitterPars.muonData = 'WmunuJets_DataAll_GoldenJSON_5p1invfb.root'
    fitterPars.muonData = "WmunuJets_DataAll_GoldenJSON_12p0invfb.root"
    fitterPars.includeMuons = True
    # fitterPars.electronData = 'WenuJets_DataSingleElectron_GoldenJSON_2012_xxpxinvfb.root'
    # fitterPars.electronData = 'WenuJets_DataAllSingleElectronTrigger_GoldenJSON_5p1invfb.root'
    fitterPars.electronData = "WenuJets_DataAllSingleElectronTrigger_GoldenJSON_11p9invfb.root"
    fitterPars.includeElectrons = True

    fitterPars.NewPhysicsDirectory = fitterPars.MCDirectory
    fitterPars.minMass = 45.0
    # fitterPars.minMass = 50.
    fitterPars.maxMass = 200.0
    fitterPars.nbins = 17
    fitterPars.intLumi = 12000
    # fitterPars.intLumi = 3500.
    # fitterPars.intLumi = 539.385+21.297
    # fitterPars.intLumi = 297.848+21.297+48.465

    fitterPars.binEdges.push_back(fitterPars.minMass)
    # fitterPars.binEdges.push_back(40.)
    # fitterPars.binEdges.push_back(45.)
    fitterPars.binEdges.push_back(50.0)
    fitterPars.binEdges.push_back(55.0)
    fitterPars.binEdges.push_back(60.0)
    fitterPars.binEdges.push_back(65.0)
    fitterPars.binEdges.push_back(70.0)
    fitterPars.binEdges.push_back(75.0)
    fitterPars.binEdges.push_back(80.0)
    fitterPars.binEdges.push_back(85.0)
    fitterPars.binEdges.push_back(95.0)
    fitterPars.binEdges.push_back(105.0)
    fitterPars.binEdges.push_back(115.0)
    fitterPars.binEdges.push_back(125.0)
    fitterPars.binEdges.push_back(135.0)
    fitterPars.binEdges.push_back(145.0)
    fitterPars.binEdges.push_back(160.0)
    fitterPars.binEdges.push_back(175.0)
    fitterPars.binEdges.push_back(200.0)

    ##     binEdge = fitterPars.minMass
    ##     print binEdge,' ',
    ##     while (binEdge <= fitterPars.maxMass):
    ##         binEdge += round(0.14*binEdge)
    ##         fitterPars.binEdges.push_back(binEdge)
    ##         print binEdge,' ',

    ##     fitterPars.binEdges[fitterPars.binEdges.size()-1] = fitterPars.maxMass

    print "mass range:", fitterPars.minMass, "-", fitterPars.maxMass

    fitterPars.truncRange = True
    fitterPars.blind = False
    fitterPars.minTrunc = 65.0

    binMin = fitterPars.minMass
    for binEdge in fitterPars.binEdges:
        if binEdge > fitterPars.minTrunc:
            fitterPars.minTrunc = binMin
            break
        binMin = binEdge

    fitterPars.maxTrunc = 94.0
    for binEdge in fitterPars.binEdges:
        if binEdge > fitterPars.maxTrunc:
            fitterPars.maxTrunc = binEdge
            break

    fitterPars.minFit = fitterPars.minMass
    binMin = fitterPars.minMass
    for binEdge in fitterPars.binEdges:
        if binEdge > fitterPars.minFit:
            fitterPars.minFit = binMin
            break
        binMin = binEdge

    fitterPars.maxFit = fitterPars.maxMass
    for binEdge in fitterPars.binEdges:
        if binEdge > fitterPars.maxFit:
            fitterPars.maxFit = binEdge
            break

    fitterPars.minWmass = fitterPars.minTrunc
    fitterPars.maxWmass = fitterPars.maxTrunc

    print "truncate:", fitterPars.truncRange, ":", fitterPars.minTrunc, "-", fitterPars.maxTrunc
    print "fit range:", fitterPars.minFit, "-", fitterPars.maxFit

    fitterPars.njets = Nj
    fitterPars.constrainDiboson = True
    fitterPars.externalConstraints = False

    fitterPars.doEffCorrections = True
    fitterPars.muIdEffFiles.push_back("EffTable2012/scaleFactor-Run2012ABC-RecoToIso.txt")
    fitterPars.muHLTEffFiles.push_back("EffTable2012/efficiency-Run2012ABC-IsoToIsoMuHLT.txt")
    fitterPars.lumiPerEpochMuon.push_back(fitterPars.intLumi)

    fitterPars.eleIdEffFiles.push_back("EffTable2012/scaleFactor-Run2012ABC-GsfElectronToId.txt")
    fitterPars.eleRecoEffFiles.push_back("EffTable2012/scaleFactor-Run2012ABC-SCToElectron.txt")
    fitterPars.eleHLTEffFiles.push_back("EffTable2012/efficiency-Run2012ABC-WP80ToHLTEle.txt")
    fitterPars.eleJ30EffFiles.push_back("EffTableDir/FullyEfficient.txt")
    fitterPars.eleJ25NoJ30EffFiles.push_back("EffTableDir/FullyEfficient_Jet2NoJet1.txt")
    fitterPars.eleMHTEffFiles.push_back("EffTableDir/FullyEfficient_MHT.txt")
    fitterPars.eleWMtEffFiles.push_back("EffTableDir/FullyEfficient.txt")
    fitterPars.lumiPerEpochElectron.push_back(fitterPars.intLumi)

    fitterPars.constrainDiboson = True
    fitterPars.useExternalMorphingPars = False

    jetCut = "(ggdevt == %i)" % (Nj)
    if Nj < 2:
        jetCut = "((ggdevt == 2) || (ggdevt == 3))"

    fitterPars.cuts = "(fit_status==0) " + "&& %s " % (jetCut) + "&& (W_mt > 30) "

    return fitterPars