48 electronSrcToken_(consumes<edm::
View<
reco::GsfElectron> >(iConfig.getParameter<edm::
InputTag>(
"electronSource"))),
53 produces<edm::RefToBaseVector<reco::GsfElectron> >();
66 iEvent.
getByToken(electronSrcToken_, electrons);
67 try_ += electrons->size();
72 std::auto_ptr< std::vector<size_t> > duplicates = duplicateRemover_.duplicatesToRemove(*electrons);
74 std::vector<size_t>::const_iterator itdup = duplicates->begin(), enddup = duplicates->end();
75 for (
size_t i = 0,
n = electrons->size();
i <
n; ++
i) {
76 while ((itdup != enddup) && (*itdup <
i)) { ++itdup; }
77 if ((itdup != enddup) && (*itdup ==
i))
continue;
79 result->push_back(electrons->refAt(
i));
82 pass_ += result->size();
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
Remove duplicates from the list of electrons.
std::atomic< uint64_t > try_
std::atomic< uint64_t > pass_
virtual void produce(edm::StreamID, edm::Event &iEvent, const edm::EventSetup &iSetup) const overridefinal
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
DuplicatedElectronCleaner(const edm::ParameterSet &iConfig)
~DuplicatedElectronCleaner()
const edm::EDGetTokenT< edm::View< reco::GsfElectron > > electronSrcToken_
const pat::DuplicatedElectronRemover duplicateRemover_