コード例 #1
0
)
 
#====== B-jet selection
bjetSelection = PSet(
              jetPtCut = 30.0,
             jetEtaCut = 2.5,
             #bjetDiscr = "combinedInclusiveSecondaryVertexV2BJetTags",
             bjetDiscr = "pfCombinedInclusiveSecondaryVertexV2BJetTags",
 bjetDiscrWorkingPoint = "Loose",
 numberOfBJetsCutValue = 1,
 numberOfBJetsCutDirection = ">=", # options: ==, !=, <, <=, >, >=
)

scaleFactors.setupBtagSFInformation(btagPset=bjetSelection, 
                                    btagPayloadFilename="CSVv2.csv",
                                    #btagEfficiencyFilename="btageff_TTJets.json",
                                    #btagEfficiencyFilename="btageff_WJetsHT.json",
                                    btagEfficiencyFilename="btageff_hybrid.json",
                                    direction="nominal")

#====== MET selection
metSelection = PSet(
           METCutValue = 100.0, #for heavy H+, overriden in signalAnalysis.py for light H+
       METCutDirection = ">", # options: ==, !=, <, <=, >, >=
  METSignificanceCutValue = -1000.0,
  METSignificanceCutDirection = ">", # options: ==, !=, <, <=, >, >=
               METType = "MET_Type1", # options: MET_Type1, MET_Type1_NoHF, MET_Puppi, GenMET, L1MET, HLTMET, CaloMET
   applyPhiCorrections = False  # FIXME: no effect yet
)
# MET trigger SF
scaleFactors.assignMETTriggerSF(metSelection, bjetSelection.bjetDiscrWorkingPoint, "nominal")
コード例 #2
0
    triggerMatchingCone = 0.1,  # DeltaR for matching offline bjet with trigger::TriggerBjet 
              jetPtCuts = [30.0],
             jetEtaCuts = [2.4],
             bjetDiscr  = "pfCombinedInclusiveSecondaryVertexV2BJetTags", # default
#             bjetDiscr  = "pfCombinedMVAV2BJetTags", # use this for MVA b-tagging
 bjetDiscrWorkingPoint  = "Medium", #optimal for CSVv2
# bjetDiscrWorkingPoint  = "Tight", #optimal for CMVAv2
 numberOfBJetsCutValue  = 1,
 numberOfBJetsCutDirection = ">=", # options: ==, !=, <, <=, >, >=
)

scaleFactors.setupBtagSFInformation(btagPset=bjetSelection, 
                                    btagPayloadFilename="CSVv2.csv",
                                    #btagPayloadFilename="cMVAv2_Moriond17_B_H.csv", # use this for MVA b-tagging
                                    #btagEfficiencyFilename="btageff_TTJets.json",
                                    #btagEfficiencyFilename="btageff_WJetsHT.json",
                                    #btagEfficiencyFilename="btageff_hybrid.json",
                                    #btagEfficiencyFilename="btageff_hybrid_HToTB.json",
                                    btagEfficiencyFilename="btageff_Hybrid_TT+WJetsHT.json", # use with taunu analysis and WJetsHT samples
                                    direction="nominal")

#====== MET selection
metSelection = PSet(
           METCutValue = 90.0,
       METCutDirection = ">", # options: ==, !=, <, <=, >, >=
  METSignificanceCutValue = -1000.0,
  METSignificanceCutDirection = ">", # options: ==, !=, <, <=, >, >=
               METType = "MET_Type1", # options: MET_Type1, MET_Type1_NoHF, MET_Puppi, GenMET, L1MET, HLTMET, CaloMET
   applyPhiCorrections = False  # FIXME: no effect yet
)
# MET trigger SF
コード例 #3
0
    def __init__(self, selectorName, moduleName, config, **kwargs):
        self._selectorName = selectorName
        self._moduleName = moduleName
        self._config = config.clone()
        #self.__dict__.update(kwargs)
	#print kwargs
        #===== Process all keyword arguments to make changes to the config
        keys = kwargs.keys()
        for key in keys:
	    value = kwargs[key]
	    if key == "systematics":
                self._config.histogramAmbientLevel = "Systematics"
                # Energy scales
		if value.startswith("tauES"):
		    self._config.TauSelection.systematicVariation = "_"+value.replace("Plus","down").replace("Minus","up").replace("tauES","TES")
		elif value.startswith("JES"):
		    self._config.JetSelection.systematicVariation = "_"+value.replace("Plus","down").replace("Minus","up")
		# Fake tau 
		elif value.startswith("FakeTau"):
                    etaRegion = "full"
                    if "Barrel" in value:
                        etaRegion = "barrel"
                    elif "Endcap" in value:
                        etaRegion = "endcap"
                    partonFakingTau = None
                    if "Electron" in value:
                        partonFakingTau = "eToTau"
                    elif "Muon" in value:
                        partonFakingTau = "muToTau"
                    elif "Jet" in value:
                        partonFakingTau = "jetToTau"
                    scaleFactors.assignTauMisidentificationSF(self._config.TauSelection, 
                                                              partonFakingTau, etaRegion, 
                                                              self._getDirectionString(value))
		# Trigger
		elif value.startswith("TauTrgEff"):
                    variationType = value.replace("TauTrgEff","").replace("Minus","").replace("Plus","")
                    scaleFactors.assignTauTriggerSF(self._config.TauSelection, self._getDirectionString(value), variationType)
                elif value.startswith("METTrgEff"):
                    variationType = value.replace("METTrgEff","").replace("Minus","").replace("Plus","")
                    scaleFactors.assignMETTriggerSF(self._config.METSelection, self._config.BJetSelection.bjetDiscrWorkingPoint, self._getDirectionString(value), variationType)
		# b tag SF
		elif value.startswith("BTagSF") or value.startswith("BMistagSF"):
                    variationType = None
                    if value.startswith("BTagSF"):
                        variationType = "tag"
                    elif value.startswith("BMistagSF"):
                        variationType = "mistag"
                    direction = value.replace("BTagSF","").replace("BMistagSF","").replace("Minus","down").replace("Plus","up")
                    scaleFactors.setupBtagSFInformation(self._config.BJetSelection,
                                                        btagPayloadFilename="CSVv2.csv",
                                                        btagEfficiencyFilename="btageff_TTJets.json",
                                                        direction=direction,
                                                        variationInfo=variationType)
		# top quarks
		elif value.startswith("TopPt"):
                    self._config.topPtSystematicVariation = value.replace("TopPt","").replace("Plus","plus").replace("Minus","minus")
		else:
		    if value != "nominal":
                        raise Exception("Error: unsupported variation item '%s'!"%value)
	    else:
		# Process optimization options
		# First check that key is found in config
		subkeys = key.split(".")
		subconfig = [self._config]
		suffix = ""
		for i in range(len(subkeys)-1):
		    if not hasattr(subconfig[len(subconfig)-1], subkeys[i]):
			raise Exception("Error: Cannot find key %s.%s in the config!"%(suffix, subkeys[i]))
		    subconfig.append(getattr(subconfig[len(subconfig)-1], subkeys[i]))
		    if suffix == "":
			suffix += "%s"%subkeys[i]
		    else:
			suffix += ".%s"%subkeys[i]
		# Set value
		if key.startswith("AngularCuts") and subkeys[len(subkeys)-1] == "workingPoint":
                    from HiggsAnalysis.NtupleAnalysis.parameters.signalAnalysisParameters import setAngularCutsWorkingPoint
                    setAngularCutsWorkingPoint(subconfig[len(subconfig)-1], value)
                else:
                    if not hasattr(subconfig[len(subconfig)-1], subkeys[len(subkeys)-1]):
                        raise Exception("Error: Cannot find key %s.%s in the config!"%(suffix, subkeys[len(subkeys)-1]))
                    setattr(subconfig[len(subconfig)-1], subkeys[len(subkeys)-1], value)
コード例 #4
0
#================================================================================================
# FakeB Measurement Options
#================================================================================================
fakeBBjetSelection = PSet(
    triggerMatchingApply      = bjetSelection.triggerMatchingApply,
    triggerMatchingCone       = bjetSelection.triggerMatchingCone,
    jetPtCuts                 = bjetSelection.jetPtCuts,
    jetEtaCuts                = bjetSelection.jetEtaCuts,
    bjetDiscr                 = bjetSelection.bjetDiscr,    
    bjetDiscrWorkingPoint     = "Loose", # NOTE: Defines VR and CR2
    numberOfBJetsCutValue     = bjetSelection.numberOfBJetsCutValue,
    numberOfBJetsCutDirection = bjetSelection.numberOfBJetsCutDirection,
    )
scaleFactors.setupBtagSFInformation(btagPset               = fakeBBjetSelection, 
                                    btagPayloadFilename    = "CSVv2.csv",
                                    btagEfficiencyFilename = "btageff_HToTB.json",
                                    direction              = "nominal")

fakeBMeasurement = PSet(
    # b-jets
    baselineBJetsCutValue          = 2,    # [default: 2]
    baselineBJetsCutDirection      = "==", # [default: ==]
    baselineBJetsDiscr             = bjetSelection.bjetDiscr,
    baselineBJetsDiscrWP           = bjetSelection.bjetDiscrWorkingPoint,
    # Tops
    LdgTopMVACutValue              = topSelectionBDT.TopMVACutValue,
    LdgTopMVACutDirection          = topSelectionBDT.TopMVACutDirection, 
    SubldgTopMVACutValue           = topSelectionBDT.TopMVACutValue,
    SubldgTopMVACutDirection       = "<", # [default: "<"]
    )
コード例 #5
0
# Fat jet selection
#=================================================================================================
fatjetVeto = hplus2tbAnalysis.fatjetVeto

#================================================================================================
# B-jet selection
#================================================================================================
bjetSelection = hplus2tbAnalysis.bjetSelection
bjetSelection.jetPtCuts = [40.0]
bjetSelection.numberOfBJetsCutValue = 1

#================================================================================================
# Scale Factors
#================================================================================================
scaleFactors.setupBtagSFInformation(btagPset               = bjetSelection,
                                    btagPayloadFilename    = "CSVv2.csv",
                                    btagEfficiencyFilename = "btageff_HToTB.json",
                                    direction              = "nominal")

#=================================================================================================
# QGL selection
#================================================================================================= 
#qglrSelection = hplus2tbAnalysis.qglrSelection
#jsonReader.setupQGLInformation(QGLRPset  = qglrSelection,
#                               jsonname_Light  = "QGLdiscriminator_QCD_LightJets.json",
#                               jsonname_Gluon  = "QGLdiscriminator_QCD_GluonJets.json")

#================================================================================================
# Top selection BDT
#================================================================================================
topSelectionBDT = hplus2tbAnalysis.topSelectionBDT
コード例 #6
0
#=================================================================================================
fatjetVeto = hplus2tbAnalysis.fatjetVeto

#================================================================================================
# B-jet selection
#================================================================================================
bjetSelection = hplus2tbAnalysis.bjetSelection
bjetSelection.jetPtCuts = [40.0]
bjetSelection.numberOfBJetsCutValue = 1

#================================================================================================
# Scale Factors
#================================================================================================
scaleFactors.setupBtagSFInformation(
    btagPset=bjetSelection,
    btagPayloadFilename="CSVv2.csv",
    btagEfficiencyFilename="btageff_HToTB.json",
    direction="nominal")

#=================================================================================================
# QGL selection
#=================================================================================================
#qglrSelection = hplus2tbAnalysis.qglrSelection
#jsonReader.setupQGLInformation(QGLRPset  = qglrSelection,
#                               jsonname_Light  = "QGLdiscriminator_QCD_LightJets.json",
#                               jsonname_Gluon  = "QGLdiscriminator_QCD_GluonJets.json")

#================================================================================================
# Top selection BDT
#================================================================================================
topSelectionBDT = hplus2tbAnalysis.topSelectionBDT