File indexing completed on 2024-04-06 12:26:30
0001
0002 #include <iostream>
0003
0004
0005 #include "DataFormats/Common/interface/DetSetVector.h"
0006 #include "DataFormats/Common/interface/Handle.h"
0007 #include "DataFormats/SiStripCluster/interface/SiStripCluster.h"
0008 #include "FWCore/Framework/interface/stream/EDFilter.h"
0009 #include "FWCore/Framework/interface/Event.h"
0010 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0011
0012 namespace edm {
0013 class ParameterSet;
0014 }
0015
0016 class ClusterFilter : public edm::stream::EDFilter<> {
0017 public:
0018 ClusterFilter(const edm::ParameterSet&);
0019 ~ClusterFilter() override = default;
0020
0021 private:
0022 bool filter(edm::Event&, edm::EventSetup const&) override;
0023 const int nMax_;
0024 const edm::EDGetTokenT<edm::DetSetVector<SiStripCluster>> clustersToken_;
0025 };
0026
0027 using namespace std;
0028 using namespace edm;
0029
0030 ClusterFilter::ClusterFilter(const ParameterSet& pset)
0031 : nMax_(pset.getParameter<int>("maxClusters")),
0032 clustersToken_(consumes<edm::DetSetVector<SiStripCluster>>(pset.getParameter<std::string>("ClusterProducer"))) {}
0033
0034 bool ClusterFilter::filter(Event& e, EventSetup const& es) {
0035 const edm::DetSetVector<SiStripCluster>& clusters = e.get(clustersToken_);
0036 int size = 0;
0037 for (const auto& DSViter : clusters) {
0038 size += DSViter.data.size();
0039 }
0040 return (size < nMax_);
0041 }