CMS 3D CMS Logo

HSCParticleSelector.cc
Go to the documentation of this file.
1 #include <memory>
5 
9 
12 
13 //
14 // class declaration
15 //
17 public:
18  explicit HSCParticleSelector(const edm::ParameterSet&);
19  ~HSCParticleSelector() override;
20 
21 private:
22  void beginJob() override;
23  bool filter(edm::Event&, const edm::EventSetup&) override;
24  void endJob() override;
25 
27 
28  bool Filter_;
29  std::vector<CandidateSelector*> Selectors;
30 };
31 
34  // What is being produced
35  produces<susybsm::HSCParticleCollection>();
36 
37  // Input products
38  sourceToken_ = consumes<susybsm::HSCParticleCollection>(iConfig.getParameter<edm::InputTag>("source"));
39  Filter_ = iConfig.getParameter<bool>("filter");
40 
41  // Load all the selections
42  std::vector<edm::ParameterSet> SelectionParameters =
43  iConfig.getParameter<std::vector<edm::ParameterSet> >("SelectionParameters");
44  for (unsigned int i = 0; i < SelectionParameters.size(); i++) {
45  Selectors.push_back(new CandidateSelector(SelectionParameters[i]));
46  }
47 }
48 
51 
54 
57 
60  // Source Collection
62  if (!iEvent.getByToken(sourceToken_, SourceHandle)) {
63  edm::LogError("") << ">>> HSCParticleCollection does not exist !!!";
64  return false;
65  }
67 
68  // Output Collection
70  std::unique_ptr<susybsm::HSCParticleCollection> result(output);
71 
72  // cleanup the collection based on the input selection
73  for (susybsm::HSCParticleCollection::iterator hscpcandidate = Source.begin(); hscpcandidate < Source.end();
74  ++hscpcandidate) {
75  bool decision = false;
76  for (unsigned int i = 0; i < Selectors.size(); i++) {
77  decision |= Selectors[i]->isSelected(*hscpcandidate);
78  }
79  if (decision) {
80  susybsm::HSCParticle* newhscp = new susybsm::HSCParticle(*hscpcandidate);
81  output->push_back(*newhscp);
82  }
83  }
84 
85  bool filterResult = !Filter_ || (Filter_ && !output->empty());
86 
87  iEvent.put(std::move(result));
88 
89  return filterResult;
90 }
91 
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
void beginJob() override
std::vector< HSCParticle > HSCParticleCollection
Definition: HSCParticle.h:86
int iEvent
Definition: GenABIO.cc:224
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
HSCParticleSelector(const edm::ParameterSet &)
edm::EDGetTokenT< susybsm::HSCParticleCollection > sourceToken_
T const * product() const
Definition: Handle.h:69
std::vector< CandidateSelector * > Selectors
bool filter(edm::Event &, const edm::EventSetup &) override
def move(src, dest)
Definition: eostools.py:511