From 707c67b1afa2d95d0ee04ece7da54a6748f9e3f6 Mon Sep 17 00:00:00 2001 From: jackaraz Date: Tue, 22 Mar 2022 16:37:07 +0000 Subject: [PATCH] failsafe for variableR --- .../jet_clustering/jet_configuration.py | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/madanalysis/jet_clustering/jet_configuration.py b/madanalysis/jet_clustering/jet_configuration.py index a12d503b..05b29d42 100644 --- a/madanalysis/jet_clustering/jet_configuration.py +++ b/madanalysis/jet_clustering/jet_configuration.py @@ -122,13 +122,15 @@ def DefaultCDFMidPoint(self,kwargs: Dict) -> None: def DefaultVariableR(self, kwargs: Dict) -> None: self.algorithm = 'VariableR' - self.rho = kwargs.get('rho', 2000.) - self.minR = kwargs.get('minR', 0.) - self.maxR = kwargs.get('maxR', 2.) - self.ptmin = kwargs.get('ptmin', 20.) - self.exclusive = kwargs.get('exclusive', False) - self.clustertype = kwargs.get('areafraction', "AKTLIKE") - self.strategy = kwargs.get('areafraction', "Best") + self.rho = float(kwargs.get('rho', 2000.)) + self.minR = float(kwargs.get('minR', 0.)) + self.maxR = float(kwargs.get('maxR', 2.)) + self.ptmin = float(kwargs.get('ptmin', 20.)) + self.exclusive = bool(kwargs.get('exclusive', False)) + ctype = kwargs.get('clustertype', "AKTLIKE") + self.clustertype = ctype if ctype in ["CALIKE", "KTLIKE", "AKTLIKE"] else "AKTLIKE" + strategy = kwargs.get('strategy', "Best") + self.strategy = strategy if strategy in ["Best", "N2Tiled", "N2Plain", "NNH", "Native"] else "Best" def GetJetAlgorithms(self): return self.userVariables @@ -155,6 +157,22 @@ def user_SetParameter(self, parameter: Text, value: Text) -> None: self.exclusive = False else: raise ValueError + elif parameter == "strategy" and self.algorithm == "VariableR": + strategy = ["Best", "N2Tiled", "N2Plain", "NNH", "Native"] + if value in strategy: + self.strategy = value + else: + self.logger.error(f"Invalid strategy: {value}") + self.logger.error("Available types are: " + ", ".join(strategy)) + return + elif parameter == "clustertype" and self.algorithm == "VariableR": + ctype = ["CALIKE", "KTLIKE", "AKTLIKE"] + if value.upper() in ctype: + self.clustertype = value.upper() + else: + self.logger.error(f"Invalid cluster type: {value}") + self.logger.error("Available types are: " + ", ".join(ctype)) + return else: tmp = float(value) self.__dict__[parameter] = tmp