cat='_'.join([category,lepton,purity,'13TeV']) cmd=cmd+" "+cat+'=datacard_'+cat+'.txt ' #WW signal-MVV card.addMVVSignalParametricShape("XWW","MLNuJ","LNuJJ_XWW_MVV_"+lepton+".json",{'CMS_scale_j':1,'CMS_scale_MET':1.0},{'CMS_res_j':1.0,'CMS_res_MET':1.0}) card.addParametricYieldWithUncertainty("XWW",0,"LNuJJ_XWW_"+lepton+"_"+purity+"_"+category+"_yield.json",1,'CMS_tau21_PtDependence','log(MH/600)',0.041) # card.addMVVSignalParametricShape("XWZ","MLNuJ","LNuJJ_XWZ_MVV_"+lepton+".json",{'CMS_scale_j':1,'CMS_scale_MET':1.0},{'CMS_res_j':1.0,'CMS_res_MET':1.0}) # card.addParametricYieldWithUncertainty("XWZ",0,"LNuJJ_XWZ_"+lepton+"_"+purity+"_"+category+"_yield.json",1,'CMS_tau21_PtDependence','log(MH/600)',0.041) rootFile="LNuJJ_"+lepton+"_"+purity+"_"+category+".root" qcdTag ="_".join([lepton,purity,category]) card.addHistoShapeFromFile("nonRes",["MLNuJ"],rootFile,"nonRes",["shape_nonRes:shape_nonRes"+qcdTag],False,0) # card.addHistoShapeFromFile("nonRes",["MLNuJ"],rootFile,"nonRes",[],False,0) card.addFixedYieldFromFile("nonRes",1,"LNuJJ_"+lepton+"_"+purity+"_"+category+".root","nonRes") card.addHistoShapeFromFile("resW",["MLNuJ"],rootFile,"resW",["shape_resW:shape_resW"+qcdTag],False,0) # card.addHistoShapeFromFile("resW",["MLNuJ"],rootFile,"resW",[],False,0) card.addFixedYieldFromFile("resW",1,"LNuJJ_"+lepton+"_"+purity+"_"+category+".root","resW") card.importBinnedData(rootFile,"data",["MLNuJ"]) #luminosity card.addSystematic("CMS_lumi","lnN",{'XWW':1.026,'XWZ':1.026}) #kPDF uncertainty for the signal card.addSystematic("CMS_pdf","lnN",{'XWW':1.01,'XWZ':1.01})
PCYtag = "_".join([purity,category,YEAR]) LPCYtag = "_".join([lepton,purity,category,YEAR]) rootFile=inputDir+"LNuJJ_res"+sfx_rgn+"_MJJ_"+LPCtag+".root" print(rootFile) card.addHistoShapeFromFile("W",[varMJJ],rootFile,"W",['scale:scale','sigma:sigma'],False,0) # card.addFixedYieldFromFile("W",0,rootFile,"res"+sfx_rgn) card.addVTagSFCustomYield("W",0, inputDir+"LNuJJ_res"+sfx_rgn+"_MJJ_"+lepton+"_HP_"+category+".root", inputDir+"LNuJJ_res"+sfx_rgn+"_MJJ_"+lepton+"_LP_"+category+".root", inputDir+"LNuJJ_res"+sfx_rgn+"_MJJ_"+lepton+"_NP_"+category+".root", purity) ## Non-resonant bkgd card.addHistoShapeFromFile("bkg",[varMJJ],rootFile,"bkg",['scale:bkgShape0_'+LPCYtag,'sigma:bkgShape1_'+LPCYtag,'slope:bkgShape2_'+LPCYtag,'fT:bkgShape3_'+LPCYtag,'fE:bkgShape4_'+LPCYtag],False,0) card.addFixedYieldFromFile("bkg",1,rootFile,"bkg") #DATA card.importBinnedData(inputDir+"LNuJJ_norm_"+LPCtag+".root","data"+sfx_rgn,[varMJJ]) ## SYSTEMATICS card.addSystematic("bkgNorm_"+LPCtag,"lnN",{'bkg':1.20}) card.addSystematic('scale',"param",[0.0,0.333]) card.addSystematic('sigma',"param",[0.0,0.333]) card.addSystematic('bkgShape0_'+LPCYtag,"param",[0.0,0.333]) card.addSystematic('bkgShape1_'+LPCYtag,"param",[0.0,0.333]) card.addSystematic('bkgShape2_'+LPCYtag,"param",[0.0,0.333]) card.addSystematic('bkgShape3_'+LPCYtag,"param",[0.0,0.333]) card.addSystematic('bkgShape4_'+LPCYtag,"param",[0.0,0.333]) card.makeCard()
if p == 'LPLP': from JJ_VJets_LPLP import JJ_VJets__MVV, JJ_VJets__Res_l1, JJ_VJets__ratio_l1, JJ_VJets__Res_l2, JJ_VJets__ratio_l2 card.addMVVBackgroundShapeQCD("Vjets_mjj", "MJJ", True, "", JJ_VJets__MVV) card.addMjetBackgroundShapeVJetsGaus("Vjets_mjetRes_l1", "MJ1", "", JJ_VJets__Res_l1, {'CMS_scale_prunedj': 1}, {'CMS_res_prunedj': 1.0}) card.addMjetBackgroundShapeVJetsGaus("Vjets_mjetRes_l2", "MJ2", "", JJ_VJets__Res_l2, {'CMS_scale_prunedj': 1}, {'CMS_res_prunedj': 1.0}) card.product3D("Vjet", "Vjets_mjetRes_l1", "Vjets_mjetRes_l2", "Vjets_mjj") card.addFixedYieldFromFile("Vjet", 1, "JJ_VJets_%s.root" % p, "VJets", 1.0) #QCD rootFile = "JJ_nonRes_3D_" + p + ".root" card.addHistoShapeFromFile( "nonRes", ["MJ1", "MJ2", "MJJ"], rootFile, "histo", [ 'PTXY:CMS_VV_JJ_nonRes_PTXY', 'OPTXY:CMS_VV_JJ_nonRes_OPTXY', 'PTZ:CMS_VV_JJ_nonRes_PTZ', 'OPTZ:CMS_VV_JJ_nonRes_OPTZ' ], False, 0) card.addFixedYieldFromFile("nonRes", 2, "JJ_" + p + ".root", "nonRes") #DATA card.importBinnedData("JJ_" + p + ".root", "data", ["MJ1", "MJ2", "MJJ"]) #SYSTEMATICS
# card.addParametricYield("XWW",0,"LNuJJ_XWW_"+lepton+"_"+purity+"_"+category+"_yield.json") # card.addParametricYieldWithCrossSection("XWW",0,"LNuJJ_XWW_"+lepton+"_"+purity+"_"+category+"_yield.json",'sigma_hvt.json','sigma0','BRWW') #WZ signal-MVV card.addMVVSignalParametricShape("XWZ_MVV","MLNuJ","LNuJJ_XWZ_MVV_"+lepton+".json",{'CMS_scale_j':1,'CMS_scale_MET':1.0},{'CMS_res_j':1.0,'CMS_res_MET':1.0}) card.addMJJSignalParametricShape("Zqq","MJ","LNuJJ_XWZ_MJJ_"+purity+".json",{'CMS_scale_prunedj_0':1,'CMS_scale_prunedj_1':'MH'},{'CMS_res_prunedj_0':1.0,'CMS_res_prunedj_1':'MH'}) card.product("XWZ","Zqq","XWZ_MVV") card.addParametricYield("XWZ",0,"LNuJJ_XWZ_"+lepton+"_"+purity+"_"+category+"_yield.json") #W+jets rootFile="LNuJJ_MVVHist_Wjets_"+lepton+"_"+purity+".root" card.addHistoShapeFromFile("Wjets",["MLNuJ","MJ"],rootFile,"histo",["slopeSyst_Wjets_"+lepton,"widthSyst_Wjets_"+lepton,"meanSyst0_Wjets_"+lepton,"meanSyst1_Wjets_"+lepton,"slopeSystMJJ_Wjets_"+purity,"widthSystMJJ_Wjets_"+purity,"meanSystMJJ_Wjets_"+purity],False,2) card.addFixedYieldFromFile("Wjets",1,"LNuJJ_"+lepton+"_"+purity+"_"+category+".root","Wjets") #TOP RES card.addMJJSignalParametricShapeCB("WqqTop","MJ","LNuJJ_MJJ_topRes_"+purity+".json",{'CMS_scale_prunedj_0':1,'CMS_scale_prunedj_1':'MLNuJ'},{'CMS_res_prunedj_0':1.0,'CMS_res_prunedj_1':'MLNuJ'},"MLNuJ") rootFile="LNuJJ_MVVHist_topRes_"+lepton+"_"+category+".root" card.addHistoShapeFromFile("topRes_MVV",["MLNuJ"],rootFile,"histo",["slopeSyst_topRes_"+lepton+"_"+category,"widthSyst_topRes_"+lepton+"_"+category,"meanSyst_topRes_"+lepton+"_"+category],False,2) card.conditionalProduct("topRes","WqqTop","MLNuJ","topRes_MVV") card.addFixedYieldFromFile("topRes",2,"LNuJJ_"+lepton+"_"+purity+"_"+category+".root","topRes") #SM WW card.addMJJSignalParametricShape("WqqVV","MJ","LNuJJ_XWW_MJJ_"+purity+".json",{'CMS_scale_prunedj_0':1,'CMS_scale_prunedj_1':'MH'},{'CMS_res_prunedj_0':1.0,'CMS_res_prunedj_1':'MH'},"MLNuJ")
"JJ_XqZ_" + p + "_yield.json", 1, 'CMS_tau21_PtDependence', 'log(MH/600)', 0.041) card.product("XqW", "Wqq", "XqW_MVV") card.product("XqZ", "Zqq", "XqZ_MVV") #QCD rootFile = "JJ_nonRes_2D_" + p + ".root" qcdTag = "_".join([p]) card.addHistoShapeFromFile("nonRes", ["MJJ", "MJ"], rootFile, "histo", [ 'PTX:CMS_VV_JJ_nonRes_PTX_' + qcdTag, 'OPTX:CMS_VV_JJ_nonRes_OPTX_' + qcdTag, 'OPTY:CMS_VV_JJ_nonRes_OPTY_' + qcdTag, 'PTY:CMS_VV_JJ_nonRes_PTY_' + qcdTag ], False, 0) card.addFixedYieldFromFile("nonRes", 1, "JJ_" + p + ".root", "nonRes") #DATA card.importBinnedData("JJ_" + p + ".root", "data", ["MJJ", "MJ"]) #SYSTEMATICS #luminosity card.addSystematic("CMS_lumi", "lnN", {'XWW': 1.026, 'XWZ': 1.026}) #kPDF uncertainty for the signal card.addSystematic("CMS_pdf", "lnN", {'XWW': 1.01, 'XWZ': 1.01}) #W+jets cross section in acceptance-dominated by pruned mass card.addSystematic( "CMS_VV_JJ_nonRes_norm_" + lepton + "_" + purity + "_" + category,
#WW signal-MVV card.addMVVSignalParametricShape("XWW_MVV","MLNuJ","LNuJJ_XWW_"+lepton+"_"+purity+".json",{'CMS_scale_j':1,'CMS_scale_MET':1.0},{'CMS_res_j':1.0,'CMS_res_MET':1.0}) #WWsignal M-JJ card.addMJJSignalParametricShape("Wqq","MJ","LNuJJ_XWW_"+lepton+"_"+purity+".json",{'CMS_scale_prunedj_0':1,'CMS_scale_prunedj_1':'MH'},{'CMS_res_prunedj_0':1.0,'CMS_res_prunedj_1':'MH'}) card.conditionalProduct("XWW","Wqq","MLNuJ","XWW_MVV") #parametric yield for signal card.addParametricYield("XWW",0,"LNuJJ_XWW_"+lepton+"_"+purity+"_"+category+"_yield.json") #W+jets - quark card.addMJJParametricBackgroundShapeErfExp("Wjets_quark_MJ","MJ","LNuJJ_MJJ_Wjets_quark_"+lepton+"_"+purity+".json",{'wMJJSlopeQ_'+lepton+"_"+purity:1.0},{'wMJJMeanQ_'+lepton+"_"+purity:1.0},{'wMJJSigmaQ_'+lepton+"_"+purity:1.0}) card.addParametricMVVBKGShapeErfPow("Wjets_quark_MVV","MLNuJ","MJ","LNuJJ_MVV_Wjets_quark_"+lepton+"_"+purity+".json","",{'wSlope_'+lepton+"_"+purity:1.0},{'wMean0_'+lepton+"_"+purity:1.0,'wMean1_'+lepton+"_"+purity:'MJ'},{'wSigma_'+lepton+"_"+purity:1.0}) card.conditionalProduct("Wjets_quark","Wjets_quark_MVV","MJ","Wjets_quark_MJ") card.addFixedYieldFromFile("Wjets_quark",1,"LNuJJ_"+lepton+"_"+purity+"_"+category+".root","Wjets_quark") #W+jets - gluon card.addMJJParametricBackgroundShapeErfExp("Wjets_gluon_MJ","MJ","LNuJJ_MJJ_Wjets_gluon_"+lepton+"_"+purity+".json",{'wMJJSlopeG_'+lepton+"_"+purity:1.0},{'wMJJMeanG_'+lepton+"_"+purity:1.0},{'wMJJSigmaG_'+lepton+"_"+purity:1.0}) card.addParametricMVVBKGShapeErfPow("Wjets_gluon_MVV","MLNuJ","MJ","LNuJJ_MVV_Wjets_gluon_"+lepton+"_"+purity+".json","",{'wSlope_'+lepton+"_"+purity:1.0},{'wMean0_'+lepton+"_"+purity:1.0,'wMean1_'+lepton+"_"+purity:'MJ'},{'wSigma_'+lepton+"_"+purity:1.0}) card.conditionalProduct("Wjets_gluon","Wjets_gluon_MVV","MJ","Wjets_gluon_MJ") card.addFixedYieldFromFile("Wjets_gluon",2,"LNuJJ_"+lepton+"_"+purity+"_"+category+".root","Wjets_gluon") #TOP RES card.addMJJSignalParametricShapeCB("WqqTop","MJ","LNuJJ_MJJ_topRes_"+purity+".json",{'CMS_scale_prunedj_0':1,'CMS_scale_prunedj_1':'MLNuJ'},{'CMS_res_prunedj_0':1.0,'CMS_res_prunedj_1':'MLNuJ'},"MLNuJ") card.addParametricMVVBKGShapeErfPow("topRes_MVV","MLNuJ","MJ","LNuJJ_MVV_topRes_"+lepton+"_"+purity+".json","",{'topResSlope_'+lepton+"_"+purity:1.0},{'topResMean_'+lepton+"_"+purity:1.0},{'topResSigma_'+lepton+"_"+purity:1.0}) card.conditionalProduct("topRes","WqqTop","MLNuJ","topRes_MVV") card.addFixedYieldFromFile("topRes",1,"LNuJJ_"+lepton+"_"+purity+"_"+category+".root","topRes")
sig, 0, inputDir + "LNuJJ_" + sig + "_" + LPCEtag + "_yield.json", 1, 'CMS_Vtag_PtDependence_' + YEAR, '(-3.54e-5*(MH-650))', 1.) ## Non-resonant bkgd rootFile = inputDir + "LNuJJ_nonRes" + sfx_rgn + "_2D_" + LPCEtag + ".root" card.addHistoShapeFromFile( "nonRes", [varMVV, varMJJ], rootFile, "histo", [ 'MVVScale:CMS_VV_LNuJ_nonRes_MVVScale_' + LPCEYtag, 'Diag:CMS_VV_LNuJ_nonRes_Diag_' + LPCEYtag, 'logWeight:CMS_VV_LNuJ_nonRes_logWeight_' + LPCEYtag, 'MJJScale:CMS_VV_LNuJ_nonRes_MJJScale_' + LPCEYtag ], False, 0) card.addFixedYieldFromFile( "nonRes", 1, inputDir + "LNuJJ_norm" + sfx_rgn + "_" + LPCEtag + ".root", "nonRes" + sfx_rgn) ## Resonant bkgd rootFile = inputDir + "LNuJJ_res" + sfx_rgn + "_2D_" + LPCEtag + ".root" if purity == 'HP': card.addHistoShapeFromFile( "res", [varMVV, varMJJ], rootFile, "histo", [ 'MVVScale:CMS_VV_LNuJ_res_MVVScale_' + LPCEYtag, 'MVVTail:CMS_VV_LNuJ_res_MVVTail_' + LPCEYtag, 'scaleWY:CMS_scale_prunedj_WPeak_' + PYtag, 'resWY:CMS_res_prunedj_WPeak_' + PYtag, 'scaleTopY:CMS_scale_prunedj_TopPeak_' + PYtag, 'resTopY:CMS_res_prunedj_TopPeak_' + PYtag, 'fractionY:CMS_VV_LNuJ_res_fractionY_' + LPCEYtag ], False, 0)