def theConfig(Nj, mH, isElectron = False, initFile = [], includeSignal = True): pars = Wjj2DFitterPars() pars.MCDirectory = '/uscms_data/d2/andersj/Wjj/2012/data/Moriond2013/ReducedTrees/' # pars.MCDirectory = "root://cmseos:1094//eos/uscms/store/user/lnujj/Moriond2013/RD_includingDiboson/" # pars.MCDirectory = "root://cmseos:1094//eos/uscms/store/user/lnujj/HCP2012METfix/ReducedTrees/" #pars.DataDirectory = '/uscms_data/d2/andersj/Wjj/2012/data/Moriond2013/HWWTrees/' pars.DataDirectory = pars.MCDirectory pars.isElectron = isElectron pars.initialParametersFile = initFile pars.backgrounds = ['diboson', 'top', 'WpJ'] pars.includeSignal = includeSignal pars.signals = ['ggH', 'qqH'] pars.yieldConstraints = { 'diboson' : 0.034, 'top' : 0.07 } #pars.yieldConstraints = {} pars.constrainShapes = ['WpJ'] pars.Njets = Nj pars.mHiggs = mH modePars = mu2Pars if isElectron: flavorString = 'el' if Nj == 3: modePars = el3Pars else: modePars = el2Pars else: flavorString = 'mu' if Nj == 3: modePars = mu3Pars else: modePars = mu2Pars pars.cuts = \ '(W_pt>200.)&&(GroomedJet_CA8_pt[0]>200)&&(ggdboostedWevt==1)' +\ '&&(event_metMVA_met>50.)&&(GroomedJet_CA8_deltaphi_METca8jet>2.0)' +\ '&&(GroomedJet_CA8_mass_pr[0]>40)&&(numPFCorJetBTags==0)' +\ '&&(GroomedJet_CA8_tau2tau1[0]<0.53)' #btag veto pars.btagVeto = False # for i in range(0, 6): # pars.cuts += '&&((abs(JetPFCor_Eta[%i])>2.4)||' % i + \ # '(JetPFCor_Pt[%i]<30.)||' % i + \ # '(JetPFCor_bDiscriminatorCSV[%i]<0.679))' % i # veto boosted topology # if mH >= 600: # pars.cuts += '&&(W_pt<200.)' # veto vbf pars.cuts += '&&(vbf_event==0)' # you need a files entry and a models entry for each of the fit # compoents in backgrounds and signals # the files should a list with entries like (filename, Ngen, xsec) pars.dibosonFiles = [ (pars.MCDirectory + 'RD_%s_WW_CMSSW532.root' % (flavorString), 9450414, 57.1097), (pars.MCDirectory + 'RD_%s_WZ_CMSSW532.root' % (flavorString), 10000267, 32.3161), ] pars.dibosonModels = [ modePars[mH][5]['diboson'][0] ] pars.WpJFiles = [ (pars.MCDirectory + 'RD_%s_WJets_madgraph_CMSSW532.root' % (flavorString), 8955318, 1.3*228.9), ] pars.WpJModels = [ modePars[mH][5]['WpJ'][0] ] pars.topFiles = [ (pars.MCDirectory + 'RD_%s_TTbar_CMSSW532.root' % (flavorString), 6893735, 225.197), (pars.MCDirectory + 'RD_%s_STopS_Tbar_CMSSW532.root' % (flavorString), 139974, 1.75776), (pars.MCDirectory + 'RD_%s_STopS_T_CMSSW532.root' % (flavorString), 259960, 3.89394), (pars.MCDirectory + 'RD_%s_STopT_Tbar_CMSSW532.root' % (flavorString), 1935066, 30.0042), (pars.MCDirectory + 'RD_%s_STopT_T_CMSSW532.root' % (flavorString), 3758221, 55.531), (pars.MCDirectory + 'RD_%s_STopTW_Tbar_CMSSW532.root' % (flavorString), 493458, 11.1773), (pars.MCDirectory + 'RD_%s_STopTW_T_CMSSW532.root' % (flavorString), 497657, 11.1773), ] pars.topModels = [ modePars[mH][5]['top'][0] ] ngen = HWWSignalShapes.NgenHiggs(mH, 'ggH') pars.ggHFiles = [ (pars.MCDirectory + HWWSignalShapes.makeSignalFilename(mH, "ggH", isElectron), ngen[0], ngen[1]*ngen[2]) ] pars.ggHModels = [ modePars[mH][5]['ggH'][0] ] if pars.mHiggs >= 400: pars.ggHInterference = True ngen = HWWSignalShapes.NgenHiggs(mH, 'qqH') pars.qqHFiles = [ (pars.MCDirectory + HWWSignalShapes.makeSignalFilename(mH, "qqH", isElectron), ngen[0], ngen[1]*ngen[2]) ] pars.qqHModels = [ modePars[mH][5]['qqH'][0] ] pars.dibosonPlotting = {'color' : kAzure+8, 'title' : 'WW+WZ'} pars.WpJPlotting = { 'color' : kRed, 'title' : 'V+jets'} pars.topPlotting = {'color' : kGreen+2, 'title' : 'top'} pars.ggHPlotting = {'color' : kBlue, 'title' : "H(%i) #rightarrow WW" % mH} pars.qqHPlotting = {'color' : kBlue, 'title' : "H(%i) #rightarrow WW" % mH, 'visible' : True} pars.var = ['GroomedJet_CA8_mass_pr[0]', 'boostedW_lvj_m'] pars.varRanges = {'GroomedJet_CA8_mass_pr[0]': (20, 40., 140., []), 'boostedW_lvj_m': (modePars[mH][4], modePars[mH][2], modePars[mH][3], []) } pars.varTitles = {'GroomedJet_CA8_mass_pr[0]': 'm_{j}', 'boostedW_lvj_m' : 'm_{l#nuj}' } pars.varNames = {'GroomedJet_CA8_mass_pr[0]': 'GroomedJet_CA8_mass_pr', 'boostedW_lvj_m' : 'boostedW_lvj_m' } pars.exclude = {'GroomedJet_CA8_mass_pr[0]' : (70., 100.)} pars.blind = True pars.binData = False # pars.binData = True return customizeElectrons(pars) if isElectron else \ customizeMuons(pars)
def theConfig(Nj, mH, isElectron=False, initFile=[], includeSignal=True): pars = Wjj2DFitterPars() pars.MCDirectory = '/uscms_data/d2/andersj/Wjj/2012/data/Moriond2013/ReducedTrees/' pars.QCDDirectory = "/uscms_data/d3/ilyao/QCD8TeV/Moriond13/" # pars.MCDirectory = "root://cmseos:1094//eos/uscms/store/user/lnujj/Moriond2013/RD_includingDiboson/" # pars.MCDirectory = "root://cmseos:1094//eos/uscms/store/user/lnujj/HCP2012METfix/ReducedTrees/" pars.DataDirectory = '/uscms_data/d2/andersj/Wjj/2012/data/Moriond2013/HWWTrees/' pars.isElectron = isElectron pars.initialParametersFile = initFile pars.backgrounds = ['diboson', 'WpJ', 'top'] pars.includeSignal = includeSignal pars.signals = ['ggH', 'qqH'] pars.yieldConstraints = {'diboson': 0.034, 'top': 0.07} #pars.yieldConstraints = {} pars.constrainShapes = ['WpJ'] if mH > 200: pars.constrainShapes = ['WpJ'] pars.Njets = Nj pars.mHiggs = mH modePars = mu2Pars if isElectron: flavorString = 'el' if Nj == 3: modePars = el3Pars else: modePars = el2Pars else: flavorString = 'mu' if Nj == 3: modePars = mu3Pars else: modePars = mu2Pars pars.cuts = '(ggdevt==%i)&&(fit_status==0)&&(W_mt>30)' % Nj pars.cuts = '(fit_status==0)&&(W_mt>30)' pars.cuts += '&&(%s>%.3f)' % (modePars[mH][0], modePars[mH][1]) #btag veto pars.btagVeto = False for i in range(0, 6): pars.cuts += '&&((abs(JetPFCor_Eta[%i])>2.4)||' % i + \ '(JetPFCor_Pt[%i]<30.)||' % i + \ '(JetPFCor_bDiscriminatorCSV[%i]<0.244))' % i # veto boosted topology # if mH >= 600: # pars.cuts += '&&(W_pt<200.)' # veto vbf pars.cuts += '&&(vbf_event==0)' # you need a files entry and a models entry for each of the fit # compoents in backgrounds and signals # the files should a list with entries like (filename, Ngen, xsec) pars.dibosonFiles = [ (pars.MCDirectory + 'RD_%s_WW_CMSSW532.root' % (flavorString), 9450414, 57.1097), (pars.MCDirectory + 'RD_%s_WZ_CMSSW532.root' % (flavorString), 10000267, 32.3161), ] pars.dibosonModels = [modePars[mH][5]['diboson'][0]] wpj_kfactor = 1.16 pars.WpJFiles = [ # (pars.MCDirectory + 'RD_%s_WpJ_CMSSW532.root' % (flavorString), # 18353019+50768992, 36257.2), (pars.MCDirectory + 'RD_%s_ZpJ_CMSSW532.root' % (flavorString), 30209426, 3503.71), # (pars.MCDirectory + 'RD_%s_W1Jets_CMSSW532.root' % (flavorString), # 19871598, 5400.0*wpj_kfactor), (pars.MCDirectory + 'RD_%s_W2Jets_CMSSW532.root' % (flavorString), 33004921, 1750.0 * wpj_kfactor), (pars.MCDirectory + 'RD_%s_W3Jets_CMSSW532.root' % (flavorString), 15059503, 519.0 * wpj_kfactor), (pars.MCDirectory + 'RD_%s_W4Jets_CMSSW532.root' % (flavorString), 12842803, 214.0 * wpj_kfactor), ] pars.WpJModels = [modePars[mH][5]['WpJ'][0]] pars.topFiles = [ (pars.MCDirectory + 'RD_%s_TTbar_CMSSW532.root' % (flavorString), 6893735, 225.197), (pars.MCDirectory + 'RD_%s_STopS_Tbar_CMSSW532.root' % (flavorString), 139974, 1.75776), (pars.MCDirectory + 'RD_%s_STopS_T_CMSSW532.root' % (flavorString), 259960, 3.89394), (pars.MCDirectory + 'RD_%s_STopT_Tbar_CMSSW532.root' % (flavorString), 1935066, 30.0042), (pars.MCDirectory + 'RD_%s_STopT_T_CMSSW532.root' % (flavorString), 3758221, 55.531), (pars.MCDirectory + 'RD_%s_STopTW_Tbar_CMSSW532.root' % (flavorString), 493458, 11.1773), (pars.MCDirectory + 'RD_%s_STopTW_T_CMSSW532.root' % (flavorString), 497657, 11.1773), ] pars.topModels = [modePars[mH][5]['top'][0]] pars.QCDFracOfData = 0.05 pars.QCDFiles = [ (pars.QCDDirectory + 'RDQCD_WenuJets_Isog0p3NoElMVA_19p2invfb.root', 1, 1), #The events come from the data sideband ] pars.QCDModels = [27] ngen = HWWSignalShapes.NgenHiggs(mH, 'ggH') pars.ggHFiles = [ (pars.MCDirectory + HWWSignalShapes.makeSignalFilename(mH, "ggH", isElectron), ngen[0], ngen[1] * ngen[2]) ] pars.ggHModels = [modePars[mH][5]['ggH'][0]] if pars.mHiggs >= 400: pars.ggHInterference = True ngen = HWWSignalShapes.NgenHiggs(mH, 'qqH') pars.qqHFiles = [ (pars.MCDirectory + HWWSignalShapes.makeSignalFilename(mH, "qqH", isElectron), ngen[0], ngen[1] * ngen[2]) ] pars.qqHModels = [modePars[mH][5]['qqH'][0]] pars.dibosonPlotting = {'color': kAzure + 8, 'title': 'WW+WZ'} pars.WpJPlotting = {'color': kRed, 'title': 'V+jets'} pars.topPlotting = {'color': kGreen + 2, 'title': 'top'} pars.ggHPlotting = {'color': kBlue, 'title': "H(%i) #rightarrow WW" % mH} pars.qqHPlotting = { 'color': kBlue, 'title': "H(%i) #rightarrow WW" % mH, 'visible': True } pars.QCDPlotting = {'color': kGray, 'title': 'multijet'} pars.var = ['Mass2j_PFCor', 'fit_mlvjj'] pars.varRanges = { 'Mass2j_PFCor': (12, 50., 146., []), 'fit_mlvjj': (modePars[mH][4] * 10, modePars[mH][2], modePars[mH][3], []) } pars.plotRanges = { 'Mass2j_PFCor': (12, 50., 146., []), 'fit_mlvjj': (modePars[mH][4], modePars[mH][2], modePars[mH][3], []) } pars.varTitles = {'Mass2j_PFCor': 'm_{jj}', 'fit_mlvjj': 'm_{l#nujj}'} pars.exclude = {'Mass2j_PFCor': (66., 66. + 32.)} pars.doExclude = True pars.blind = True pars.binData = False # pars.binData = True return customizeElectrons(pars) if isElectron else \ customizeMuons(pars)
def theConfig(Nj, mH, isElectron = False, initFile = [], includeSignal = True): pars = Wjj2DFitterPars() pars.MCDirectory = '/uscms_data/d2/andersj/Wjj/2012/data/Moriond2013/ReducedTrees/' # pars.MCDirectory = "root://cmseos:1094//eos/uscms/store/user/lnujj/Moriond2013/RD_includingDiboson/" # pars.MCDirectory = "root://cmseos:1094//eos/uscms/store/user/lnujj/HCP2012METfix/ReducedTrees/" pars.DataDirectory = '/uscms_data/d2/andersj/Wjj/2012/data/Moriond2013/HWWTrees/' pars.isElectron = isElectron pars.initialParametersFile = initFile pars.backgrounds = ['diboson', 'WpJ', 'top'] pars.includeSignal = includeSignal pars.signals = ['ggH', 'qqH'] pars.yieldConstraints = { 'diboson' : 0.034, 'top' : 0.07 } #pars.yieldConstraints = {} pars.constrainShapes = [] pars.Njets = Nj pars.mHiggs = mH modePars = mu2Pars if isElectron: flavorString = 'el' if Nj == 3: modePars = el3Pars else: modePars = el2Pars else: flavorString = 'mu' if Nj == 3: modePars = mu3Pars else: modePars = mu2Pars pars.cuts = '(ggdevt==%i)&&(fit_status==0)&&(W_mt>30)' % Nj pars.cuts += '&&(%s>%.3f)' % (modePars[mH][0], modePars[mH][1]) # pars.cuts = '(fit_status==0)&&(W_mt>30)' + \ # '&&(%s>%.3f)' % (modePars[mH][0], modePars[mH][1]) #btag veto pars.btagVeto = False # for i in range(0, 6): # pars.cuts += '&&((abs(JetPFCor_Eta[%i])>2.4)||' % i + \ # '(JetPFCor_Pt[%i]<30.)||' % i + \ # '(JetPFCor_bDiscriminatorCSV[%i]<0.679))' % i # veto boosted topology # if mH >= 600: # pars.cuts += '&&(W_pt<200.)' # veto vbf pars.cuts += '&&(vbf_event==0)' # you need a files entry and a models entry for each of the fit # compoents in backgrounds and signals # the files should a list with entries like (filename, Ngen, xsec) pars.dibosonFiles = [ (pars.MCDirectory + 'RD_%s_WW_CMSSW532.root' % (flavorString), 9450414, 57.1097), (pars.MCDirectory + 'RD_%s_WZ_CMSSW532.root' % (flavorString), 10000267, 32.3161), ] pars.dibosonModels = modePars[mH][5]['diboson'] pars.WpJFiles = [ (pars.MCDirectory + 'RD_%s_WpJ_CMSSW532.root' % (flavorString), 18353019+50768992, 36257.2), (pars.MCDirectory + 'RD_%s_ZpJ_CMSSW532.root' % (flavorString), 30209426, 3503.71), ] pars.WpJModels = modePars[mH][5]['WpJ'] pars.topFiles = [ (pars.MCDirectory + 'RD_%s_TTbar_CMSSW532.root' % (flavorString), 6893735, 225.197), (pars.MCDirectory + 'RD_%s_STopS_Tbar_CMSSW532.root' % (flavorString), 139974, 1.75776), (pars.MCDirectory + 'RD_%s_STopS_T_CMSSW532.root' % (flavorString), 259960, 3.89394), (pars.MCDirectory + 'RD_%s_STopT_Tbar_CMSSW532.root' % (flavorString), 1935066, 30.0042), (pars.MCDirectory + 'RD_%s_STopT_T_CMSSW532.root' % (flavorString), 3758221, 55.531), (pars.MCDirectory + 'RD_%s_STopTW_Tbar_CMSSW532.root' % (flavorString), 493458, 11.1773), (pars.MCDirectory + 'RD_%s_STopTW_T_CMSSW532.root' % (flavorString), 497657, 11.1773), ] pars.topModels = modePars[mH][5]['top'] ngen = HWWSignalShapes.NgenHiggs(mH, 'ggH') pars.ggHFiles = [ (pars.MCDirectory + HWWSignalShapes.makeSignalFilename(mH, "ggH", isElectron), ngen[0], ngen[1]*ngen[2]) ] pars.ggHModels = modePars[mH][5]['ggH'] if pars.mHiggs >= 400: pars.ggHInterference = True ngen = HWWSignalShapes.NgenHiggs(mH, 'qqH') pars.qqHFiles = [ (pars.MCDirectory + HWWSignalShapes.makeSignalFilename(mH, "qqH", isElectron), ngen[0], ngen[1]*ngen[2]) ] pars.qqHModels = modePars[mH][5]['qqH'] pars.dibosonPlotting = {'color' : kAzure+8, 'title' : 'WW+WZ'} pars.WpJPlotting = { 'color' : kRed, 'title' : 'V+jets'} pars.topPlotting = {'color' : kGreen+2, 'title' : 'top'} pars.ggHPlotting = {'color' : kBlue, 'title' : "H(%i) #rightarrow WW" % mH} pars.qqHPlotting = {'color' : kBlue, 'title' : "H(%i) #rightarrow WW" % mH, 'visible' : True} pars.var = ['Mass2j_PFCor', 'fit_mlvjj'] pars.varRanges = {'Mass2j_PFCor': (18, 50., 194., []), 'fit_mlvjj': (modePars[mH][4], modePars[mH][2], modePars[mH][3], []) } pars.varTitles = {'Mass2j_PFCor': 'm_{jj}', 'fit_mlvjj' : 'm_{l#nujj}' } pars.exclude = {} pars.blind = False # pars.v1binEdges = [50, 55.,60.,65.,70.,75.,80.,85.,95., # 105.,115.,125.,135.,150.,165.,180.,200.] # pars.v1nbins = len(pars.v1binEdges)-1 pars.binData = False # pars.binData = True return customizeElectrons(pars) if isElectron else \ customizeMuons(pars)
mf4.SetName("Mlvjj_Stacked") ## sf4 = fitter4.residualPlot(mf4, "h_background", "dibosonPdf", False) # pf4 = fitter4.residualPlot(mf4, "h_total", "", True) pf4 = pulls.createPull(mf4.getHist('theData'), mf4.getCurve('h_total')) pf4.SetName("Mlvjj_Pull") lf4 = fitter4.stackedPlot(True, RooWjjMjjFitter.mlnujj) lf4.SetName("Mlvjj_log") fitUtils = RooWjjFitterUtils(pars4) iwt = 0 if (opts.mH >= 500): iwt = 1 sigHists = HWWSignalShapes.GenHiggsHists(pars4, opts.mH, fitUtils, iwt = iwt) extraFactor = 2. otherdata = HWWSignalShapes.NgenHiggs(opts.mH, 'HWW') SigVisual = TH1D(sigHists['HWW']) SigVisual.Print() SigVisual.SetName('SigVisual') SigVisual.SetLineColor(kBlue) SigVisual.SetLineWidth(3) SigVisual.Scale(pars4.intLumi*extraFactor*otherdata[1]*otherdata[2]/2.) SigVisual.Print() SigVisualLog = TH1D(SigVisual) SigVisualLog.SetName("SigVisualLog") c4body = TCanvas('c4body', '4 body stacked') mf4.addTH1(SigVisual, "hist") tmpLeg = mf4.findObject('theLegend') tmpLeg.AddEntry(SigVisual, "H(%d)#times%.0f" % (opts.mH, extraFactor), "l")
if opts.ParamWpJ < 0: fitterPars.smoothingOrder = 0 if fitterPars.includeMuons and fitterPars.includeElectrons: modeString = '' elif fitterPars.includeMuons: modeString = 'Muon' elif fitterPars.includeElectrons: modeString = 'Electron' else: modeString = '' pars4 = config.the4BodyConfig(fitterPars, mHbasis, opts.syst, opts.alpha) # fitter4 = RooWjjMjjFitter(pars4) (halfGen, otherdata) = HWWSignalShapes.NgenHiggs(opts.mH, 'HWW') SignalHist = HWWSignalShapes.makeHiggsHist(opts.mH, pars4, 'HWW') SignalHist.Scale(otherdata[1]*otherdata[2]*pars4.intLumi* \ opts.factor/otherdata[0]) print "signal only" SignalHist.Print() if opts.debug: print 'drawing signal histogram...' SignalHist.Draw() gPad.Update() gPad.WaitPrimitive() basisFilename = 'H%i_%s_%iJets_Fit_Shapes.root' % (mHbasis, modeString, opts.Nj) print 'opening', basisFilename bfile = TFile(basisFilename)