00001 #ifndef HLTHcalMETNoiseCleaner_h 00002 #define HLTHcalMETNoiseCleaner_h 00003 00010 #include "HLTrigger/HLTcore/interface/HLTFilter.h" 00011 #include "RecoMET/METAlgorithms/interface/HcalNoiseAlgo.h" 00012 00013 namespace edm { 00014 class ConfigurationDescriptions; 00015 } 00016 00017 class HLTHcalMETNoiseCleaner : public edm::EDFilter { 00018 00019 public: 00020 explicit HLTHcalMETNoiseCleaner(const edm::ParameterSet&); 00021 ~HLTHcalMETNoiseCleaner(); 00022 static void fillDescriptions(edm::ConfigurationDescriptions & descriptions); 00023 virtual bool filter(edm::Event&, const edm::EventSetup&); 00024 00025 private: 00026 // parameters 00027 edm::InputTag HcalNoiseRBXCollectionTag_; 00028 edm::InputTag CaloMetCollectionTag_; 00029 double CaloMetCut_; 00030 int severity_; 00031 int maxNumRBXs_; 00032 int numRBXsToConsider_; 00033 bool accept2NoiseRBXEvents_; 00034 bool needEMFCoincidence_; 00035 double minRBXEnergy_; 00036 double minRatio_; 00037 double maxRatio_; 00038 int minHPDHits_; 00039 int minRBXHits_; 00040 int minHPDNoOtherHits_; 00041 int minZeros_; 00042 double minHighEHitTime_; 00043 double maxHighEHitTime_; 00044 double maxRBXEMF_; 00045 00046 // imported from the RecoMET/METProducers/python/hcalnoiseinfoproducer_cfi 00047 double minRecHitE_, minLowHitE_, minHighHitE_; 00048 00049 double TS4TS5EnergyThreshold_; 00050 std::vector<std::pair<double, double> > TS4TS5UpperCut_; 00051 std::vector<std::pair<double, double> > TS4TS5LowerCut_; 00052 00053 reco::CaloMET BuildCaloMet(float sumet,float pt,float phi); 00054 00055 // helper function to compare noise data energies 00056 struct noisedatacomp { 00057 inline bool operator() ( const CommonHcalNoiseRBXData& t1, const CommonHcalNoiseRBXData& t2) { 00058 return t1.energy()>t2.energy(); 00059 } 00060 }; 00061 typedef std::set<CommonHcalNoiseRBXData, noisedatacomp> noisedataset_t; 00062 }; 00063 00064 #endif //HLTHcalMETNoiseCleaner_h