# 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"]
Example #9
0
                                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)
Example #10
0
#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)
Example #11
0
# 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