30 std::vector<edm::EDGetTokenT<reco::CandidateView>>
badmuons_;
32 template<
typename H1,
typename H2>
35 std::unique_ptr<AssoMap>
assomap(
new AssoMap(to));
36 typename AssoMap::Filler
filler(*assomap);
37 filler.insert(from, indices.begin(), indices.end());
45 std::unique_ptr<IntMap> intmap(
new IntMap());
46 typename IntMap::Filler
filler(*intmap);
47 filler.insert(from, values.begin(), values.end());
57 for (
const auto &
src : iConfig.
getParameter<std::vector<edm::InputTag>>(
"badmuons")) {
61 produces<std::vector<reco::Muon>>();
62 produces<edm::ValueMap<int>>(
"oldPF");
63 produces<edm::Association<std::vector<reco::Muon>>>(
"newToOld");
64 produces<edm::Association<std::vector<reco::Muon>>>(
"oldToNew");
65 produces<std::vector<reco::Muon>>(
"bad");
66 produces<edm::Association<std::vector<reco::Muon>>>(
"badToNew");
67 produces<edm::Association<std::vector<reco::Muon>>>(
"newToBad");
75 unsigned int n = muons->size();
76 std::unique_ptr<std::vector<reco::Muon>>
copy(
new std::vector<reco::Muon>(*muons));
77 std::vector<int> oldPF(n);
78 std::vector<int> dummyIndices(n);
79 for (
unsigned int i = 0;
i <
n; ++
i) {
80 oldPF[
i] = (*copy)[
i].isPFMuon();
87 for (
unsigned int j = 0, nj = badmuons->
size(); j < nj; ++j) {
96 std::unique_ptr<std::vector<reco::Muon>> bad(
new std::vector<reco::Muon>());
97 std::vector<int> good2bad(n,-1), bad2good;
98 for (
unsigned int i = 0;
i <
n; ++
i) {
101 bad->push_back((*muons)[
i]);
102 bad2good.push_back(i);
103 good2bad[
i] = (bad->size()-1);
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
~PFMuonUntagger() override
void produce(edm::StreamID iID, edm::Event &, const edm::EventSetup &) const override
void setType(unsigned int type)
edm::EDGetTokenT< std::vector< reco::Muon > > muons_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Ptr< value_type > ptrAt(size_type i) const
void writeAssociation(edm::Event &out, const H1 &from, const H2 &to, const std::vector< int > indices, const std::string &name) const
void writeValueMap(edm::Event &out, const H1 &from, const std::vector< int > values, const std::string &name) const
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
#define DEFINE_FWK_MODULE(type)
std::vector< edm::EDGetTokenT< reco::CandidateView > > badmuons_
bool isNonnull() const
Checks for non-null.
ProductID id() const
Accessor for product ID.
PFMuonUntagger(const edm::ParameterSet &)
unsigned int type() const
Take a Muon collection and one or more lists of bad muons to un-PF-tag.