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