00001 #ifndef METProducer_h 00002 #define METProducer_h 00003 00015 #include <vector> 00016 #include <cstdlib> 00017 #include <string.h> 00018 #include "FWCore/Framework/interface/EDProducer.h" 00019 #include "FWCore/Framework/interface/Event.h" 00020 #include "DataFormats/Common/interface/Handle.h" 00021 #include "FWCore/Framework/interface/EventSetup.h" 00022 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00023 #include "RecoMET/METAlgorithms/interface/METAlgo.h" 00024 #include "RecoMET/METAlgorithms/interface/TCMETAlgo.h" 00025 #include "DataFormats/Math/interface/LorentzVector.h" 00026 #include "DataFormats/Math/interface/Point3D.h" 00027 #include "DataFormats/JetReco/interface/CaloJetCollection.h" 00028 #include "DataFormats/METReco/interface/METFwd.h" 00029 #include "DataFormats/METReco/interface/CaloMETFwd.h" 00030 #include "DataFormats/METReco/interface/GenMETFwd.h" 00031 #include "DataFormats/METReco/interface/PFMETFwd.h" 00032 #include "DataFormats/METReco/interface/PFClusterMETFwd.h" 00033 #include "DataFormats/Candidate/interface/Candidate.h" 00034 #include "DataFormats/Common/interface/OwnVector.h" 00035 #include "TH2F.h" 00036 00037 class TCMETAlgo; 00038 00039 namespace metsig{ 00040 class SignAlgoResolutions; 00041 } 00042 00043 namespace cms 00044 { 00045 class METProducer: public edm::EDProducer 00046 { 00047 public: 00048 typedef math::XYZTLorentzVector LorentzVector; 00049 typedef math::XYZPoint Point; 00050 typedef edm::OwnVector<reco::Candidate> CandidateCollection; 00051 explicit METProducer(const edm::ParameterSet&); 00052 explicit METProducer(); 00053 virtual ~METProducer(); 00054 //const CandidateCollection* convert( const reco::CaloJetCollection* ); 00055 virtual void produce(edm::Event&, const edm::EventSetup&); 00056 00057 private: 00058 METAlgo alg_; 00059 edm::InputTag inputLabel; 00060 std::string inputType; 00061 std::string METtype; 00062 std::string alias; 00063 00064 //Calculate MET Significance (not necessary at HLT) 00065 bool calculateSignificance_; 00066 metsig::SignAlgoResolutions *resolutions_; 00067 edm::InputTag jetsLabel_; //used for jet-based significance calculation 00068 00069 //Use HF in CaloMET calculation? 00070 bool noHF; 00071 00072 //Use an Et threshold on all of the objects in the CaloMET calculation? 00073 double globalThreshold; 00074 00075 //Use only fiducial GenParticles in GenMET calculation? 00076 bool onlyFiducial; 00077 00078 //Use Pt instaed of Et 00079 bool usePt; 00080 00081 TCMETAlgo* tcmetalgorithm; 00082 int myResponseFunctionType; 00083 00084 }; 00085 } 00086 00087 #endif // METProducer_h