CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
CandPtrProjector.cc
Go to the documentation of this file.
11 
13 public:
15  void produce(edm::StreamID, edm::Event&, edm::EventSetup const&) const override;
16  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
17 
18 private:
23 };
24 
26  : candSrcToken_{consumes<edm::View<reco::Candidate>>(iConfig.getParameter<edm::InputTag>("src"))},
27  vetoSrcToken_{consumes<edm::View<reco::Candidate>>(iConfig.getParameter<edm::InputTag>("veto"))},
28  useDeltaRforFootprint_(iConfig.getParameter<bool>("useDeltaRforFootprint")),
29  extendVetoBySingleSourcePtr_(iConfig.getParameter<bool>("extendVetoBySingleSourcePtr")) {
30  produces<edm::PtrVector<reco::Candidate>>();
31 }
32 
34  using namespace edm;
36  iEvent.getByToken(vetoSrcToken_, vetoes);
37 
38  auto result = std::make_unique<PtrVector<reco::Candidate>>();
39  std::set<reco::CandidatePtr> vetoedPtrs;
40  for (auto const& veto : *vetoes) {
41  auto const n = veto.numberOfSourceCandidatePtrs();
42  for (size_t j{}; j < n; ++j) {
43  vetoedPtrs.insert(veto.sourceCandidatePtr(j));
44  }
45  }
46 
49  for (size_t i{}; i < cands->size(); ++i) {
50  auto const c = cands->ptrAt(i);
51  if (vetoedPtrs.find(c) == vetoedPtrs.cend()) {
52  bool addcand = true;
53  if ((extendVetoBySingleSourcePtr_) && (c->numberOfSourceCandidatePtrs() == 1))
54  addcand = (vetoedPtrs.find(c->sourceCandidatePtr(0)) == vetoedPtrs.cend());
56  for (const auto& it : vetoedPtrs)
57  if (it.isNonnull() && it.isAvailable() && reco::deltaR2(*it, *c) < 0.00000025) {
58  addcand = false;
59  break;
60  }
61  if (addcand)
62  result->push_back(c);
63  }
64  }
65  iEvent.put(std::move(result));
66 }
67 
70  desc.add<edm::InputTag>("src");
71  desc.add<edm::InputTag>("veto");
72  desc.add<bool>("useDeltaRforFootprint", false);
73  desc.add<bool>("extendVetoBySingleSourcePtr", true);
74  descriptions.addWithDefaultLabel(desc);
75 }
76 
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
const edm::EventSetup & c
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::EDGetTokenT< edm::View< reco::Candidate > > vetoSrcToken_
tuple result
Definition: mps_fire.py:311
CandPtrProjector(edm::ParameterSet const &iConfig)
int iEvent
Definition: GenABIO.cc:224
def move
Definition: eostools.py:511
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
edm::EDGetTokenT< edm::View< reco::Candidate > > candSrcToken_
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:16
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
void produce(edm::StreamID, edm::Event &, edm::EventSetup const &) const override