38 std::unique_ptr<IntMap> intmap(
new IntMap());
39 typename IntMap::Filler
filler(*intmap);
40 filler.insert(from, values.begin(), values.end());
51 produces<std::vector<reco::PFCandidate>>();
52 produces<std::vector<reco::PFCandidate>>(
"discarded");
53 produces<edm::ValueMap<reco::PFCandidateRef>>();
64 int n = pfcandidates->size();
65 std::unique_ptr<std::vector<reco::PFCandidate>>
copy(
new std::vector<reco::PFCandidate>());
66 std::unique_ptr<std::vector<reco::PFCandidate>> discarded(
new std::vector<reco::PFCandidate>());
74 if (
pf.muonRef().isNonnull()) {
76 if (
abs(
pf.pdgId()) == 13 && !newRef->isPFMuon()) {
77 discarded->push_back(
pf);
79 badToOld.push_back(i);
80 discarded->back().setMuonRef(newRef);
84 newToOld.push_back(i);
85 copy->back().setMuonRef(newRef);
90 newToOld.push_back(i);
100 std::vector<reco::PFCandidateRef> refs; refs.reserve(n);
102 for (i = 0; i <
n; ++
i) {
109 filler.
insert(pfcandidates, refs.begin(), refs.end());
112 for (
int i : newToOld) {
115 filler.
insert(newpf, refs.begin(), refs.end());
118 for (
int i : badToOld) {
121 filler.
insert(badpf, refs.begin(), refs.end());
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
~PFCandidateMuonUntagger() override
bool getByToken(EDGetToken token, Handle< PROD > &result) const
void insert(const H &h, I begin, I end)
edm::EDGetTokenT< edm::Association< std::vector< reco::Muon > > > oldToNewMuons_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
#define DEFINE_FWK_MODULE(type)
PFCandidateMuonUntagger(const edm::ParameterSet &)
void writeValueMap(edm::Event &out, const H1 &from, const std::vector< int > values, const std::string &name)
Abs< T >::type abs(const T &t)
void produce(edm::StreamID iID, edm::Event &, const edm::EventSetup &) const override
Particle reconstructed by the particle flow algorithm.
edm::EDGetTokenT< std::vector< reco::PFCandidate > > pfcandidates_