Go to the documentation of this file.00001
00009 #include "HLTrigger/JetMET/interface/HLTRapGapFilter.h"
00010
00011 #include "DataFormats/Common/interface/Handle.h"
00012
00013 #include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"
00014
00015 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00016
00017 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00018
00019 #include "FWCore/Framework/interface/ESHandle.h"
00020 #include "FWCore/Framework/interface/EventSetup.h"
00021
00022
00023
00024
00025
00026 HLTRapGapFilter::HLTRapGapFilter(const edm::ParameterSet& iConfig)
00027 {
00028 inputTag_ = iConfig.getParameter< edm::InputTag > ("inputTag");
00029 saveTag_ = iConfig.getUntrackedParameter<bool>("saveTag",false);
00030 absEtaMin_ = iConfig.getParameter<double> ("minEta");
00031 absEtaMax_ = iConfig.getParameter<double> ("maxEta");
00032 caloThresh_ = iConfig.getParameter<double> ("caloThresh");
00033
00034
00035 produces<trigger::TriggerFilterObjectWithRefs>();
00036 }
00037
00038 HLTRapGapFilter::~HLTRapGapFilter(){}
00039
00040
00041
00042 bool
00043 HLTRapGapFilter::filter(edm::Event& iEvent, const edm::EventSetup& iSetup)
00044 {
00045 using namespace reco;
00046 using namespace trigger;
00047
00048
00049 std::auto_ptr<trigger::TriggerFilterObjectWithRefs>
00050 filterobject (new trigger::TriggerFilterObjectWithRefs(path(),module()));
00051 if (saveTag_) filterobject->addCollectionTag(inputTag_);
00052
00053 edm::Handle<CaloJetCollection> recocalojets;
00054 iEvent.getByLabel(inputTag_,recocalojets);
00055
00056
00057 int n(0);
00058
00059
00060
00061 if(recocalojets->size() > 1){
00062
00063
00064 double etjet=0.;
00065 double etajet=0.;
00066 double sumets=0.;
00067 int countjets =0;
00068
00069 for (CaloJetCollection::const_iterator recocalojet = recocalojets->begin();
00070 recocalojet!=(recocalojets->end()); recocalojet++) {
00071
00072 etjet = recocalojet->energy();
00073 etajet = recocalojet->eta();
00074
00075 if(fabs(etajet) > absEtaMin_ && fabs(etajet) < absEtaMax_)
00076 {
00077 sumets += etjet;
00078
00079
00080 }
00081 countjets++;
00082 }
00083
00084
00085 if(sumets<=caloThresh_){
00086
00087 for (CaloJetCollection::const_iterator recocalojet = recocalojets->begin();
00088 recocalojet!=(recocalojets->end()); recocalojet++) {
00089 CaloJetRef ref(CaloJetRef(recocalojets,distance(recocalojets->begin(),recocalojet)));
00090 filterobject->addObject(TriggerJet,ref);
00091 n++;
00092 }
00093 }
00094
00095 }
00096
00097
00098
00099
00100 bool accept(n>0);
00101
00102
00103 iEvent.put(filterobject);
00104
00105 return accept;
00106 }