00001 #include <memory> 00002 #include <string> 00003 #include <vector> 00004 #include <map> 00005 00006 #include "FWCore/Framework/interface/Frameworkfwd.h" 00007 #include "FWCore/Framework/interface/EDProducer.h" 00008 #include "FWCore/Framework/interface/Event.h" 00009 #include "FWCore/ParameterSet/interface/InputTag.h" 00010 #include "FWCore/Framework/interface/MakerMacros.h" 00011 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00012 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00013 #include "DataFormats/HepMCCandidate/interface/GenParticle.h" 00014 00015 class StDecaySubset : public edm::EDProducer { 00016 public: 00017 explicit StDecaySubset(const edm::ParameterSet&); 00018 ~StDecaySubset(); 00019 00020 virtual void produce(edm::Event&, const edm::EventSetup&); 00021 void fillOutput(const reco::GenParticleCollection&, reco::GenParticleCollection&); 00022 void fillRefs(const reco::GenParticleRefProd&, reco::GenParticleCollection&); 00023 00024 reco::Particle::LorentzVector fourVector(const reco::GenParticle&); 00025 private: 00026 edm::InputTag src_; 00027 int switchOption; 00028 std::map<int,std::vector<int> > refs_; //management of daughter 00029 //indices for fillRefs 00030 };