Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:30

0001 // system include
0002 #include <iostream>
0003 
0004 // user includes
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 }