# selections.BJetSelection.bjetDiscr = algo # selections.BJetSelection.bjetDiscrWorkingPoint = wp # suffix = "_%s_%s"%(algo,wp) # print "Added analyzer for algo/wp: %s"%suffix # process.addAnalyzer("BTagEfficiency"+suffix, Analyzer("BTagEfficiencyAnalysis", config=selections, silent=False)) # Build analysis modules from HiggsAnalysis.NtupleAnalysis.AnalysisBuilder import AnalysisBuilder builder = AnalysisBuilder("BTagEfficiencyAnalysis", dataEras, searchModes, #### Options #### usePUreweighting=True, doSystematicVariations=False, ) builder.addVariation("BJetSelection.bjetDiscr", ["pfCombinedInclusiveSecondaryVertexV2BJetTags"]) builder.addVariation("BJetSelection.bjetDiscrWorkingPoint", ["Loose", "Medium", "Tight"]) builder.build(process, allSelections) # Example of adding an analyzer whose configuration depends on dataVersion #def createAnalyzer(dataVersion): #a = Analyzer("ExampleAnalysis") #if dataVersion.isMC(): #a.tauPtCut = 10 #else: #a.tauPtCut = 20 #return a #process.addAnalyzer("test2", createAnalyzer) # Pick events #process.addOptions(EventSaver = PSet(enabled = True,pickEvents = True))
def main(): # Require at least two arguments (script-name, path to multicrab) if len(sys.argv) < 2: Print( "Not enough arguments passed to script execution. Printing docstring & EXIT." ) print __doc__ sys.exit(0) else: pass # ================================================================================================ # Setup the process # ================================================================================================ #from HiggsAnalysis.NtupleAnalysis.parameters.signalAnalysisParameters import obtainAnalysisSuffix #process = Process("QCDMeasurement"+obtainAnalysisSuffix(sys.argv)) process = Process(prefix, postfix, opts.nEvts) # ================================================================================================ # Add the datasets (according to user options) # ================================================================================================ if (opts.includeOnlyTasks): Print("Adding only dataset %s from multiCRAB directory %s" % (opts.includeOnlyTasks, opts.mcrab)) process.addDatasetsFromMulticrab( opts.mcrab, includeOnlyTasks=opts.includeOnlyTasks) elif (opts.excludeTasks): Print("Adding all datasets except %s from multiCRAB directory %s" % (opts.excludeTasks, opts.mcrab)) Print( "If collision data are present, then vertex reweighting is done according to the chosen data era (era=2015C, 2015D, 2015) etc..." ) process.addDatasetsFromMulticrab(opts.mcrab, excludeTasks=opts.excludeTasks) else: #myBlackList = [] #QCD_bEnriched"] #["ChargedHiggs", "QCD-b"] myBlackList = [ "M_800", "M_400", "M_350", "M_3000", "M_300", "M_250", "M_220", "M_2000", "M_200", "M_180", "M_1000", "QCD_b" ] Print("Adding all datasets from multiCRAB directory %s except %s" % (opts.mcrab, (",".join(myBlackList)))) Print( "Vertex reweighting is done according to the chosen data era (%s)" % (",".join(dataEras))) # process.addDatasetsFromMulticrab(opts.mcrab, blacklist=myBlackList) if len(myBlackList) > 0: regex = "|".join(myBlackList) process.addDatasetsFromMulticrab(opts.mcrab, excludeTasks=regex) else: process.addDatasetsFromMulticrab(opts.mcrab) # ================================================================================================ # Overwrite Default Settings # ================================================================================================ from HiggsAnalysis.NtupleAnalysis.parameters.hplus2tbAnalysis import allSelections allSelections.verbose = opts.verbose allSelections.histogramAmbientLevel = opts.histoLevel allSelections.BJetSelection.jetPtCuts = [40.0, 30.0] # allSelections.BJetSelection.triggerMatchingApply = True # at least 1 trg b-jet matched to offline b-jets # allSelections.Trigger.triggerOR = ["HLT_PFHT400_SixJet30", #Prescale 110 at inst. lumi 1.35E+34 # "HLT_PFHT450_SixJet40", #Prescale 26 at inst. lumi 1.35E+34] # allSelections.Trigger.triggerOR = ["HLT_PFHT400_SixJet30_DoubleBTagCSV_p056"] # allSelections.Trigger.triggerOR = ["HLT_PFHT450_SixJet40_BTagCSV_p056"] # ================================================================================================ # Command Line Options # ================================================================================================ # from HiggsAnalysis.NtupleAnalysis.parameters.signalAnalysisParameters import applyAnalysisCommandLineOptions # applyAnalysisCommandLineOptions(sys.argv, allSelections) # ================================================================================================ # Build analysis modules # ================================================================================================ PrintOptions(opts) builder = AnalysisBuilder(prefix, dataEras, searchModes, usePUreweighting=opts.usePUreweighting, useTopPtReweighting=opts.useTopPtReweighting, doSystematicVariations=opts.doSystematics) # Add variations (e.g. for optimisation) # builder.addVariation("BJetSelection.triggerMatchingApply", [True, False]) # At least 1 trg b-jet dR-matched to offline b-jets # builder.addVariation("FakeBMeasurement.prelimTopFitChiSqrCutValue", [100, 20]) # builder.addVariation("FakeBMeasurement.prelimTopFitChiSqrCutDirection", ["<=", "==", ">="]) # builder.addVariation("FakeBMeasurement.numberOfBJetsCutValue", [0, 1]) # builder.addVariation("FakeBMeasurement.numberOfBJetsCutDirection", ["=="]) # builder.addVariation("FakeBMeasurement.numberOfBJetsCutDirection", ["<=", "==", ">="]) # builder.addVariation("FakeBMeasurement.numberOfInvertedBJetsCutValue", [0, 1]) # builder.addVariation("FakeBMeasurement.numberOfInvertedBJetsCutDirection", [">="]) # builder.addVariation("FakeBMeasurement.invertedBJetDiscr", "") # builder.addVariation("FakeBMeasurement.invertedBJetDiscrWorkingPoint", "Loose") # builder.addVariation("FakeBMeasurement.invertedBJetsSortType", ["Random", "DescendingBDiscriminator"]) # builder.addVariation("FakeBMeasurement.invertedBJetsDiscrMaxCutValue", [0.82, 0.80, 0.75, 0.70]) # builder.addVariation("TopSelection.ChiSqrCutValue", [100]) # builder.addVariation("Trigger.triggerOR", [["HLT_PFHT450_SixJet40"], ["HLT_PFHT400_SixJet30"]]) # builder.addVariation("TopologySelection.FoxWolframMomentCutValue", [0.5, 0.7]) builder.addVariation("Trigger.triggerOR", [["HLT_PFHT400_SixJet30_DoubleBTagCSV_p056"], ["HLT_PFHT450_SixJet40_BTagCSV_p056"]]) # builder.addVariation("Trigger.triggerOR", [["HLT_PFHT400_SixJet30_DoubleBTagCSV_p056", "HLT_PFHT450_SixJet40_BTagCSV_p056"]]) # Build the builder builder.build(process, allSelections) # ================================================================================================ # Example of adding an analyzer whose configuration depends on dataVersion # ================================================================================================ # def createAnalyzer(dataVersion): # a = Analyzer("ExampleAnalysis") # if dataVersion.isMC(): # a.tauPtCut = 10 # else: # a.tauPtCut = 20 # return a # process.addAnalyzer("test2", createAnalyzer) # ================================================================================================ # Pick events # ================================================================================================ # process.addOptions(EventSaver = PSet(enabled = True,pickEvents = True)) # ================================================================================================ # Run the analysis # ================================================================================================ # Run the analysis with PROOF? You can give proofWorkers=<N> as a parameter if opts.jCores: Print("Running process with PROOF (proofWorkes=%s)" % (str(opts.jCores))) process.run(proof=True, proofWorkers=opts.jCores) else: Print("Running process (no PROOF)") process.run() return
# suffix = "_%s_%s"%(algo,wp) # print "Added analyzer for algo/wp: %s"%suffix # process.addAnalyzer("BTagEfficiency"+suffix, Analyzer("BTagEfficiencyAnalysis", config=selections, silent=False)) # Build analysis modules from HiggsAnalysis.NtupleAnalysis.AnalysisBuilder import AnalysisBuilder builder = AnalysisBuilder( "BTagEfficiencyAnalysis", dataEras, searchModes, #### Options #### usePUreweighting=True, doSystematicVariations=False, ) builder.addVariation("BJetSelection.bjetDiscr", [ "pfCombinedInclusiveSecondaryVertexV2BJetTags", "pfCombinedMVAV2BJetTags" ]) builder.addVariation("BJetSelection.bjetDiscrWorkingPoint", ["Loose", "Medium", "Tight"]) builder.build(process, allSelections) # Example of adding an analyzer whose configuration depends on dataVersion #def createAnalyzer(dataVersion): #a = Analyzer("ExampleAnalysis") #if dataVersion.isMC(): #a.tauPtCut = 10 #else: #a.tauPtCut = 20 #return a #process.addAnalyzer("test2", createAnalyzer)
def main(): # Require at least two arguments (script-name, path to multicrab) if len(sys.argv) < 2: Print( "Not enough arguments passed to script execution. Printing docstring & EXIT." ) print __doc__ sys.exit(0) else: pass # ================================================================================================ # Setup the process # ================================================================================================ process = Process(prefix, postfix, opts.nEvts) # ================================================================================================ # Add the datasets (according to user options) # ================================================================================================ if (opts.includeOnlyTasks): Print("Adding only dataset %s from multiCRAB directory %s" % (opts.includeOnlyTasks, opts.mcrab)) process.addDatasetsFromMulticrab( opts.mcrab, includeOnlyTasks=opts.includeOnlyTasks) elif (opts.excludeTasks): Print("Adding all datasets except %s from multiCRAB directory %s" % (opts.excludeTasks, opts.mcrab)) Print( "If collision data are present, then vertex reweighting is done according to the chosen data era (era=2015C, 2015D, 2015) etc..." ) process.addDatasetsFromMulticrab(opts.mcrab, excludeTasks=opts.excludeTasks) else: Print("Adding all datasets from multiCRAB directory %s" % (opts.mcrab)) Print( "If collision data are present, then vertex reweighting is done according to the chosen data era (era=2015C, 2015D, 2015) etc..." ) process.addDatasetsFromMulticrab(opts.mcrab) # ================================================================================================ # Selection customisations # ================================================================================================ if opts.analysisType == "HToTauNu": from HiggsAnalysis.NtupleAnalysis.parameters.signalAnalysisParameters import allSelections # Disable rtau allSelections.TauSelection.prongs = 1 allSelections.TauSelection.rtau = 0.0 elif opts.analysisType == "HToTB": from HiggsAnalysis.NtupleAnalysis.parameters.hplus2tbAnalysis import allSelections else: raise Exception( "Invalid analysis selection \"%s\"! Valid options are: %s" % (opts.analysisType, ", ".join(allowedAnalysis))) # Jet cut values allSelections.__setattr__("jetPtCutMin", 0.0) allSelections.__setattr__("jetPtCutMax", 99990.0) allSelections.__setattr__("jetEtaCutMin", -2.5) allSelections.__setattr__("jetEtaCutMax", 2.5) # for algo in ["combinedInclusiveSecondaryVertexV2BJetTags"]: # for wp in ["Loose", "Medium", "Tight"]: # selections = allSelections.clone() # selections.BJetSelection.bjetDiscr = algo # selections.BJetSelection.bjetDiscrWorkingPoint = wp # suffix = "_%s_%s"%(algo,wp) # print "Added analyzer for algo/wp: %s"%suffix # process.addAnalyzer("BTagEfficiency"+suffix, Analyzer("BTagEfficiencyAnalysis", config=selections, silent=False)) # Set the analysis type allSelections.__setattr__("AnalysisType", opts.analysisType) # Overwrite verbosity allSelections.verbose = opts.verbose # Overwrite histo ambient level (Options: Systematics, Vital, Informative, Debug) allSelections.histogramAmbientLevel = opts.histoLevel #================================================================================================ # Build analysis modules #================================================================================================ PrintOptions(opts) builder = AnalysisBuilder( prefix, dataEras, searchModes, #### Options #### usePUreweighting=opts.usePUreweighting, useTopPtReweighting=opts.useTopPtReweighting, doSystematicVariations=opts.doSystematics) # ================================================================================================ # Add Analysis Variations # ================================================================================================ builder.addVariation("BJetSelection.bjetDiscr", ["pfCombinedInclusiveSecondaryVertexV2BJetTags"]) builder.addVariation("BJetSelection.bjetDiscrWorkingPoint", ["Loose", "Medium", "Tight"]) # ================================================================================================ # Build the builder # ================================================================================================ builder.build(process, allSelections) # ================================================================================================ # Run the analysis # ================================================================================================ Print("Running process", True) process.run()
def main(): # Require at least two arguments (script-name, path to multicrab) if len(sys.argv) < 2: Print("Not enough arguments passed to script execution. Printing docstring & EXIT.") print __doc__ sys.exit(0) else: pass # ================================================================================================ # Setup the process # ================================================================================================ maxEvents = {} maxEvents["All"] = opts.nEvts process = Process(prefix, postfix, maxEvents) # ================================================================================================ # Add the datasets (according to user options) # ================================================================================================ if (opts.includeOnlyTasks): Print("Adding only dataset \"%s\" from multiCRAB directory %s" % (opts.includeOnlyTasks, opts.mcrab)) process.addDatasetsFromMulticrab(opts.mcrab, includeOnlyTasks=opts.includeOnlyTasks) elif (opts.excludeTasks): Print("Adding all datasets except \"%s\" from multiCRAB directory %s" % (opts.excludeTasks, opts.mcrab)) Print("If collision data are present, then vertex reweighting is done according to the chosen data era (era=2015C, 2015D, 2015) etc...") process.addDatasetsFromMulticrab(opts.mcrab, excludeTasks=opts.excludeTasks) else: myBlackList = [] if opts.analysisType == "HToTB": myBlackList = ["QCD_b", "ChargedHiggs", "DY", "WZ", "WW", "ZZ", "TTTT", "ST", "TTWJets", "TTZ"] Print("Adding all datasets from multiCRAB directory %s" % (opts.mcrab)) Print("If collision data are present, then vertex reweighting is done according to the chosen data era (era=2015C, 2015D, 2015) etc...") regex = "|".join(myBlackList) if len(myBlackList)>0: process.addDatasetsFromMulticrab(opts.mcrab, excludeTasks=regex) else: process.addDatasetsFromMulticrab(opts.mcrab) # ================================================================================================ # Selection customisations # ================================================================================================ if opts.analysisType == "HToTauNu": from HiggsAnalysis.NtupleAnalysis.parameters.signalAnalysisParameters import allSelections # Disable rtau allSelections.TauSelection.prongs = 1 allSelections.TauSelection.rtau = 0.0 elif opts.analysisType == "HToTB": from HiggsAnalysis.NtupleAnalysis.parameters.hplus2tbAnalysis import allSelections else: raise Exception("Invalid analysis selection \"%s\"! Valid options are: %s" % (opts.analysisType, ", ".join(allowedAnalysis))) # Jet cut values allSelections.__setattr__("jetPtCutMin", 0.0) allSelections.__setattr__("jetPtCutMax", 99990.0) allSelections.__setattr__("jetEtaCutMin", -2.5) allSelections.__setattr__("jetEtaCutMax", 2.5) if 0: for algo in ["combinedInclusiveSecondaryVertexV2BJetTags"]: for wp in ["Loose", "Medium", "Tight"]: selections = allSelections.clone() selections.BJetSelection.bjetDiscr = algo selections.BJetSelection.bjetDiscrWorkingPoint = wp suffix = "_%s_%s"%(algo,wp) print "Added analyzer for algo/wp: %s"%suffix process.addAnalyzer("BTagEfficiency"+suffix, Analyzer("BTagEfficiencyAnalysis", config=selections, silent=False)) # Set the analysis type allSelections.__setattr__("AnalysisType", opts.analysisType) # Overwrite verbosity allSelections.verbose = opts.verbose # Overwrite histo ambient level (Options: Systematics, Vital, Informative, Debug) allSelections.histogramAmbientLevel = opts.histoLevel #================================================================================================ # Build analysis modules #================================================================================================ PrintOptions(opts) builder = AnalysisBuilder(prefix, dataEras, searchModes, #### Options #### usePUreweighting = opts.usePUreweighting, useTopPtReweighting = opts.useTopPtReweighting, doSystematicVariations = opts.doSystematics) # ================================================================================================ # Add Analysis Variations # ================================================================================================ builder.addVariation("BJetSelection.bjetDiscr", ["pfCombinedInclusiveSecondaryVertexV2BJetTags"]) builder.addVariation("BJetSelection.bjetDiscrWorkingPoint", ["Loose", "Medium", "Tight"]) # ================================================================================================ # Build the builder # ================================================================================================ builder.build(process, allSelections) # ================================================================================================ # Run the analysis # ================================================================================================ Print("Running process", True) process.run()