Example #1
0
    def user_SetParameter(self, parameter, value, datasets, level, fastjet,
                          delphes, delfes):

        # algorithm
        if parameter == "package":

            # Switch off the clustering
            if value == "none":
                test = True
                for dataset in datasets:
                    if not test:
                        break
                    for file in dataset.filenames:
                        if file.endswith('lhe') or \
                           file.endswith('lhe.gz') or \
                           file.endswith('hep') or \
                           file.endswith('hep.gz') or \
                           file.endswith('hepmc') or \
                           file.endswith('hepmc.gz'):
                            test = False
                            break
                if not test:
                    logging.error("some datasets contain partonic/hadronic file format. "+\
                                  "Fast-simulation package cannot be switched off.")
                    return

            # Switch on the clustering
            elif value in ["fastjet", "delphes", "delfes"]:

                # Only in reco mode
                if level != MA5RunningType.RECO:
                    logging.error(
                        "fast-simulation algorithm is only available in RECO mode"
                    )
                    return

                # Fastjet ?
                if value == 'fastjet' and not fastjet:
                    logging.error(
                        "fastjet library is not installed. Clustering algorithms are not available."
                    )
                    return

                # Delphes ?
                if value == 'delphes' and not delphes:
                    logging.error(
                        "delphes library is not installed. This fast-simulation package is not available."
                    )
                    return

                # Delfes ?
                if value == 'delfes' and not delfes:
                    logging.error(
                        "delfes library is not installed. This fast-simulation package is not available."
                    )
                    return

                test = True
                for dataset in datasets:
                    if not test:
                        break
                    for file in dataset.filenames:
                        if file.endswith('lhco') or \
                           file.endswith('lhco.gz') or \
                           file.endswith('root'):
                            test = False
                            break
                if not test:
                    logging.error(
                        "some datasets contain reconstructed file format. Fast-simulation cannot be switched on."
                    )
                    return

            if value == "fastjet":
                self.package = "fastjet"
                self.clustering = ClusteringConfiguration()
                self.delphes = 0
                self.delfes = 0
            elif value == "delphes":
                self.package = "delphes"
                self.clustering = 0
                self.delphes = DelphesConfiguration()
                self.delfes = 0
            elif value == "delfes":
                self.package = "delfes"
                self.clustering = 0
                self.delphes = 0
                self.delfes = DelfesConfiguration()
            elif value == "none":
                self.package = "none"
                self.clustering = 0
                self.delphes = 0
                self.delfes = 0
            else:
                logging.error("parameter called '" + value + "' is not found.")
            return

        # other rejection if no algo specified
        if self.package == "none":
            logging.error("'fastsim' has no parameter called '" + parameter +
                          "'")
            return

        # other
        if self.package == "fastjet":
            return self.clustering.user_SetParameter(parameter, value,
                                                     datasets, level)
        elif self.package == "delphes":
            return self.delphes.user_SetParameter(parameter, value, datasets,
                                                  level)
        elif self.package == "delfes":
            return self.delfes.user_SetParameter(parameter, value, datasets,
                                                 level)
Example #2
0
    def user_SetParameter(self, parameter, value, datasets, level, fastjet, delphes, delfes):

        # algorithm
        if parameter == "package":

            # Switch off the clustering
            if value == "none":
                test = True
                for dataset in datasets:
                    if not test:
                        break
                    for file in dataset.filenames:
                        if (
                            file.endswith("lhe")
                            or file.endswith("lhe.gz")
                            or file.endswith("hep")
                            or file.endswith("hep.gz")
                            or file.endswith("hepmc")
                            or file.endswith("hepmc.gz")
                        ):
                            test = False
                            break
                if not test:
                    logging.error(
                        "some datasets contain partonic/hadronic file format. "
                        + "Fast-simulation package cannot be switched off."
                    )
                    return

            # Switch on the clustering
            elif value in ["fastjet", "delphes", "delfes"]:

                # Only in reco mode
                if level != MA5RunningType.RECO:
                    logging.error("fast-simulation algorithm is only available in RECO mode")
                    return

                # Fastjet ?
                if value == "fastjet" and not fastjet:
                    logging.error("fastjet library is not installed. Clustering algorithms are not available.")
                    return

                # Delphes ?
                if value == "delphes" and not delphes:
                    logging.error("delphes library is not installed. This fast-simulation package is not available.")
                    return

                # Delfes ?
                if value == "delfes" and not delfes:
                    logging.error("delfes library is not installed. This fast-simulation package is not available.")
                    return

                test = True
                for dataset in datasets:
                    if not test:
                        break
                    for file in dataset.filenames:
                        if file.endswith("lhco") or file.endswith("lhco.gz") or file.endswith("root"):
                            test = False
                            break
                if not test:
                    logging.error(
                        "some datasets contain reconstructed file format. Fast-simulation cannot be switched on."
                    )
                    return

            if value == "fastjet":
                self.package = "fastjet"
                self.clustering = ClusteringConfiguration()
                self.delphes = 0
                self.delfes = 0
            elif value == "delphes":
                self.package = "delphes"
                self.clustering = 0
                self.delphes = DelphesConfiguration()
                self.delfes = 0
            elif value == "delfes":
                self.package = "delfes"
                self.clustering = 0
                self.delphes = 0
                self.delfes = DelfesConfiguration()
            elif value == "none":
                self.package = "none"
                self.clustering = 0
                self.delphes = 0
                self.delfes = 0
            else:
                logging.error("parameter called '" + value + "' is not found.")
            return

        # other rejection if no algo specified
        if self.package == "none":
            logging.error("'fastsim' has no parameter called '" + parameter + "'")
            return

        # other
        if self.package == "fastjet":
            return self.clustering.user_SetParameter(parameter, value, datasets, level)
        elif self.package == "delphes":
            return self.delphes.user_SetParameter(parameter, value, datasets, level)
        elif self.package == "delfes":
            return self.delfes.user_SetParameter(parameter, value, datasets, level)
Example #3
0
class FastsimConfiguration:

    userVariables = {"package": ["fastjet", "delphes", "delfes", "none"]}

    def __init__(self):
        self.clustering = 0
        self.delphes = 0
        self.delfes = 0
        self.package = "none"

    def Display(self):
        self.user_DisplayParameter("package")
        if self.package == "fastjet":
            self.clustering.Display()
        elif self.package == "delphes":
            self.delphes.Display()
        elif self.package == "delfes":
            self.delfes.Display()

    def user_DisplayParameter(self, parameter):
        if parameter == "package":
            logging.info(" fast-simulation package : " + self.package)
            return
        if self.package == "fastjet":
            self.clustering.user_DisplayParameter(parameter)
        elif self.package == "delphes":
            self.delphes.user_DisplayParameter(parameter)
        elif self.package == "delfes":
            self.delfes.user_DisplayParameter(parameter)

    def SampleAnalyzerConfigString(self):
        if self.package == "fastjet":
            mydict = {}
            mydict.update(self.clustering.SampleAnalyzerConfigString())
            return mydict
        elif self.package == "delphes":
            mydict = {}
            mydict.update(self.delphes.SampleAnalyzerConfigString())
            return mydict
        elif self.package == "delfes":
            mydict = {}
            mydict.update(self.delfes.SampleAnalyzerConfigString())
            return mydict
        else:
            return {}

    def user_SetParameter(self, parameter, value, datasets, level, fastjet,
                          delphes, delfes):

        # algorithm
        if parameter == "package":

            # Switch off the clustering
            if value == "none":
                test = True
                for dataset in datasets:
                    if not test:
                        break
                    for file in dataset.filenames:
                        if file.endswith('lhe') or \
                           file.endswith('lhe.gz') or \
                           file.endswith('hep') or \
                           file.endswith('hep.gz') or \
                           file.endswith('hepmc') or \
                           file.endswith('hepmc.gz'):
                            test = False
                            break
                if not test:
                    logging.error("some datasets contain partonic/hadronic file format. "+\
                                  "Fast-simulation package cannot be switched off.")
                    return

            # Switch on the clustering
            elif value in ["fastjet", "delphes", "delfes"]:

                # Only in reco mode
                if level != MA5RunningType.RECO:
                    logging.error(
                        "fast-simulation algorithm is only available in RECO mode"
                    )
                    return

                # Fastjet ?
                if value == 'fastjet' and not fastjet:
                    logging.error(
                        "fastjet library is not installed. Clustering algorithms are not available."
                    )
                    return

                # Delphes ?
                if value == 'delphes' and not delphes:
                    logging.error(
                        "delphes library is not installed. This fast-simulation package is not available."
                    )
                    return

                # Delfes ?
                if value == 'delfes' and not delfes:
                    logging.error(
                        "delfes library is not installed. This fast-simulation package is not available."
                    )
                    return

                test = True
                for dataset in datasets:
                    if not test:
                        break
                    for file in dataset.filenames:
                        if file.endswith('lhco') or \
                           file.endswith('lhco.gz') or \
                           file.endswith('root'):
                            test = False
                            break
                if not test:
                    logging.error(
                        "some datasets contain reconstructed file format. Fast-simulation cannot be switched on."
                    )
                    return

            if value == "fastjet":
                self.package = "fastjet"
                self.clustering = ClusteringConfiguration()
                self.delphes = 0
                self.delfes = 0
            elif value == "delphes":
                self.package = "delphes"
                self.clustering = 0
                self.delphes = DelphesConfiguration()
                self.delfes = 0
            elif value == "delfes":
                self.package = "delfes"
                self.clustering = 0
                self.delphes = 0
                self.delfes = DelfesConfiguration()
            elif value == "none":
                self.package = "none"
                self.clustering = 0
                self.delphes = 0
                self.delfes = 0
            else:
                logging.error("parameter called '" + value + "' is not found.")
            return

        # other rejection if no algo specified
        if self.package == "none":
            logging.error("'fastsim' has no parameter called '" + parameter +
                          "'")
            return

        # other
        if self.package == "fastjet":
            return self.clustering.user_SetParameter(parameter, value,
                                                     datasets, level)
        elif self.package == "delphes":
            return self.delphes.user_SetParameter(parameter, value, datasets,
                                                  level)
        elif self.package == "delfes":
            return self.delfes.user_SetParameter(parameter, value, datasets,
                                                 level)

    def user_GetParameters(self):
        if self.package == "fastjet":
            table = FastsimConfiguration.userVariables.keys()
            table.extend(self.clustering.user_GetParameters())
        elif self.package == "delphes":
            table = FastsimConfiguration.userVariables.keys()
            table.extend(self.delphes.user_GetParameters())
        elif self.package == "delfes":
            table = FastsimConfiguration.userVariables.keys()
            table.extend(self.delfes.user_GetParameters())
        else:
            table = ["package"]
        return table

    def user_GetValues(self, variable):
        table = []
        if self.package == "fastjet":
            try:
                table.extend(FastsimConfiguration.userVariables[variable])
            except:
                pass
            try:
                table.extend(self.clustering.user_GetValues(variable))
            except:
                pass
        elif self.package == "delphes":
            try:
                table.extend(FastsimConfiguration.userVariables[variable])
            except:
                pass
            try:
                table.extend(self.delphes.user_GetValues(variable))
            except:
                pass
        elif self.package == "delfes":
            try:
                table.extend(FastsimConfiguration.userVariables[variable])
            except:
                pass
            try:
                table.extend(self.delfes.user_GetValues(variable))
            except:
                pass
        else:
            if variable == "package":
                table.extend(FastsimConfiguration.userVariables["package"])
        return table
Example #4
0
class FastsimConfiguration:

    userVariables = {"package": ["fastjet", "delphes", "delfes", "none"]}

    def __init__(self):
        self.clustering = 0
        self.delphes = 0
        self.delfes = 0
        self.package = "none"

    def Display(self):
        self.user_DisplayParameter("package")
        if self.package == "fastjet":
            self.clustering.Display()
        elif self.package == "delphes":
            self.delphes.Display()
        elif self.package == "delfes":
            self.delfes.Display()

    def user_DisplayParameter(self, parameter):
        if parameter == "package":
            logging.info(" fast-simulation package : " + self.package)
            return
        if self.package == "fastjet":
            self.clustering.user_DisplayParameter(parameter)
        elif self.package == "delphes":
            self.delphes.user_DisplayParameter(parameter)
        elif self.package == "delfes":
            self.delfes.user_DisplayParameter(parameter)

    def SampleAnalyzerConfigString(self):
        if self.package == "fastjet":
            mydict = {}
            mydict.update(self.clustering.SampleAnalyzerConfigString())
            return mydict
        elif self.package == "delphes":
            mydict = {}
            mydict.update(self.delphes.SampleAnalyzerConfigString())
            return mydict
        elif self.package == "delfes":
            mydict = {}
            mydict.update(self.delfes.SampleAnalyzerConfigString())
            return mydict
        else:
            return {}

    def user_SetParameter(self, parameter, value, datasets, level, fastjet, delphes, delfes):

        # algorithm
        if parameter == "package":

            # Switch off the clustering
            if value == "none":
                test = True
                for dataset in datasets:
                    if not test:
                        break
                    for file in dataset.filenames:
                        if (
                            file.endswith("lhe")
                            or file.endswith("lhe.gz")
                            or file.endswith("hep")
                            or file.endswith("hep.gz")
                            or file.endswith("hepmc")
                            or file.endswith("hepmc.gz")
                        ):
                            test = False
                            break
                if not test:
                    logging.error(
                        "some datasets contain partonic/hadronic file format. "
                        + "Fast-simulation package cannot be switched off."
                    )
                    return

            # Switch on the clustering
            elif value in ["fastjet", "delphes", "delfes"]:

                # Only in reco mode
                if level != MA5RunningType.RECO:
                    logging.error("fast-simulation algorithm is only available in RECO mode")
                    return

                # Fastjet ?
                if value == "fastjet" and not fastjet:
                    logging.error("fastjet library is not installed. Clustering algorithms are not available.")
                    return

                # Delphes ?
                if value == "delphes" and not delphes:
                    logging.error("delphes library is not installed. This fast-simulation package is not available.")
                    return

                # Delfes ?
                if value == "delfes" and not delfes:
                    logging.error("delfes library is not installed. This fast-simulation package is not available.")
                    return

                test = True
                for dataset in datasets:
                    if not test:
                        break
                    for file in dataset.filenames:
                        if file.endswith("lhco") or file.endswith("lhco.gz") or file.endswith("root"):
                            test = False
                            break
                if not test:
                    logging.error(
                        "some datasets contain reconstructed file format. Fast-simulation cannot be switched on."
                    )
                    return

            if value == "fastjet":
                self.package = "fastjet"
                self.clustering = ClusteringConfiguration()
                self.delphes = 0
                self.delfes = 0
            elif value == "delphes":
                self.package = "delphes"
                self.clustering = 0
                self.delphes = DelphesConfiguration()
                self.delfes = 0
            elif value == "delfes":
                self.package = "delfes"
                self.clustering = 0
                self.delphes = 0
                self.delfes = DelfesConfiguration()
            elif value == "none":
                self.package = "none"
                self.clustering = 0
                self.delphes = 0
                self.delfes = 0
            else:
                logging.error("parameter called '" + value + "' is not found.")
            return

        # other rejection if no algo specified
        if self.package == "none":
            logging.error("'fastsim' has no parameter called '" + parameter + "'")
            return

        # other
        if self.package == "fastjet":
            return self.clustering.user_SetParameter(parameter, value, datasets, level)
        elif self.package == "delphes":
            return self.delphes.user_SetParameter(parameter, value, datasets, level)
        elif self.package == "delfes":
            return self.delfes.user_SetParameter(parameter, value, datasets, level)

    def user_GetParameters(self):
        if self.package == "fastjet":
            table = FastsimConfiguration.userVariables.keys()
            table.extend(self.clustering.user_GetParameters())
        elif self.package == "delphes":
            table = FastsimConfiguration.userVariables.keys()
            table.extend(self.delphes.user_GetParameters())
        elif self.package == "delfes":
            table = FastsimConfiguration.userVariables.keys()
            table.extend(self.delfes.user_GetParameters())
        else:
            table = ["package"]
        return table

    def user_GetValues(self, variable):
        table = []
        if self.package == "fastjet":
            try:
                table.extend(FastsimConfiguration.userVariables[variable])
            except:
                pass
            try:
                table.extend(self.clustering.user_GetValues(variable))
            except:
                pass
        elif self.package == "delphes":
            try:
                table.extend(FastsimConfiguration.userVariables[variable])
            except:
                pass
            try:
                table.extend(self.delphes.user_GetValues(variable))
            except:
                pass
        elif self.package == "delfes":
            try:
                table.extend(FastsimConfiguration.userVariables[variable])
            except:
                pass
            try:
                table.extend(self.delfes.user_GetValues(variable))
            except:
                pass
        else:
            if variable == "package":
                table.extend(FastsimConfiguration.userVariables["package"])
        return table