#-------------------------- # QCD Gamma Fakes - for CRY #-------------------------- qcdGammaFakeSample = Sample(zlFitterConfig.qcdSampleName+"GammaFakes", kOrange+2) qcdGammaFakeSample.setTreeName("QCD_SRAll") qcdGammaFakeSample.setNormFactor("mu_"+zlFitterConfig.qcdSampleName+"GammaFakes", 1., 0., 500.) qcdGammaFakeSample.setFileList(qcdGammaFakeFiles) qcdGammaFakeSample.setStatConfig(zlFitterConfig.useStat) # qcdGammaFakeSample.setStatConfig(False) qcdGammaFakeSample.addSampleSpecificWeight("(phTruthOrigin!=38)") if zlFitterConfig.doSetNormRegion: if "CRYQ" in zlFitterConfig.constrainingRegionsList: qcdGammaFakeSample.setNormRegions([("CRYQ", zlFitterConfig.binVar)]) # Define samples #FakePhotonSample = Sample("Bkg",kGreen-9) #FakePhotonSample.setStatConfig(False) #FakePhotonSample.buildHisto([nbkg],"UserRegion","cuts") # ucb = Systematic("ucb", configMgr.weights, 1 + nbkgErr/nbkg, 1 - nbkgErr/nbkg, "user","userOverallSys") #FakePhotonSample.addSystematic(ucb) #-------------------------- # Top #-------------------------- topSample = Sample(zlFitterConfig.topSampleName, kGreen-9)
wzKtScale = Systematic("KtScaleWZ", configMgr.weights, ktScaleWHighWeights, ktScaleWLowWeights, "weight", "normHistoSys") # JES uncertainty as shapeSys - one systematic per region (combine WR and TR), merge samples jes = Systematic("JES", "_NoSys", "_JESup", "_JESdown", "tree", "normHistoSys") mcstat = Systematic("mcstat", "_NoSys", "_NoSys", "_NoSys", "tree", "shapeStat") # name of nominal histogram for systematics configMgr.nomName = "_NoSys" # List of samples and their plotting colours topSample = Sample("Top", kGreen - 9) topSample.setNormFactor("mu_Top", 1., 0., 5.) topSample.setStatConfig(useStat) topSample.setNormRegions([("SLWR", "nJet"), ("SLTR", "nJet")]) wzSample = Sample("WZ", kAzure + 1) wzSample.setNormFactor("mu_WZ", 1., 0., 5.) wzSample.setStatConfig(useStat) wzSample.setNormRegions([("SLWR", "nJet"), ("SLTR", "nJet")]) bgSample = Sample("BG", kYellow - 3) bgSample.setNormFactor("mu_BG", 1., 0., 5.) bgSample.setStatConfig(useStat) bgSample.setNormRegions([("SLWR", "nJet"), ("SLTR", "nJet")]) qcdSample = Sample("QCD", kGray + 1) qcdSample.setQCD(True, "histoSys") qcdSample.setStatConfig(useStat) dataSample = Sample("Data", kBlack) dataSample.setData() dataSample.buildHisto([86., 66., 62., 35., 11., 7., 2., 0.], "SLTR", "nJet", 2) dataSample.buildHisto([1092., 426., 170., 65., 27., 9., 4., 1.], "SLWR",
higgsSample = addSys(higgsSample, False, sysObj) # ----------------------------------------------------- # # ZV # # ----------------------------------------------------- # zvSample.setStatConfig(useStat) if userOpts.splitMCSys : zvSample.addSystematic(sysObj.AR_mcstat_ZV) # Determine the normalization region : # --> If zero jet : pick "a" CR # --> If one jet : pick "b" CR if userOpts.doSimFit2LZV : if('Super0a' in SR or 'Super0b' in SR or 'Super0c' in SR) : zvSample.setNormRegions([("emCRZV14a", "cuts")]) userPrint(" >>> Normalization region for ZV : emCRZV14a") elif('Super1a' in SR or 'Super1b' in SR or 'Super1c' in SR) : zvSample.setNormRegions([("emCRZV14b", "cuts")]) userPrint(" >>> Normalization region for ZV : emCRZV14b") # add systematics zvSample = addSys(zvSample, userOpts.doSimFit2LZV, sysObj) # set normalization factor if userOpts.doSimFit2LZV : if('Super0a' in SR or 'Super0b' in SR or 'Super0c' in SR) : zvSample.setNormFactor("mu_ZV14a", 1.,0.,10.) userPrint(" >>> Normalization factor for ZV : mu_ZV14a") elif('Super1a' in SR or 'Super1b' in SR or 'Super1c' in SR) : zvSample.setNormFactor("mu_ZV14b", 1., 0., 10.) userPrint(" >>> Normalization factor for ZV : mu_ZV14b") else :
dibosonSample.setFileList(dibosonFiles) dibosonSample.setStatConfig(useStat) if useSyst: dibosonSample.addSystematic(theoSysDiboson) topSample = Sample("ttbar",kGreen-9) topSample.setTreeName("Top_SRAll") topSample.setNormFactor("mu_Top",1.,0.,500.) topSample.setFileList(topFiles) topSample.setStatConfig(useStat) if useTheoSys: if useSyst: topSample.addSystematic(theoSysTop) ####topSample.addSystematic(mu1ScaleSysTop) ####topSample.addSystematic(mu2ScaleSysTop) ####topSample.addSystematic(matchScaleSysTop) topSample.setNormRegions([("CRT","meffInc"),("CRW","meffInc")]) qcdSample = Sample("Multijets",kOrange+2) qcdSample.setTreeName("QCDdd") qcdSample.setNormFactor("mu_Multijets",1.,0.,500.) qcdSample.setFileList(qcdFiles) qcdSample.setStatConfig(useStat) qcdSample.addWeight("0.000001")#qcd prenormalisation #qcdSample.addSystematic(QCDGausSys) #qcdSample.addSystematic(QCDTailSys) qcdSample.setNormRegions([("CRQCD","meffInc")]) wSample = Sample("Wjets",kAzure+1) wSample.setTreeName("W_SRAll")
# JES uncertainty as shapeSys - one systematic per region (combine WR and TR), merge samples jes = Systematic("JES","_NoSys","_JESup","_JESdown","tree","overallNormHistoSys") statWRwz = Systematic("SLWR_wz", "_NoSys","","","tree","shapeStat") statWRtop = Systematic("SLWR_top","_NoSys","","","tree","shapeStat") # name of nominal histogram for systematics configMgr.nomName = "_NoSys" # List of samples and their plotting colours topSample = Sample("Top",kGreen-9) topSample.setNormFactor("mu_Top",1.,0.,5.) topSample.setStatConfig(useStat) topSample.setNormRegions([("SLWR","nJet"),("SLTR","nJet")]) wzSample = Sample("WZ",kAzure+1) wzSample.setNormFactor("mu_WZ",1.,0.,5.) wzSample.setStatConfig(useStat) wzSample.setNormRegions([("SLWR","nJet"),("SLTR","nJet")]) bgSample = Sample("BG",kYellow-3) bgSample.setNormFactor("mu_BG",1.,0.,5.) bgSample.setStatConfig(useStat) bgSample.setNormRegions([("SLWR","nJet"),("SLTR","nJet")]) qcdSample = Sample("QCD",kGray+1) qcdSample.setQCD(True,"histoSys") qcdSample.setStatConfig(useStat) dataSample = Sample("Data",kBlack) dataSample.setData()
# create SR channel and add them to signal_channels for sr in srs: signal_channels.append(fitconfig.addChannel(variable, [sr], *binning)) # ----------------- # Control regions # ----------------- CRQ = fitconfig.addChannel(variable, ['CRQ'], *binning) CRW = fitconfig.addChannel(variable, ['CRW'], *binning) CRT = fitconfig.addChannel(variable, ['CRT'], *binning) constraint_channels.append(CRQ) constraint_channels.append(CRW) constraint_channels.append(CRT) wgamma_sample.setNormRegions(['CRW', variable]) ttbarg_sample.setNormRegions(['CRT', variable]) photonjet_sample.setNormRegions(['CRQ', variable]) # ------------------- # Validation regions # ------------------- if do_validation: VRQ = fitconfig.addChannel(variable, ['VRQ'], *binning) VRM1L = fitconfig.addChannel(variable, ['VRM1L'], *binning) VRM2L = fitconfig.addChannel(variable, ['VRM2L'], *binning) VRM1H = fitconfig.addChannel(variable, ['VRM1H'], *binning) VRM2H = fitconfig.addChannel(variable, ['VRM2H'], *binning) VRL1 = fitconfig.addChannel(variable, ['VRL1'], *binning)
signal_channels.append(SR) # ----------------- # Control regions # ----------------- CRQ = fitconfig.addChannel(variable, ['CRQ'], *binning) CRW = fitconfig.addChannel(variable, ['CRW'], *binning) CRT = fitconfig.addChannel(variable, ['CRT'], *binning) constraint_channels.append(CRQ) constraint_channels.append(CRW) constraint_channels.append(CRT) wgamma_sample .setNormRegions(['CRW', variable]) ttbarg_sample .setNormRegions(['CRT', variable]) photonjet_sample.setNormRegions(['CRQ', variable]) # ------------------- # Validation regions # ------------------- if do_validation: VRM1L = fitconfig.addChannel(variable, ['VRM1L'], *binning) VRM2L = fitconfig.addChannel(variable, ['VRM2L'], *binning) VRM3L = fitconfig.addChannel(variable, ['VRM3L'], *binning) VRM1H = fitconfig.addChannel(variable, ['VRM1H'], *binning) VRM2H = fitconfig.addChannel(variable, ['VRM2H'], *binning) VRM3H = fitconfig.addChannel(variable, ['VRM3H'], *binning) validation_channels.append(VRM1H)
topSample.setFileList(topFiles) topSample.setStatConfig(useStat) if useTheoSys: topSample.addSystematic(theoSysTop) if useSyst : topSample.addSystematic(pileup) topSample.addSystematic(jes) topSample.addSystematic(jer) topSample.addSystematic(scalest) topSample.addSystematic(resost) if useSyst and useCRWTY: #topSample.setNormRegions([("CRT","cuts"),("CRW","cuts")]) topSample.setNormRegions([("CRT", binVar)]) # QCD qcdSample = Sample("Multijets", kOrange+2) qcdSample.setTreeName("QCDdd") qcdSample.setNormFactor("mu_Multijets", 1., 0., 500.) qcdSample.setFileList(qcdFiles) qcdSample.setStatConfig(useStat) qcdSample.addWeight("0.0000013")#ATT: qcd prenormalisation ## if useSyst : ## if useQCDMethodSyst: ## qcdSample.addSystematic(QCDTailSys ) ## qcdSample.addSystematic(QCDGausSys ) ## else: ## qcdSample.addSystematic(theoSysQCD)
# phoScaleMuttgamma = Systematic("phoScale",configMgr.weights, 1.015,1-.015, "user","userOverallSys") # phoScaleMuttbarDilep = Systematic("phoScale",configMgr.weights, 1.028, 1-.028, "user","userOverallSys") # phoScaleMust = Systematic("phoScale",configMgr.weights, 1.023, 1-.023, "user","userOverallSys") # phoScaleMudiboson = Systematic("phoScale",configMgr.weights, 1.040, 1-.040, "user","userOverallSys") # phoScaleMuZgamma = Systematic("phoScale",configMgr.weights, 1.025, 1-.025, "user","userOverallSys") ## List of samples and their plotting colours. Associate dedicated systematics if applicable. ttbargamma = Sample("ttbargamma",46) # brick ttbargamma.setNormByTheory() ttbargamma.setStatConfig(True) ttbargamma.addSystematic(ttbargammaNorm) Wgamma = Sample("Wgamma",7) # cyan Wgamma.setNormFactor("mu_Wgamma",1.,0.,5.) Wgamma.setNormRegions([("WCRhHTEl", "cuts")]) Wgamma.setStatConfig(True) #Wgamma.addSystematic(WgammaNorm) Zgamma = Sample("Zgamma",kViolet) # cyan Zgamma.setNormByTheory() Zgamma.setStatConfig(True) Zgamma.addSystematic(ZgammaNorm) Zjets = Sample("Zjets",kBlue) # cyan Zjets.setNormByTheory() Zjets.setStatConfig(True) Zjets.addSystematic(ZjetsNorm) Wjets = Sample("Wjets",3) # green Wjets.setNormByTheory(False)
for region in yields_dict : configMgr.cutsDict[region] = "1." # if "CR" in region : # sample_for_cr = region.split("_")[1].lower() # if sample.name.lower() == sample_for_cr : # set_norm_by_theory = False # sample.setNormFactor("mu_%s" % sample.name.lower(), 1.0, 0.0, 10.0) # sample.setNormRegions([ (region, "cuts") ]) if set_norm_by_theory : sample.setNormByTheory() # add the samples tlx.addSamples(all_samples) # signal if myFitType == FitType.Exclusion : sample_sig.setStatConfig(True) sample_sig.setNormFactor("mu_Test", 1.0, 0.0, 10.0) sample_sig.setNormRegions( [ ("CR_BKG0", "cuts") ] )#, ("CR_BKG1", "cuts") ] ) sample_sig.setNormByTheory() tlx.addSamples(sample_sig) # tlx.setSignalSample(sample_sig) # tlx.addSignalChannels(sr_channels) if myFitType == FitType.Background : #tlx.addSignalChannels(sr_channels) tlx.addValidationChannels(sr_channels)
higgsSample = addSys(higgsSample, False, sysObj) #------------------------------------------------# # ZV # #------------------------------------------------# zvSample.setStatConfig(useStat) if userOpts.splitMCSys: zvSample.addSystematic(sysObj.AR_mcstat_ZV) # Determine the normalization region # This should be done only if we fit # Regardless of channel combined ee+mm if 'SR1' in SR and userOpts.doSimFit2LZV: zvSample.setNormRegions([("emZVCRmet","cuts")]) if 'SR2a' in SR and userOpts.doSimFit2LZV: zvSample.setNormRegions([("emZVCRmt2a","cuts")]) if 'SR2b' in SR and userOpts.doSimFit2LZV: zvSample.setNormRegions([("emZVCRmt2a","cuts")]) if 'SR4a' in SR and userOpts.doSimFit2LZV: zvSample.setNormRegions([("emZVCRmt2a","cuts")]) if 'SR4b' in SR and userOpts.doSimFit2LZV: zvSample.setNormRegions([("emZVCRmt2a","cuts")]) if 'SR4c' in SR and userOpts.doSimFit2LZV: zvSample.setNormRegions([("emZVCRmt2a","cuts")])
# ucb = Systematic("ucb", configMgr.weights, 1 + nbkgErr/nbkg, 1 - nbkgErr/nbkg, "user","userOverallSys") # FakePhotonSample.addSystematic(ucb) # -------------------------- # Top # -------------------------- topSample = Sample(zlFitterConfig.topSampleName, kGreen - 9) topSample.setTreeName("Top_SRAll") topSample.setNormFactor("mu_" + zlFitterConfig.topSampleName, 1.0, 0.0, 500.0) topSample.setFileList(topFiles) topSample.setStatConfig(zlFitterConfig.useStat) if zlFitterConfig.doSetNormRegion: if "CRT" in zlFitterConfig.constrainingRegionsList and "CRW" in zlFitterConfig.constrainingRegionsList: topSample.setNormRegions([("CRT", zlFitterConfig.binVar), ("CRW", zlFitterConfig.binVar)]) if not zlFitterConfig.usePreComputedTopGeneratorSys: topSample.addSystematic( Systematic( "generatorTop", configMgr.weights, "_aMcAtNloHerwigpp", "_aMcAtNloHerwigpp", "tree", "overallNormHistoSysOneSideSym", ) ) if not zlFitterConfig.usePreComputedTopFragmentationSys: topSample.addSystematic( Systematic(