Go to the documentation of this file.00001
00013 #include "HLTrigger/HLTcore/interface/HLTFilter.h"
00014
00015
00016
00017
00018 class HLTHcalTowerFilter : public HLTFilter
00019 {
00020 public:
00021 explicit HLTHcalTowerFilter(const edm::ParameterSet &);
00022 ~HLTHcalTowerFilter();
00023
00024 private:
00025 virtual bool filter(edm::Event &, const edm::EventSetup &);
00026
00027 edm::InputTag inputTag_;
00028 bool saveTag_;
00029 double min_E_HB_;
00030 double min_E_HE_;
00031 double min_E_HF_;
00032 int max_N_HB_;
00033 int max_N_HE_;
00034 int max_N_HF_;
00035 };
00036
00037 #include <memory>
00038
00039 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00040 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00041 #include "DataFormats/Common/interface/Handle.h"
00042 #include "DataFormats/Common/interface/Ref.h"
00043 #include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"
00044 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h"
00045
00046
00047
00048
00049 HLTHcalTowerFilter::HLTHcalTowerFilter(const edm::ParameterSet& config) :
00050 inputTag_ (config.getParameter<edm::InputTag>("inputTag")),
00051 saveTag_ (config.getUntrackedParameter<bool>("saveTag",false)),
00052 min_E_HB_ (config.getParameter<double> ("MinE_HB")),
00053 min_E_HE_ (config.getParameter<double> ("MinE_HE")),
00054 min_E_HF_ (config.getParameter<double> ("MinE_HF")),
00055 max_N_HB_ (config.getParameter<int> ("MaxN_HB")),
00056 max_N_HE_ (config.getParameter<int> ("MaxN_HE")),
00057 max_N_HF_ (config.getParameter<int> ("MaxN_HF"))
00058 {
00059
00060 produces<trigger::TriggerFilterObjectWithRefs>();
00061 }
00062
00063 HLTHcalTowerFilter::~HLTHcalTowerFilter()
00064 {
00065 }
00066
00067
00068
00069
00070
00071
00072 bool
00073 HLTHcalTowerFilter::filter(edm::Event& event, const edm::EventSetup& setup)
00074 {
00075 using namespace std;
00076 using namespace edm;
00077 using namespace reco;
00078 using namespace trigger;
00079
00080
00081 std::auto_ptr<TriggerFilterObjectWithRefs> filterobject (new TriggerFilterObjectWithRefs(path(),module()));
00082 if(saveTag_) filterobject->addCollectionTag(inputTag_);
00083
00084
00085 Handle<CaloTowerCollection> towers;
00086 event.getByLabel(inputTag_, towers);
00087
00088
00089 int n_HB = 0;
00090 int n_HE = 0;
00091 int n_HF = 0;
00092 double abseta = 0;
00093 for(CaloTowerCollection::const_iterator i = towers->begin(); i != towers->end(); ++i)
00094 {
00095 abseta = fabs(i->eta());
00096 if(abseta<1.305)
00097 {
00098 if(i->hadEnergy() >= min_E_HB_)
00099 {
00100 n_HB++;
00101
00102
00103 }
00104 }
00105 else if(abseta>=1.305 && abseta<3)
00106 {
00107 if(i->hadEnergy() >= min_E_HE_)
00108 {
00109 n_HE++;
00110
00111
00112 }
00113 }
00114 else
00115 {
00116 if(i->hadEnergy() >= min_E_HF_)
00117 {
00118 n_HF++;
00119
00120
00121 }
00122 }
00123 }
00124
00125
00126 bool accept(n_HB<max_N_HB_ && n_HE<max_N_HE_ && n_HF<max_N_HF_ );
00127
00128
00129 event.put(filterobject);
00130
00131 return accept;
00132 }
00133
00134
00135 #include "FWCore/Framework/interface/MakerMacros.h"
00136 DEFINE_FWK_MODULE(HLTHcalTowerFilter);
00137