def user_SetParameter(self, parameter, value, datasets, level): # algorithm if parameter == "algorithm": # 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.getLogger('MA5').error( "some datasets contain partonic/hadronic file format. Clustering algorithm cannot be switched off." ) return # Switch on the clustering elif value in ["kt","antikt","cambridge","genkt",\ "gridjet","cdfmidpoint","cdfjetclu",\ "siscone"]: # Only in reco mode if level != MA5RunningType.RECO: logging.getLogger('MA5').error( "clustering algorithm is only available in RECO mode") 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.getLogger('MA5').error( "some datasets contain reconstructed file format. Clustering algorithm cannot be switched on." ) return if value == "kt": self.algorithm = "kt" self.clustering = ClusteringKt() elif value == "antikt": self.algorithm = "antikt" self.clustering = ClusteringAntiKt() elif value == "cambridge": self.algorithm = "cambridge" self.clustering = ClusteringCambridge() elif value == "genkt": self.algorithm = "genkt" self.clustering = ClusteringGenKt() elif value == "gridjet": self.algorithm = "gridjet" self.clustering = ClusteringGridJet() elif value == "cdfmidpoint": self.algorithm = "cdfmidpoint" self.clustering = ClusteringCDFMidPoint() elif value == "cdfjetclu": self.algorithm = "cdfjetclu" self.clustering = ClusteringCDFJetClu() elif value == "siscone": self.algorithm = "siscone" self.clustering = ClusteringSisCone() elif value == "none": self.algorithm = "none" self.clustering = 0 else: logging.getLogger('MA5').error("algorithm called '" + value + "' is not found.") return # other rejection if no algo specified if self.algorithm == "none": logging.getLogger('MA5').error( "'clustering' has no parameter called '" + parameter + "'") return # exclusive_id if parameter == "exclusive_id": if value == "true": self.exclusive_id = True elif value == "false": self.exclusive_id = False else: logging.getLogger('MA5').error("The allowed values for 'exclusive_id' " +\ "parameter are 'true' or 'false'.") return # other elif parameter.startswith('bjet_id.'): return self.beauty.user_SetParameter(parameter, value) elif parameter.startswith('tau_id.'): return self.tau.user_SetParameter(parameter, value) else: return self.clustering.user_SetParameter(parameter, value)