diff --git a/L1Trigger/L1THGCal/plugins/be_algorithms/HGCalTriggerClusterIdentificationBDT.cc b/L1Trigger/L1THGCal/plugins/be_algorithms/HGCalTriggerClusterIdentificationBDT.cc index e62c0afeb5925..bb1535c631fd3 100644 --- a/L1Trigger/L1THGCal/plugins/be_algorithms/HGCalTriggerClusterIdentificationBDT.cc +++ b/L1Trigger/L1THGCal/plugins/be_algorithms/HGCalTriggerClusterIdentificationBDT.cc @@ -72,10 +72,12 @@ void HGCalTriggerClusterIdentificationBDT:: initialize(const edm::ParameterSet& conf) { - categories_.clear(); - bdts_.clear(); - working_points_.clear(); - input_variables_.clear(); + if(!bdts_.empty()) + { + edm::LogWarning("HGCalTriggerClusterIdentificationBDT|Initialization") + << "BDTs already initialized."; + return; + } input_variables_ = conf.getParameter< std::vector >("Inputs"); std::vector bdt_files = conf.getParameter< std::vector >("Weights"); std::vector categories_etamin = conf.getParameter>("CategoriesEtaMin"); @@ -83,6 +85,19 @@ initialize(const edm::ParameterSet& conf) std::vector categories_ptmin = conf.getParameter>("CategoriesPtMin"); std::vector categories_ptmax = conf.getParameter>("CategoriesPtMax"); working_points_ = conf.getParameter>("WorkingPoints"); + + if(bdt_files.size()!=categories_etamin.size() || + categories_etamin.size()!=categories_etamax.size() || + categories_etamax.size()!=categories_ptmin.size() || + categories_ptmin.size()!=categories_ptmax.size() || + categories_ptmax.size()!=working_points_.size() + ) + { + throw cms::Exception("HGCalTriggerClusterIdentificationBDT|BadInitialization") + << "Inconsistent numbers of categories, BDT weight files and working points"; + } + categories_.reserve(working_points_.size()); + bdts_.reserve(working_points_.size()); for(unsigned cat=0; cat