CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_4/src/HLTriggerOffline/Tau/interface/HLTTauMCProducer.h

Go to the documentation of this file.
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