CMS 3D CMS Logo

pat::CaloJetSelector Class Reference

Selects good Jets. More...

#include <PhysicsTools/PatUtils/CaloJetSelector.h>

List of all members.

Public Member Functions

 CaloJetSelector (const JetSelection &config)
const ParticleStatus filter (const reco::CaloJet &Jet) const
 Returns 0 if Jet matches criteria, a flag otherwise.
 ~CaloJetSelector ()

Private Attributes

JetSelection config_


Detailed Description

Selects good Jets.

The calo jet selector returns a flag (see pat::ParticleStatus) based on one of the possible selections. It is called by the generic JetSelector in case of "custom" selection.

Author:
C. Autermann (Uni Hamburg)
Version:
Id
CaloJetSelector.h,v 1.5 2008/03/10 14:23:58 fronga Exp

Definition at line 23 of file CaloJetSelector.h.


Constructor & Destructor Documentation

pat::CaloJetSelector::CaloJetSelector ( const JetSelection config  )  [inline]

Definition at line 27 of file CaloJetSelector.h.

00027 : config_( config ) {}

pat::CaloJetSelector::~CaloJetSelector (  )  [inline]

Definition at line 28 of file CaloJetSelector.h.

00028 {}


Member Function Documentation

const pat::ParticleStatus CaloJetSelector::filter ( const reco::CaloJet Jet  )  const

Returns 0 if Jet matches criteria, a flag otherwise.

Criteria depend on the selector's configuration.

Retrieve information Pt Jet

eta region

electromagnetic fraction

(EMCalEnergyFraction + HadCalEnergyFraction) / (EMCalEnergyFraction - HadCalEnergyFraction)

n90: number of towers containing 90% of the jet's energy

Tower Number

Highest Et Tower / Et Jet

Sum(E Twr * DeltaR(Twr-Jet)) / Sum(E Twr)

Pt Jet / Towers Area

Highest Et Tower / Towers Area

Definition at line 9 of file CaloJetSelector.cc.

References pat::BAD, config_, deltaR(), reco::CaloJet::emEnergyFraction(), pat::JetSelection::EMFmax, pat::JetSelection::EMFmin, pat::JetSelection::EMvsHadFmax, pat::JetSelection::EMvsHadFmin, eta, pat::JetSelection::Etamax, reco::CaloJet::getCaloConstituents(), pat::GOOD, pat::JetSelection::HighestTowerOverJetmax, pat::JetSelection::HighestTowerOverJetmin, reco::CaloJet::n90(), pat::JetSelection::N90max, pat::JetSelection::N90min, pat::JetSelection::NCaloTowersmax, pat::JetSelection::NCaloTowersmin, reco::Particle::p4(), pat::JetSelection::PtJetOverArea_max, pat::JetSelection::PtJetOverArea_min, pat::JetSelection::Ptmin, pat::JetSelection::PtTowerOverArea_max, pat::JetSelection::PtTowerOverArea_min, HLT_VtxMuL3::result, pat::JetSelection::RWidthmax, pat::JetSelection::RWidthmin, and reco::CaloJet::towersArea().

00013 {
00014   ParticleStatus result = GOOD;
00015 
00018   if (Jet.p4().Pt()<config_.Ptmin) result = BAD;
00019   
00021   double eta = fabs(Jet.p4().Eta());
00022   if (eta>config_.Etamax) result = BAD;
00023 
00025   double EMF = Jet.emEnergyFraction();              
00026   if (EMF<config_.EMFmin ||
00027       EMF>config_.EMFmax    ) result = BAD;
00028 
00030   double HadF = Jet.emEnergyFraction();              
00031   double EMvsHadF = 0.;
00032   if (EMF-HadF!=0.) EMvsHadF = (EMF+HadF)/(EMF-HadF);
00033   if (EMvsHadF<config_.EMvsHadFmin ||
00034       EMvsHadF>config_.EMvsHadFmax    ) result = BAD;
00035 
00036   //ratio Energy over Momentum (both from calorimeter)
00037   //Useful? Both come from a lorentz-vector
00038   //double EoverP = 0.;
00039   //if (Jet.p4().P()!=0.) EoverP = Jet.energy() / Jet.p4().P();
00040   //if (EoverP > config_.EoverPmax) result = BAD;
00041   
00043   double n90 = Jet.n90();
00044   if (n90<config_.N90min ||
00045       n90>config_.N90max    ) result = BAD;
00046 
00048   std::vector<CaloTowerPtr> jetTowers = Jet.getCaloConstituents();
00049   if (jetTowers.size()<config_.NCaloTowersmin ||
00050       jetTowers.size()>config_.NCaloTowersmax  ) result = BAD;
00051 
00052   //calculate tower related variables:
00053   double MaxEnergyTower = 0., SumTowPt=0., SumTowPtR=0.;
00054   for(std::vector<CaloTowerPtr>::const_iterator tow = jetTowers.begin(),
00055       towend = jetTowers.end(); tow != towend; ++tow){
00056 
00057     SumTowPt  += (*tow)->et();
00058     SumTowPtR += (*tow)->et()*deltaR( Jet.p4().Eta(), Jet.p4().Phi(),
00059                                       (*tow)->eta(),  (*tow)->phi()     );
00060     if ( (*tow)->et() > MaxEnergyTower )
00061        MaxEnergyTower = (*tow)->et();
00062   }
00063 
00065   double EtTowerMaxOverEtJet = 0.;
00066   if (Jet.p4().Et()!=0.) EtTowerMaxOverEtJet = MaxEnergyTower /Jet.p4().Et();
00067   if (EtTowerMaxOverEtJet < config_.HighestTowerOverJetmin ||
00068       EtTowerMaxOverEtJet > config_.HighestTowerOverJetmax  ) result = BAD;
00069 
00071   double RWidth = 0.;
00072   if (SumTowPt!=0.) RWidth = SumTowPtR /SumTowPt;
00073   if (RWidth < config_.RWidthmin ||
00074       RWidth > config_.RWidthmax  ) result = BAD;
00075   
00077   double PtJetoverArea = 0.;
00078   if (Jet.towersArea() !=0.) PtJetoverArea = Jet.p4().Pt() / Jet.towersArea();
00079   if (PtJetoverArea < config_.PtJetOverArea_min ||
00080       PtJetoverArea > config_.PtJetOverArea_max  ) result = BAD;
00081 
00083   double PtToweroverArea = 0.;
00084   if (Jet.towersArea() !=0.) PtToweroverArea = MaxEnergyTower / Jet.towersArea();
00085   if (PtToweroverArea < config_.PtTowerOverArea_min ||
00086       PtToweroverArea > config_.PtTowerOverArea_max  ) result = BAD;
00087 
00088   return result;
00089 }


Member Data Documentation

JetSelection pat::CaloJetSelector::config_ [private]

Definition at line 37 of file CaloJetSelector.h.

Referenced by filter().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:49:29 2009 for CMSSW by  doxygen 1.5.4