#include <PhysicsTools/PatUtils/CaloJetSelector.h>
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_ |
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.
Definition at line 23 of file CaloJetSelector.h.
pat::CaloJetSelector::CaloJetSelector | ( | const JetSelection & | config | ) | [inline] |
pat::CaloJetSelector::~CaloJetSelector | ( | ) | [inline] |
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 }
JetSelection pat::CaloJetSelector::config_ [private] |