CMS 3D CMS Logo

Public Member Functions | Private Attributes

HLTPhi2METFilter Class Reference

#include <HLTPhi2METFilter.h>

Inheritance diagram for HLTPhi2METFilter:
HLTFilter edm::EDFilter edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

virtual bool filter (edm::Event &, const edm::EventSetup &)
 HLTPhi2METFilter (const edm::ParameterSet &)
 ~HLTPhi2METFilter ()

Private Attributes

edm::InputTag inputJetTag_
edm::InputTag inputMETTag_
double maxDPhi_
double minDPhi_
double minEtjet1_
double minEtjet2_
bool saveTags_

Detailed Description

Author:
Dominique J. Mangeol

Definition at line 16 of file HLTPhi2METFilter.h.


Constructor & Destructor Documentation

HLTPhi2METFilter::HLTPhi2METFilter ( const edm::ParameterSet iConfig) [explicit]

Definition at line 26 of file HLTPhi2METFilter.cc.

References edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), inputJetTag_, inputMETTag_, maxDPhi_, minDPhi_, minEtjet1_, minEtjet2_, and saveTags_.

{
   inputJetTag_ = iConfig.getParameter< edm::InputTag > ("inputJetTag");
   inputMETTag_ = iConfig.getParameter< edm::InputTag > ("inputMETTag");
   saveTags_    = iConfig.getUntrackedParameter<bool>("saveTags",false);
   minDPhi_   = iConfig.getParameter<double> ("minDeltaPhi");
   maxDPhi_   = iConfig.getParameter<double> ("maxDeltaPhi");
   minEtjet1_= iConfig.getParameter<double> ("minEtJet1"); 
   minEtjet2_= iConfig.getParameter<double> ("minEtJet2"); 

   //register your products
   produces<trigger::TriggerFilterObjectWithRefs>();
}
HLTPhi2METFilter::~HLTPhi2METFilter ( )

Definition at line 40 of file HLTPhi2METFilter.cc.

{}

Member Function Documentation

bool HLTPhi2METFilter::filter ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [virtual]

Implements HLTFilter.

Definition at line 45 of file HLTPhi2METFilter.cc.

References accept(), edm::Event::getByLabel(), inputJetTag_, inputMETTag_, M_PI, maxDPhi_, minDPhi_, minEtjet1_, minEtjet2_, module(), n, path(), edm::Event::put(), dt_dqm_sourceclient_common_cff::reco, saveTags_, trigger::TriggerJet, and trigger::TriggerMET.

{
  using namespace std;
  using namespace edm;
  using namespace reco;
  using namespace trigger;

  // The filter object
  auto_ptr<trigger::TriggerFilterObjectWithRefs> 
    filterobject (new trigger::TriggerFilterObjectWithRefs(path(),module()));
  if (saveTags_) {
    filterobject->addCollectionTag(inputJetTag_);
    filterobject->addCollectionTag(inputMETTag_);
  }

  Handle<CaloJetCollection> recocalojets;
  iEvent.getByLabel(inputJetTag_,recocalojets);
  Handle<trigger::TriggerFilterObjectWithRefs> metcal;
  iEvent.getByLabel(inputMETTag_,metcal);

  // look at all candidates,  check cuts and add to filter object
  int n(0);

  VRcalomet vrefMET; 
  metcal->getObjects(TriggerMET,vrefMET);
  CaloMETRef metRef=vrefMET.at(0);
  CaloJetRef ref1,ref2;

  if(recocalojets->size() > 1){
    // events with two or more jets

    double etjet1=0.;
    double etjet2=0.;
    double phijet2=0.;
    // double etmiss  = vrefMET.at(0)->et();
    double phimiss = vrefMET.at(0)->phi();
    int countjets =0;
   
    for (CaloJetCollection::const_iterator recocalojet = recocalojets->begin(); 
         recocalojet<=(recocalojets->begin()+1); recocalojet++) {
      
      if(countjets==0) {
        etjet1 = recocalojet->et();
        ref1  = CaloJetRef(recocalojets,distance(recocalojets->begin(),recocalojet));
      }
      if(countjets==1) {
        etjet2 = recocalojet->et();
        phijet2 = recocalojet->phi();
        ref2  = CaloJetRef(recocalojets,distance(recocalojets->begin(),recocalojet));
      }
      countjets++;
    }
    double Dphi= fabs(phimiss-phijet2);
    if (Dphi>M_PI) Dphi=2.0*M_PI-Dphi;
    if(etjet1>minEtjet1_  && etjet2>minEtjet2_ && Dphi>=minDPhi_ && Dphi<=maxDPhi_){
        filterobject->addObject(TriggerMET,metRef);
        filterobject->addObject(TriggerJet,ref1);
        filterobject->addObject(TriggerJet,ref2);
        n++;
    }
    
  } // events with two or more jets
  
  
  
  // filter decision
  bool accept(n>=1);
  
  // put filter object into the Event
  iEvent.put(filterobject);
  
  return accept;
}

Member Data Documentation

Definition at line 24 of file HLTPhi2METFilter.h.

Referenced by filter(), and HLTPhi2METFilter().

Definition at line 25 of file HLTPhi2METFilter.h.

Referenced by filter(), and HLTPhi2METFilter().

double HLTPhi2METFilter::maxDPhi_ [private]

Definition at line 31 of file HLTPhi2METFilter.h.

Referenced by filter(), and HLTPhi2METFilter().

double HLTPhi2METFilter::minDPhi_ [private]

Definition at line 30 of file HLTPhi2METFilter.h.

Referenced by filter(), and HLTPhi2METFilter().

double HLTPhi2METFilter::minEtjet1_ [private]

Definition at line 28 of file HLTPhi2METFilter.h.

Referenced by filter(), and HLTPhi2METFilter().

double HLTPhi2METFilter::minEtjet2_ [private]

Definition at line 29 of file HLTPhi2METFilter.h.

Referenced by filter(), and HLTPhi2METFilter().

Definition at line 26 of file HLTPhi2METFilter.h.

Referenced by filter(), and HLTPhi2METFilter().