CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CandPtrProjector.cc
Go to the documentation of this file.
1 //
2 //
3 
15 
16 
18  public:
19  explicit CandPtrProjector(const edm::ParameterSet & iConfig);
21 
22  virtual void produce(edm::Event & iEvent, const edm::EventSetup& iSetup) override;
23  virtual void endJob() override;
24 
25  private:
28 };
29 
31  candSrcToken_(consumes<edm::View<reco::Candidate> >(iConfig.getParameter<edm::InputTag>("src"))),
32  vetoSrcToken_(consumes<edm::View<reco::Candidate> >(iConfig.getParameter<edm::InputTag>("veto")))
33 {
34  produces<edm::PtrVector<reco::Candidate> >();
35 }
36 
38 {
39 }
40 
41 void
43 {
44  using namespace edm;
46  iEvent.getByToken(candSrcToken_, cands);
48  iEvent.getByToken(vetoSrcToken_, vetos);
49 
50  std::auto_ptr<PtrVector<reco::Candidate> > result(new PtrVector<reco::Candidate>());
51  std::set<reco::CandidatePtr> vetoedPtrs;
52  for(size_t i = 0; i< vetos->size(); ++i) {
53  for(size_t j=0,n=(*vetos)[i].numberOfSourceCandidatePtrs(); j<n;j++ ) {
54  vetoedPtrs.insert((*vetos)[i].sourceCandidatePtr(j));
55  }
56  }
57  for(size_t i = 0; i< cands->size(); ++i) {
58  reco::CandidatePtr c = cands->ptrAt(i);
59  if(vetoedPtrs.find(c)==vetoedPtrs.end())
60  {
61  result->push_back(c);
62  }
63  }
64  iEvent.put(result);
65 }
66 
68 {
69 }
70 
int i
Definition: DBlmapReader.cc:9
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
edm::EDGetTokenT< edm::View< reco::Candidate > > vetoSrcToken_
int iEvent
Definition: GenABIO.cc:243
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
CandPtrProjector(const edm::ParameterSet &iConfig)
tuple result
Definition: query.py:137
int j
Definition: DBlmapReader.cc:9
edm::EDGetTokenT< edm::View< reco::Candidate > > candSrcToken_
virtual void endJob() override
virtual void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override