00001 #ifndef HLTHcalTowerNoiseCleaner_h 00002 #define HLTHcalTowerNoiseCleaner_h 00003 00009 #include "FWCore/Framework/interface/EDProducer.h" 00010 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00011 #include "FWCore/Framework/interface/Event.h" 00012 #include "FWCore/Framework/interface/EventSetup.h" 00013 #include "RecoMET/METAlgorithms/interface/HcalNoiseAlgo.h" 00014 00015 namespace edm { 00016 class ConfigurationDescriptions; 00017 } 00018 00019 class HLTHcalTowerNoiseCleaner : public edm::EDProducer { 00020 00021 public: 00022 explicit HLTHcalTowerNoiseCleaner(const edm::ParameterSet&); 00023 ~HLTHcalTowerNoiseCleaner(); 00024 static void fillDescriptions(edm::ConfigurationDescriptions & descriptions); 00025 virtual void produce(edm::Event&, const edm::EventSetup&); 00026 00027 private: 00028 // parameters 00029 edm::InputTag HcalNoiseRBXCollectionTag_; 00030 edm::InputTag TowerCollectionTag_; 00031 int severity_; 00032 int maxNumRBXs_; 00033 int numRBXsToConsider_; 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 // helper function to compare noise data energies 00054 struct noisedatacomp { 00055 inline bool operator() ( const CommonHcalNoiseRBXData& t1, const CommonHcalNoiseRBXData& t2) { 00056 return t1.energy()>t2.energy(); 00057 } 00058 }; 00059 typedef std::set<CommonHcalNoiseRBXData, noisedatacomp> noisedataset_t; 00060 }; 00061 00062 #endif //HLTHcalTowerNoiseCleaner_h