diff --git a/RecoHGCal/TICL/plugins/ClusterFilterByAlgoOrSize.h b/RecoHGCal/TICL/plugins/ClusterFilterByAlgoAndSize.h similarity index 64% rename from RecoHGCal/TICL/plugins/ClusterFilterByAlgoOrSize.h rename to RecoHGCal/TICL/plugins/ClusterFilterByAlgoAndSize.h index fea760a13f0d6..b2e9559642188 100644 --- a/RecoHGCal/TICL/plugins/ClusterFilterByAlgoOrSize.h +++ b/RecoHGCal/TICL/plugins/ClusterFilterByAlgoAndSize.h @@ -1,8 +1,8 @@ -// Author: Marco Rovere - marco.rovere@cern.ch +// Authors: Marco Rovere - marco.rovere@cern.ch, Felice Pantaleo - felice.pantaleo@cern.ch // Date: 11/2018 -#ifndef RecoHGCal_TICL_ClusterFilterByAlgoOrSize_H__ -#define RecoHGCal_TICL_ClusterFilterByAlgoOrSize_H__ +#ifndef RecoHGCal_TICL_ClusterFilterByAlgoAndSize_H__ +#define RecoHGCal_TICL_ClusterFilterByAlgoAndSize_H__ #include "DataFormats/CaloRecHit/interface/CaloCluster.h" #include "ClusterFilterBase.h" @@ -12,21 +12,23 @@ // Filter clusters that belong to a specific algorithm namespace ticl { - class ClusterFilterByAlgoOrSize final : public ClusterFilterBase { + class ClusterFilterByAlgoAndSize final : public ClusterFilterBase { public: - ClusterFilterByAlgoOrSize(const edm::ParameterSet& ps) + ClusterFilterByAlgoAndSize(const edm::ParameterSet& ps) : ClusterFilterBase(ps), algo_number_(ps.getParameter("algo_number")), + min_cluster_size_(ps.getParameter("min_cluster_size")), max_cluster_size_(ps.getParameter("max_cluster_size")) {} - ~ClusterFilterByAlgoOrSize() override{}; + ~ClusterFilterByAlgoAndSize() override{}; std::unique_ptr filter(const std::vector& layerClusters, const HgcalClusterFilterMask& availableLayerClusters, std::vector& layerClustersMask) const override { auto filteredLayerClusters = std::make_unique(); for (auto const& cl : availableLayerClusters) { - if (layerClusters[cl.first].algo() == algo_number_ || - layerClusters[cl.first].hitsAndFractions().size() <= max_cluster_size_) { + if (layerClusters[cl.first].algo() == algo_number_ and + layerClusters[cl.first].hitsAndFractions().size() <= max_cluster_size_ and + layerClusters[cl.first].hitsAndFractions().size() >= min_cluster_size_) { filteredLayerClusters->emplace_back(cl); } else { layerClustersMask[cl.first] = 0.; @@ -37,6 +39,7 @@ namespace ticl { private: int algo_number_; + unsigned int min_cluster_size_; unsigned int max_cluster_size_; }; } // namespace ticl diff --git a/RecoHGCal/TICL/plugins/FilteredLayerClustersProducer.cc b/RecoHGCal/TICL/plugins/FilteredLayerClustersProducer.cc index 84d0adfb74f84..4685159f668e8 100644 --- a/RecoHGCal/TICL/plugins/FilteredLayerClustersProducer.cc +++ b/RecoHGCal/TICL/plugins/FilteredLayerClustersProducer.cc @@ -53,8 +53,9 @@ void FilteredLayerClustersProducer::fillDescriptions(edm::ConfigurationDescripti desc.add("HGCLayerClusters", edm::InputTag("hgcalLayerClusters")); desc.add("LayerClustersInputMask", edm::InputTag("hgcalLayerClusters", "InitialLayerClustersMask")); desc.add("iteration_label", "iterationLabelGoesHere"); - desc.add("clusterFilter", "ClusterFilterByAlgo"); + desc.add("clusterFilter", "ClusterFilterByAlgoAndSize"); desc.add("algo_number", 9); + desc.add("min_cluster_size", 0); desc.add("max_cluster_size", 9999); descriptions.add("filteredLayerClustersProducer", desc); } diff --git a/RecoHGCal/TICL/plugins/filters.cc b/RecoHGCal/TICL/plugins/filters.cc index 90270fe86fbe8..edbd834f4df90 100644 --- a/RecoHGCal/TICL/plugins/filters.cc +++ b/RecoHGCal/TICL/plugins/filters.cc @@ -5,11 +5,11 @@ #include "ClusterFilterFactory.h" #include "ClusterFilterByAlgo.h" -#include "ClusterFilterByAlgoOrSize.h" +#include "ClusterFilterByAlgoAndSize.h" #include "ClusterFilterBySize.h" using namespace ticl; DEFINE_EDM_PLUGIN(ClusterFilterFactory, ClusterFilterByAlgo, "ClusterFilterByAlgo"); -DEFINE_EDM_PLUGIN(ClusterFilterFactory, ClusterFilterByAlgoOrSize, "ClusterFilterByAlgoOrSize"); +DEFINE_EDM_PLUGIN(ClusterFilterFactory, ClusterFilterByAlgoAndSize, "ClusterFilterByAlgoAndSize"); DEFINE_EDM_PLUGIN(ClusterFilterFactory, ClusterFilterBySize, "ClusterFilterBySize"); diff --git a/RecoHGCal/TICL/python/ticl_iterations.py b/RecoHGCal/TICL/python/ticl_iterations.py index d163ceac3ad72..2eac83f8a9955 100644 --- a/RecoHGCal/TICL/python/ticl_iterations.py +++ b/RecoHGCal/TICL/python/ticl_iterations.py @@ -43,6 +43,8 @@ def TICL_iterations_withReco(process): ) process.FilteredLayerClusters = filteredLayerClustersProducer.clone( + clusterFilter = "ClusterFilterByAlgoAndSize", + min_cluster_size = 2, algo_number = 8, iteration_label = "algo8", LayerClustersInputMask = "TrackstersMIP" @@ -98,6 +100,8 @@ def TICL_iterations(process): ) process.FilteredLayerClusters = filteredLayerClustersProducer.clone( + clusterFilter = "ClusterFilterByAlgoAndSize", + min_cluster_size = 2, algo_number = 8, iteration_label = "algo8" )