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