Ejemplo n.º 1
0
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print(
            "Not enough arguments passed to script execution. Printing docstring & EXIT."
        )
        parser.print_help()
        #print __doc__
        sys.exit(1)

    # Append folder to save directory path
    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab,
                                          prefix="",
                                          postfix="TopTagSystematics")

    # See: https://twiki.cern.ch/twiki/bin/viewauth/CMS/TopSystematics
    allowedTypes = [
        "showerScales", "highPtRadiation", "colourReconnection", "mTop",
        "evtGen", "partonShower"
    ]
    if opts.type not in allowedTypes:
        Print(
            "Invalid type \"%s\" selected. Please choose one of the following: %s"
            % (opts.type, ", ".join(allowedTypes)), True)
        sys.exit()

    # Apply type-related changes
    # opts.saveDir = os.path.join(opts.saveDir, opts.type)
Ejemplo n.º 2
0
                      help="Path to the multicrab directory for input")

    parser.add_option(
        "--refHisto",
        dest="refHisto",
        action="store",
        default=REFHISTO,
        help=
        "Name of histogram to be used as refernce in comparison many plotter [default: %s]"
        % (REFHISTO))

    (opts, args) = parser.parse_args()

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab,
                                          prefix="",
                                          postfix="TFsInFakeBDir")

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print(
            "Not enough arguments passed to script execution. Printing docstring & EXIT."
        )
        parser.print_help()
        sys.exit(1)

    main(opts)
Ejemplo n.º 3
0
    parser.add_option("--inclusiveOnly", dest="inclusiveOnly", action="store_true", default=INCLUSIVE,
                      help="Only calculate the inclusive Transfer Factor (TF). Do not calculated binned TF? [default: %s]" % (INCLUSIVE) )
    
    parser.add_option("--ratio", dest="ratio", action="store_true", default=RATIO,
                      help="Draw ratio canvas for Data/MC curves? [default: %s]" % (RATIO) )
    
    parser.add_option("--folder", dest="folder", default=FOLDER,
                      help="Folder in ROOT files under which all necessary histograms are located [default: %s]" % (FOLDER) )

    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)
        
    # Sanity check
    if opts.noSFcrab == None or opts.withCR2SFcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        sys.exit(1)
        
    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.noSFcrab, prefix=opts.analysisName+"/", postfix="")

    # Call the main function
    main(opts)

    if not opts.batchMode:
        raw_input("=== getEfficiencies.py: Press any key to quit ROOT ...")
Ejemplo n.º 4
0
    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab, prefix="", postfix="DataMC")

    # Sanity check
    allowedMass = [180, 200, 220, 250, 300, 350, 400, 500, 800, 1000, 2000, 3000]
    if opts.signalMass!=0 and opts.signalMass not in allowedMass:
        Print("Invalid signal mass point (=%.0f) selected! Please select one of the following:" % (opts.signalMass), True)
        for m in allowedMass:
            Print(m, False)
        sys.exit()
    else:
        opts.signal = "ChargedHiggs_HplusTB_HplusToTB_M_%.0f" % opts.signalMass

    # Sanity check
    allowedFolders = ["counters", "counters/weighted", "Weighting", "ForDataDrivenCtrlPlots", 
                      "ForDataDrivenCtrlPlotsEWKFakeB", "ForDataDrivenCtrlPlotsEWKGenuineB", "PUDependency", 
                      "Selection_Veto", "muSelection_Veto", "tauSelection_Veto", 
Ejemplo n.º 5
0
    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab, prefix="", postfix="Purity")
        
    # Sanity check
    allowedFolders = ["ForDataDrivenCtrlPlots", "ForFakeBMeasurement"]
    if opts.folder not in allowedFolders:
        Print("Invalid folder \"%s\"! Please select one of the following:" % (opts.folder), True)
        for m in allowedFolders:
            Print(m, False)
        sys.exit()

    # Call the main function
    main(opts)

    if not opts.batchMode:
        raw_input("=== printPSets.py: Press any key to quit ROOT ...")
Ejemplo n.º 6
0
                      help="Only calculate the inclusive Transfer Factor (TF). Do not calculated binned TF? [default: %s]" % (INCLUSIVE) )

    parser.add_option("--ratio", dest="ratio", action="store_true", default=RATIO,
                      help="Draw ratio canvas for Data/MC curves? [default: %s]" % (RATIO) )

    parser.add_option("--folder", dest="folder", default=FOLDER,
                      help="Folder in ROOT files under which all necessary histograms are located [default: %s]" % (FOLDER) )

    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    # Sanity check
    if opts.mcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab, prefix="", postfix="TransferFactor")

    # Call the main function
    main(opts)

    if not opts.batchMode:
        raw_input("=== getABCD_TF.py: Press any key to quit ROOT ...")
    parser.add_option("--inclusiveOnly", dest="inclusiveOnly", action="store_true", default=INCLUSIVE,
                      help="Only calculate the inclusive Transfer Factor (TF). Do not calculated binned TF? [default: %s]" % (INCLUSIVE) )
    
    parser.add_option("--ratio", dest="ratio", action="store_true", default=RATIO,
                      help="Draw ratio canvas for Data/MC curves? [default: %s]" % (RATIO) )
    
    parser.add_option("--folder", dest="folder", default=FOLDER,
                      help="Folder in ROOT files under which all necessary histograms are located [default: %s]" % (FOLDER) )

    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)
        
    # Sanity check
    if opts.noSFcrab == None or opts.withCR1SFcrab == None or opts.withCR2SFcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        sys.exit(1)
        
    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.noSFcrab, prefix=opts.analysisName+"/", postfix="")

    # Call the main function
    main(opts)

    if not opts.batchMode:
        raw_input("=== getEfficiencies.py: Press any key to quit ROOT ...")
Ejemplo n.º 8
0
    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab, prefix="", postfix="Significance")

    #if opts.normalizeByCrossSection == False and opts.normalizeToLumi == False:
        #raise Exception("One of the options --normalizeByCrossSection, --normalizeToLumi must be enabled (set to \"True\").")

    # Sanity check
    allowedFolders = ["counters", "counters/weighted", "PUDependency", "Weighting", 
                      "eSelection_Veto", "muSelection_Veto", "tauSelection_Veto",
                      "ForDataDrivenCtrlPlotsEWKFakeB", "ForDataDrivenCtrlPlotsEWKGenuineB",
                      "jetSelection_", "bjetSelection_", "metSelection_", 
                      "topologySelection_", "topbdtSelection_", "ForDataDrivenCtrlPlots"]

    if opts.folder not in allowedFolders:
        Print("Invalid folder \"%s\"! Please select one of the following:" % (opts.folder), True)
        for m in allowedFolders:
            Print(m, False)
Ejemplo n.º 9
0
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    # Sanity check
    if opts.mcrab == None:
        Print(
            "Not enough arguments passed to script execution. Printing docstring & EXIT."
        )
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab,
                                          prefix="",
                                          postfix="TransferFactor")

    # Call the main function
    dsetSets = {
        "Run2016": [
            "Run2016B", "Run2016C", "Run2016D", "Run2016E", "Run2016F",
            "Run2016G", "Run2016H"
        ],
        ### Individual Runs (too small statistics)
        # "Run2016B" : ["Run2016B"],
        # "Run2016C" : ["Run2016C"],
        # "Run2016D" : ["Run2016D"],
        # "Run2016E" : ["Run2016E"],
        # "Run2016F" : ["Run2016F"],
        # "Run2016G" : ["Run2016G"],
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        sys.exit(1)

    if opts.mcrab2 == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        sys.exit(1)

    if opts.mcrab3 == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab1, prefix="", postfix="ClosurePerturbation")

    # Sanity check
    allowedMass = [180, 200, 220, 250, 300, 350, 400, 500, 650, 800, 1000, 2000, 3000]

    if opts.signalMass!=0 and opts.signalMass not in allowedMass:
        Print("Invalid signal mass point (=%.0f) selected! Please select one of the following:" % (opts.signalMass), True)
        for m in allowedMass:
            Print(m, False)
        sys.exit()
    else:
        opts.signal = "ChargedHiggs_HplusTB_HplusToTB_M_%.0f" % opts.signalMass

    # Call the main function
    main(opts)
Ejemplo n.º 11
0
                      help="List of datasets in mcrab to include")

    parser.add_option("-e", "--excludeTasks", dest="excludeTasks", action="store", 
                      help="List of datasets in mcrab to exclude")
    
    parser.add_option("--folder", dest="folder", type="string", default = FOLDER,
                      help="ROOT file folder under which all histograms to be plotted are located [default: %s]" % (FOLDER) )

    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab, prefix="", postfix="CSVv2AndCRs")

        
    # Call the main function
    main(opts)

    if not opts.batchMode:
        raw_input("=== plot_CSVv2AndCRs.py: Press any key to quit ROOT ...")
Ejemplo n.º 12
0
    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print(
            "Not enough arguments passed to script execution. Printing docstring & EXIT."
        )
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab,
                                          prefix="",
                                          postfix="Purity")

    # Sanity check
    allowedFolders = ["ForDataDrivenCtrlPlots", "ForFakeBMeasurement"]
    if opts.folder not in allowedFolders:
        Print(
            "Invalid folder \"%s\"! Please select one of the following:" %
            (opts.folder), True)
        for m in allowedFolders:
            Print(m, False)
        sys.exit()

    # Call the main function
    main(opts)
Ejemplo n.º 13
0
    
    parser.add_option("--saveDir", dest="saveDir", type="string", default=SAVEDIR,
                      help="Directory where all pltos will be saved [default: %s]" % SAVEDIR)

    parser.add_option("--url", dest="url", action="store_true", default=URL,
                      help="Don't print the actual save path the histogram is saved, but print the URL instead [default: %s]" % URL)

    parser.add_option("-o", "--optMode", dest="optMode", type="string", default=OPTMODE,
                      help="The optimization mode when analysis variation is enabled  [default: %s]" % OPTMODE)

    parser.add_option("--fast", dest="fast", action="store_true", default=FAST,
                      help="Only plots the OR trigger for 2 variables (testing purposes)  [default: %s]" % FAST)
    
    (opts, parseArgs) = parser.parse_args()

    # Sanity check
    if opts.mcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab, prefix="", postfix="Efficiency")

    # Program execution
    main(opts)
        
    if not opts.batchMode:
        raw_input("=== plotEfficiency.py: Press any key to quit ROOT ...")
        default=FOLDER,
        help=
        "ROOT file folder under which all histograms to be plotted are located [default: %s]"
        % (FOLDER))

    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print(
            "Not enough arguments passed to script execution. Printing docstring & EXIT."
        )
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab,
                                          prefix="",
                                          postfix="MediumAndLoose")

    # Call the main function
    main(opts)

    if not opts.batchMode:
        raw_input("=== plot_MediumAndLoose.py: Press any key to quit ROOT ...")
    parser.add_option("--yMin", dest="yMin", default=MINY, type="float",
                      help="Overwrite automaticly calculated minimum value of y-axis [default: %s]" % (MINY) )

    parser.add_option("--yMax", dest="yMax", default=MAXY, type="float",
                      help="Overwrite automaticly calculated maximum value of y-axis [default: %s]" % (MAXY) )

    parser.add_option("--saveDir", dest="saveDir", type="string", default=SAVEDIR,
                      help="Directory where all plots will be saved [default: %s]" % SAVEDIR)

    parser.add_option("-m", "--mcrab", dest="mcrab", action="store", 
                      help="Path to the multicrab directory for input")

    (opts, args) = parser.parse_args()

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath("", prefix="", postfix="Test")


    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        sys.exit(1)

    main(opts)
    
Ejemplo n.º 16
0
    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print(
            "Not enough arguments passed to script execution. Printing docstring & EXIT."
        )
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab, prefix="", postfix="TH1")

    if opts.normalizeToOne == False and opts.normalizeByCrossSection == False and opts.normalizeToLumi == False:
        raise Exception(
            "One of the options --normalizeToOne, --normalizeByCrossSection, --normalizeToLumi must be enabled (set to \"True\")."
        )

    # Sanity check
    allowedFolders = [
        "counters", "counters/weighted", "PUDependency", "Weighting",
        "eSelection_Veto", "muSelection_Veto", "tauSelection_Veto",
        "ForDataDrivenCtrlPlotsEWKFakeB", "ForDataDrivenCtrlPlotsEWKGenuineB",
        "jetSelection_", "bjetSelection_", "metSelection_",
        "topologySelection_", "topbdtSelection_", "ForDataDrivenCtrlPlots"
    ]
Ejemplo n.º 17
0
    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab, prefix="", postfix="TH2")

    if opts.normalizeToOne == False and opts.normalizeByCrossSection == False and opts.normalizeToLumi == False:
        raise Exception("One of the options --normalizeToOne, --normalizeByCrossSection, --normalizeToLumi must be enabled (set to \"True\").")


    # Sanity check
    allowedFolders = ["counters", "counters/weighted", "PUDependency", "Weighting", 
                      "eSelection_Veto", "muSelection_Veto", "tauSelection_Veto",
                      "ForDataDrivenCtrlPlotsEWKFakeB", "ForDataDrivenCtrlPlotsEWKGenuineB",
                      "jetSelection_", "bjetSelection_", "metSelection_", 
                      "topologySelection_", "topbdtSelectionTH2_", "ForDataDrivenCtrlPlots", "topSelectionBDT_", "AnalysisTriplets", "AnalysisTripletsTrue", "AnalysisTripletsFalse",
                      "topbdtSelection_", "topSelectionBDTopt_", "SystTopBDT_TH2"]

    if opts.folder not in allowedFolders:
        Print("Invalid folder \"%s\"! Please select one of the following:" % (opts.folder), True)
    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    # Sanity check
    if opts.mcrab == None:
        Print(
            "Not enough arguments passed to script execution. Printing docstring & EXIT."
        )
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab,
                                          prefix="",
                                          postfix="Closure/Binned")

    ratioTypes = ["errorPropagation", "errorScale", "binomial"]
    if opts.ratioType not in ratioTypes:
        raise Exception("Invalid ration type \"%s\". Please select from:%s" %
                        (opts.ratioType, ", ".join(ratioTypes)))

    main(opts)

    if not opts.batchMode:
        raw_input("=== plot_ClosureBinned.py: Press any key to quit ROOT ...")
Ejemplo n.º 19
0
    parser.add_option("--fast", dest="fast", action="store_true", default=FAST,
                      help="Only plots the OR trigger for 2 variables (testing purposes)  [default: %s]" % FAST)
    
    parser.add_option("--gridX", dest="gridX", default=GRIDX, action="store_true",
                      help="Enable the grid for the x-axis [default: %s]" % (GRIDX) )

    parser.add_option("--gridY", dest="gridY", default=GRIDY, action="store_true",
                      help="Enable the grid for the y-axis [default: %s]" % (GRIDY) )

    parser.add_option("--paper", dest="paper", default=PAPER, action="store_true",
                      help="Apply paper stylings [default: %s]" % (PAPER) )

    (opts, parseArgs) = parser.parse_args()

    # Sanity check
    if opts.mcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab, prefix="", postfix="Efficiency")

    # Program execution
    main(opts)
        
    if not opts.batchMode:
        raw_input("=== plotEfficiency.py: Press any key to quit ROOT ...")
Ejemplo n.º 20
0
        help=
        "Folder in ROOT files under which all necessary histograms are located [default: %s]"
        % (FOLDER))

    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    # Sanity check
    if opts.mcrab == None:
        Print(
            "Not enough arguments passed to script execution. Printing docstring & EXIT."
        )
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab,
                                          prefix="",
                                          postfix="TransferFactor")

    # Call the main function
    main(opts)

    if not opts.batchMode:
        raw_input("=== getABCD_TF.py: Press any key to quit ROOT ...")
Ejemplo n.º 21
0
    parser.add_option("--prefit", dest="prefit", default=PREFIT, action="store_true",
                      help="Draw the pre-fit histogams (not the post-fit ones) [default: %s]" % (PREFIT) )

    parser.add_option("--fitUncert", dest="fitUncert", default=FITUNCERT, action="store_true",
                      help="Include fit-uncertainty (and disable \"divideByBinWidth\" option) [default: %s]" % (FITUNCERT) )

    parser.add_option("--mergeRares", dest="mergeRares", default=MERGERARES, action="store_true",
                      help="Merge rare datasets into a single dataset? (v. small contribution to final count) [default: %s]" % (MERGERARES) )

    (opts, args) = parser.parse_args()

    if opts.postfitFile == None:
        opts.postfitFile = "fitDiagnostics_ws.root"

    opts.dataFiles = []
    opts.masses = opts.mass.split(",")
    for m in opts.masses:
        fName = "combine_histograms_hplushadronic_m%s.root" % (m)
        opts.dataFiles.append(fName)

    if opts.saveName == None:
        postfix = "postFit"
        if opts.prefit:
            postfix = "preFit"
        opts.saveName = "LdgTetrajetMass_%s" % (postfix) #results should be the same for bkg-only fit (expectedSignal=0)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab, prefix="", postfix="Closure")

    main(opts)
Ejemplo n.º 22
0
        if "," in opts.mcrabs:
            opts.mcrabs = opts.mcrabs.split(",")    
            aux.Print("Will use the following pseudo-multicrab directories:", True)
            for d in opts.mcrabs:
                aux.Print(d, False)
        else:
            cwd  = os.getcwd()
            dirs = [ name for name in os.listdir(cwd) if os.path.isdir(os.path.join(cwd, name)) ]
            mcrabs = [d for d in dirs if opts.mcrabs in d and "Top" in d]
            opts.mcrabs = mcrabs


    # For-loop: All pseudomulticrab dirs
    for mcrab in opts.mcrabs:
        if not os.path.exists("%s/multicrab.cfg" % mcrab):
            msg = "No pseudo-multicrab directory found at path '%s'! Please check path or specify it with --mcrab!" % (mcrab)
            raise Exception(ShellStyles.ErrorLabel() + msg + ShellStyles.NormalStyle())
        else:
            msg = "Using pseudo-multicrab directory %s" % (ShellStyles.NoteStyle() + mcrab + ShellStyles.NormalStyle())
            aux.Verbose(msg , True)

    # Append folder to save directory path
    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrabs[0] + "to" + opts.mcrabs[-1].split("_")[-1], prefix=opts.prefix, postfix=opts.postfix)

    # Call the main function
    main(opts)

    if not opts.batchMode:
        raw_input("=== plot_EfficiencySystTop.py: Press any key to quit ROOT ...")
    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        #print __doc__
        sys.exit(1)

    # Append folder to save directory path
    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab, prefix="", postfix="TopTagSystematics")

    # See: https://twiki.cern.ch/twiki/bin/viewauth/CMS/TopSystematics
    allowedTypes = ["showerScales", "highPtRadiation", "colourReconnection", "mTop", "evtGen", "partonShower"]
    if opts.type not in allowedTypes:
        Print("Invalid type \"%s\" selected. Please choose one of the following: %s" % (opts.type, ", ".join(allowedTypes)), True)
        sys.exit()
    
    # Apply type-related changes
    # opts.saveDir = os.path.join(opts.saveDir, opts.type)
    if opts.type == "showerScales": #ISR/FSR
        opts.excludeTasks = "mtop|hdamp|evtgen|erdON|EE5C"
    elif opts.type == "highPtRadiation": #hdamp (TOP-16-021)
        opts.excludeTasks = "mtop|evtgen|erdON|fsr|isr|EE5C"
    elif opts.type == "colourReconnection": #erdON
        opts.excludeTasks = "mtop|hdamp|evtgen|fsr|isr|EE5C"
                      help="List of datasets in mcrab to include")

    parser.add_option("-e", "--excludeTasks", dest="excludeTasks", action="store", 
                      help="List of datasets in mcrab to exclude")
    
    parser.add_option("--folder", dest="folder", type="string", default = FOLDER,
                      help="ROOT file folder under which all histograms to be plotted are located [default: %s]" % (FOLDER) )

    (opts, parseArgs) = parser.parse_args()

    # Require at least two arguments (script-name, path to multicrab)
    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(1)

    if opts.mcrab == None:
        Print("Not enough arguments passed to script execution. Printing docstring & EXIT.")
        parser.print_help()
        #print __doc__
        sys.exit(1)

    if opts.saveDir == None:
        opts.saveDir = aux.getSaveDirPath(opts.mcrab, prefix="", postfix="MediumAndLoose")

        
    # Call the main function
    main(opts)

    if not opts.batchMode:
        raw_input("=== plot_MediumAndLoose.py: Press any key to quit ROOT ...")