# KtScale uncertainty as histoSys - two-sided, no additional normalization topKtScale = Systematic("KtScaleTop", configMgr.weights, ktScaleTopHighWeights, ktScaleTopLowWeights, "weight", "normHistoSys") 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)
configMgr.outputLumi = 139 # fb-1 configMgr.setLumiUnits("fb-1") configMgr.weights = ["1"] configMgr.calculatorType = 2 # calculator type: 0= Frequentist, 1=Hybrid, 2=Aymptotic configMgr.testStatType = 3 # # test stat type: 0=LEP, 1=Tevatron, 2=Profile Likelihood, 3=One-sided PLL configMgr.nPoints = 20 configMgr.writeXML = True configMgr.histCacheFile = "data/" + configMgr.analysisName + ".root" configMgr.outputFileName = "results/" + configMgr.analysisName + "_Output.root" print "is discovery ? %s" % (myFitType == FitType.Discovery) sample_bkg0 = Sample("bkg0", ROOT.kBlue) sample_bkg0.setStatConfig(True) sample_bkg1 = Sample("bkg1", ROOT.kGreen) sample_bkg1.setStatConfig(True) sample_data = Sample("data", ROOT.kBlack) sample_data.setData() sample_sig = Sample("sig", ROOT.kRed) sample_sig.setStatConfig(True) all_samples = [sample_bkg0, sample_bkg1, sample_data] # systematics norm_syst_bkg0 = Systematic("Norm_Bkg0", configMgr.weights, 1.0 + 0.5,
configMgr.writeXML = True ########################## # Give the analysis a name configMgr.analysisName = "MyCutOptAnalysis_SS" configMgr.outputFileName = "results/%s_Output.root" % configMgr.analysisName # Define cuts configMgr.cutsDict["UserRegion"] = "1." # Define weights configMgr.weights = "1." # Define samples bkgSample = Sample("Bkg", kGreen - 9) #bkgSample.setStatConfig(True) bkgSample.buildHisto([nbkg], "UserRegion", "cuts", 0.5) #bkgSample.buildStatErrors([nbkgErr],"UserRegion","cuts") bkgSample.addSystematic(ucb) sigSample = Sample("Sig", kPink) sigSample.setNormFactor("mu_SS", 1., 0., 10.) #sigSample.setStatConfig(True) #sigSample.setNormByTheory() sigSample.buildHisto([nsig], "UserRegion", "cuts", 0.5) dataSample = Sample("Data", kBlack) dataSample.setData() dataSample.buildHisto([ndata], "UserRegion", "cuts", 0.5)
phoScaleMuWgamma = Systematic("phoScale", configMgr.weights, 1.018, 1 - .018, "user", "userOverallSys") 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.setNormByTheory() Wgamma.setStatConfig(True) Wgamma.addSystematic(WgammaNorm) Zgamma = Sample("Zgamma", 7) # cyan Zgamma.setNormByTheory() Zgamma.setStatConfig(True) Zgamma.addSystematic(ZgammaNorm) Zleplep = Sample("Zleplep", 7) # cyan
samples = [] channels = [] POIs = [] signal_sample = None # prepare the fit configuration ana = configMgr.addFitConfig("shape_fit") meas = ana.addMeasurement(name="shape_fit", lumi=1.0, lumiErr=0.01) # load all MC templates ... for sample_name, template_name, template_color, is_floating, is_signal in zip( sample_names, template_names, template_colors, normalization_floating, signal_samples): cur_sample = Sample(sample_name, template_color) if is_floating: normalization_name = "mu_" + sample_name cur_sample.setNormFactor(normalization_name, 1, 0, 100) if is_signal: POIs.append(normalization_name) signal_sample = cur_sample # ... for all regions for region_name, region_infile in zip(region_names, region_infiles): binvals, edges = HistogramImporter.import_histogram( os.path.join(indir, region_infile), template_name) bin_width = edges[1] - edges[0]
"bTagWeight2Jet") ktScaleTopLowWeights = ("genWeight", "eventWeight", "ktfacDownWeightTop", "bTagWeight2Jet") #topKtScale = Systematic("KtScaleTop",configMgr.weights,ktScaleTopHighWeights,ktScaleTopLowWeights,"weight","overallSys") topKtScale = Systematic("KtScaleTop", configMgr.weights, ktScaleTopHighWeights, ktScaleTopLowWeights, "weight", "histoSys") #topKtScale = Systematic("KtScaleTop",configMgr.weights,ktScaleTopHighWeights,ktScaleTopLowWeights,"weight","normHistoSys") #JES (tree-based) jes = Systematic("JES", "_NoSys", "_JESup", "_JESdown", "tree", "overallSys") configMgr.nomName = "_NoSys" #------------------------------------------- # List of samples and their plotting colours #------------------------------------------- topSample = Sample("Top", kGreen - 9) #topSample.setNormFactor("mu_Top",1.,0.,5.) wzSample = Sample("WZ", kAzure + 1) #wzSample.setNormFactor("mu_WZ",1.,0.,5.) dataSample = Sample("Data", kBlack) dataSample.setData() #************** # Exclusion fit #************** #Fit config instance exclusionFitConfig = configMgr.addTopLevelXML("Exclusion") meas = exclusionFitConfig.addMeasurement(name="NormalMeasurement", lumi=1.0, lumiErr=0.039)
configMgr.nPoints = 20 # number of values scanned of signal-strength for upper-limit determination of signal strength. ########################## # Give the analysis a name configMgr.analysisName = "SimpleUL_%s" % SR configMgr.outputFileName = "results/%s_Output.root" % configMgr.analysisName # Define cuts configMgr.cutsDict["UserRegion"] = "1." # Define weights configMgr.weights = "1." # Define samples bkgSample = Sample("Bkg", kGreen - 9) bkgSample.setStatConfig(False) bkgSample.buildHisto([nbkg], "UserRegion", "cuts") #bkgSample.buildStatErrors([nbkgErr],"UserRegion","cuts") #bkgSample.addSystematic(corb) bkgSample.addSystematic(ucb) dataSample = Sample("Data", kBlack) dataSample.setData() dataSample.buildHisto([ndata], "UserRegion", "cuts") # Define top-level ana = configMgr.addFitConfig("SPlusB") ana.addSamples([bkgSample, dataSample]) #ana.setSignalSample(sigSample)
## set scan range for the upper limit #configMgr.scanRange = (0., 1.) ## Suffix of nominal tree configMgr.nomName = "_NoSys" ## Map regions to cut strings configMgr.cutsDict = {"SR":"1.0"} ## Systematics to be applied jes = Systematic("JES","_NoSys","_JESup","_JESdown","tree","overallSys") #jes = Systematic("JES",None,1.2,0.8,"user","overallSys") ## List of samples and their plotting colours allbkgSample = Sample("Bkg",kGreen) #allbkgSample.setNormFactor("mu_AllBkg",1.,0.,5.) #allbkgSample.addSystematic(jesWT) dataSample = Sample("Data",kBlack) dataSample.setData() commonSamples = [allbkgSample,dataSample] configMgr.plotColours = [kGreen,kBlack] ## Parameters of the Measurement measName = "BasicMeasurement" measLumi = 1. measLumiError = 0.039 ## Parameters of Channels cutsRegions = ["SR"]
1.0 - ZMap['mu1ScaleWeightDown'][level][chn], "user", "userOverallSys") mu2ScaleTFSysZ = Systematic("mu2ScaleTFSys", configMgr.weights, 1.0 + ZMap['mu2ScaleWeightUp'][level][chn], 1.0 - ZMap['mu2ScaleWeightDown'][level][chn], "user", "userOverallSys") sherpaTFSysTop = Systematic("sherpaTFSys", configMgr.weights, 1.0 + TopMap['topSherpa'][level][chn], 1.0 - TopMap['topSherpa'][level][chn], "user", "userOverallSys") #------------------------------------------- # List of samples and their plotting colours #------------------------------------------- dibosonSample = Sample("Diboson", kRed + 3) dibosonSample.setTreeName("Diboson_SRAll") dibosonSample.setFileList(dibosonFiles) dibosonSample.setStatConfig(useStat) 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: topSample.addSystematic(theoSysTop) ####topSample.addSystematic(mu1ScaleSysTop) ####topSample.addSystematic(mu2ScaleSysTop) ####topSample.addSystematic(matchScaleSysTop)
#qcdMuNorm = Systematic("qcdMuNorm",configMgr.weights, 1.15, 0.85, "user","userOverallSys") photon = Systematic("photon", configMgr.weights, 1.011, 1 - 0.011, "user", "userOverallSys") electron = Systematic("electron", configMgr.weights, 1.01, 0.99, "user", "userOverallSys") trig = Systematic("trig", configMgr.weights, 1.0001, 1 - 0.0158, "user", "userOverallSys") muon = Systematic("muon", configMgr.weights, 1.004, 0.996, "user", "userOverallSys") elToPhoton = Systematic("elToPhoton", configMgr.weights, 1.07, 1 - 0.07, "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, 0., 5.) #Wgamma.setNormRegions([("WCRhHT", "cuts")]) Wgamma.setStatConfig(True) #Wgamma.addSystematic(WgammaNorm) Zgamma = Sample("Zgamma", kViolet) # cyan Zgamma.setNormByTheory() Zgamma.setStatConfig(True) Zgamma.addSystematic(ZgammaNorm)
# Define top-level ana = configMgr.addFitConfig("ABCD") # Define measurement meas = ana.addMeasurement(name="NormalMeasurement", lumi=1.0, lumiErr=lumiError) meas.addPOI("mu_A") """ meas.addParamSetting("mu_dummy_D",True,1) meas.addParamSetting("mu_dummy_B",True,1) meas.addParamSetting("mu_dummy_C",True,1) """ #meas.addParamSetting("Lumi",True,1) #create test data dataSample = Sample("Data", kBlack) dataSample.setData() dataSample.buildHisto([ndataA], "A", "cuts", 0.5) dataSample.buildHisto([ndataB], "B", "cuts", 0.5) dataSample.buildHisto([ndataC], "C", "cuts", 0.5) dataSample.buildHisto([ndataD], "D", "cuts", 0.5) backgroundSample = Sample("NonQCDBackground", kBlack) backgroundSample.buildHisto([nbkgA], "A", "cuts", 0.5) backgroundSample.buildHisto([nbkgB], "B", "cuts", 0.5) backgroundSample.buildHisto([nbkgC], "C", "cuts", 0.5) backgroundSample.buildHisto([nbkgD], "D", "cuts", 0.5) ana.addSamples([dataSample, backgroundSample]) #make dummy samples