CMS 3D CMS Logo

CandPtrProjector.cc
Go to the documentation of this file.
10 
11 
13 public:
14 
15  explicit CandPtrProjector(edm::ParameterSet const& iConfig);
16  void produce(edm::StreamID, edm::Event&, edm::EventSetup const&) const override;
17 
18 private:
21 };
22 
24  candSrcToken_{consumes<edm::View<reco::Candidate>>(iConfig.getParameter<edm::InputTag>("src"))},
25  vetoSrcToken_{consumes<edm::View<reco::Candidate>>(iConfig.getParameter<edm::InputTag>("veto"))}
26 {
27  produces<edm::PtrVector<reco::Candidate>>();
28 }
29 
30 void
32 {
33  using namespace edm;
35  iEvent.getByToken(vetoSrcToken_, vetoes);
36 
37  auto result = std::make_unique<PtrVector<reco::Candidate>>();
38  std::set<reco::CandidatePtr> vetoedPtrs;
39  for (auto const& veto : *vetoes) {
40  auto const n = veto.numberOfSourceCandidatePtrs();
41  for (size_t j {}; j<n; ++j) {
42  vetoedPtrs.insert(veto.sourceCandidatePtr(j));
43  }
44  }
45 
47  iEvent.getByToken(candSrcToken_, cands);
48  for (size_t i {}; i<cands->size(); ++i) {
49  auto const c = cands->ptrAt(i);
50  if (vetoedPtrs.find(c)==vetoedPtrs.cend()) {
51  result->push_back(c);
52  }
53  }
54  iEvent.put(std::move(result));
55 }
56 
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:136
void produce(edm::StreamID, edm::Event &, edm::EventSetup const &) const override
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
edm::EDGetTokenT< edm::View< reco::Candidate > > vetoSrcToken_
CandPtrProjector(edm::ParameterSet const &iConfig)
int iEvent
Definition: GenABIO.cc:230
edm::EDGetTokenT< edm::View< reco::Candidate > > candSrcToken_
HLT enums.
def move(src, dest)
Definition: eostools.py:510