File indexing completed on 2023-03-17 11:21:10
0001 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
0002 #include "FWCore/Framework/interface/stream/EDProducer.h"
0003 #include "FWCore/Framework/interface/Event.h"
0004 #include "FWCore/Framework/interface/MakerMacros.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006
0007 namespace edm {
0008 class EventSetup;
0009 }
0010
0011 class PFConcretePFCandidateProducer : public edm::stream::EDProducer<> {
0012 public:
0013 explicit PFConcretePFCandidateProducer(const edm::ParameterSet&);
0014 ~PFConcretePFCandidateProducer() override;
0015
0016 void produce(edm::Event&, const edm::EventSetup&) override;
0017
0018 private:
0019 edm::InputTag inputColl_;
0020 };
0021
0022 DEFINE_FWK_MODULE(PFConcretePFCandidateProducer);
0023
0024 PFConcretePFCandidateProducer::PFConcretePFCandidateProducer(const edm::ParameterSet& iConfig) {
0025 inputColl_ = iConfig.getParameter<edm::InputTag>("src");
0026
0027 produces<reco::PFCandidateCollection>();
0028 }
0029
0030 PFConcretePFCandidateProducer::~PFConcretePFCandidateProducer() {}
0031
0032 void PFConcretePFCandidateProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) {
0033 edm::Handle<reco::PFCandidateCollection> inputColl;
0034 bool inputOk = iEvent.getByLabel(inputColl_, inputColl);
0035
0036 if (!inputOk) {
0037
0038 }
0039
0040 auto outputColl = std::make_unique<reco::PFCandidateCollection>();
0041 outputColl->resize(inputColl->size());
0042
0043 for (unsigned int iCopy = 0; iCopy != inputColl->size(); ++iCopy) {
0044 const reco::PFCandidate& pf = (*inputColl)[iCopy];
0045 (*outputColl)[iCopy] = pf;
0046
0047 (*outputColl)[iCopy].setVertex(pf.vertex());
0048
0049 }
0050
0051 iEvent.put(std::move(outputColl));
0052 }