Beispiel #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)