00001 /*HLTTauMCProducer 00002 Producer that creates LorentzVector Collections 00003 from offline reconstructed quantities to be used 00004 in Offline Trigger DQM etc 00005 */ 00006 00007 #ifndef HLTTauMCProducer_h 00008 #define HLTTauMCProducer_h 00009 00010 #include "FWCore/Framework/interface/Frameworkfwd.h" 00011 #include "FWCore/Framework/interface/EDProducer.h" 00012 #include "FWCore/Framework/interface/Event.h" 00013 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00014 #include "FWCore/Utilities/interface/InputTag.h" 00015 #include "DataFormats/Common/interface/Handle.h" 00016 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00017 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" 00018 #include "DataFormats/HepMCCandidate/interface/GenParticle.h" 00019 #include "DataFormats/HepMCCandidate/interface/GenParticleFwd.h" 00020 #include "DataFormats/Candidate/interface/Candidate.h" 00021 #include "DataFormats/Math/interface/LorentzVector.h" 00022 #include "HepMC/GenEvent.h" 00023 #include <vector> 00024 #include <string> 00025 #include "TLorentzVector.h" 00026 00027 typedef math::XYZTLorentzVectorD LorentzVector; 00028 typedef std::vector<LorentzVector> LorentzVectorCollection; 00029 00030 class HLTTauMCProducer : public edm::EDProducer { 00031 00032 public: 00033 explicit HLTTauMCProducer(const edm::ParameterSet&); 00034 ~HLTTauMCProducer(); 00035 00036 virtual void produce(edm::Event&, const edm::EventSetup&); 00037 00038 private: 00039 00040 std::vector<reco::GenParticle*> getGenStableDecayProducts(const reco::GenParticle * particle); 00041 00042 enum tauDecayModes {kElectron, kMuon, 00043 kOneProng0pi0, kOneProng1pi0, kOneProng2pi0, 00044 kThreeProng0pi0, kThreeProng1pi0, 00045 kOther, kUndefined}; 00046 00047 edm::InputTag MC_; 00048 double ptMinMCTau_; 00049 double ptMinMCElectron_; 00050 double ptMinMCMuon_; 00051 std::vector<int> m_PDG_; 00052 double etaMax; 00053 00054 }; 00055 00056 #endif