CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CaloJetSelector.cc
Go to the documentation of this file.
1 
4 
6 
7 //______________________________________________________________________________
9 CaloJetSelector::filter( //const unsigned int& index,
10  // const edm::View<reco::CaloJet>& Jets
11  const reco::CaloJet& Jet
12  ) const
13 {
15 
18  if (Jet.p4().Pt()<config_.Ptmin) result = BAD;
19 
21  double eta = fabs(Jet.p4().Eta());
22  if (eta>config_.Etamax) result = BAD;
23 
25  double EMF = Jet.emEnergyFraction();
26  if (EMF<config_.EMFmin ||
27  EMF>config_.EMFmax ) result = BAD;
28 
30  double HadF = Jet.emEnergyFraction();
31  double EMvsHadF = 0.;
32  if (EMF-HadF!=0.) EMvsHadF = (EMF+HadF)/(EMF-HadF);
33  if (EMvsHadF<config_.EMvsHadFmin ||
34  EMvsHadF>config_.EMvsHadFmax ) result = BAD;
35 
36  //ratio Energy over Momentum (both from calorimeter)
37  //Useful? Both come from a lorentz-vector
38  //double EoverP = 0.;
39  //if (Jet.p4().P()!=0.) EoverP = Jet.energy() / Jet.p4().P();
40  //if (EoverP > config_.EoverPmax) result = BAD;
41 
43  double n90 = Jet.n90();
44  if (n90<config_.N90min ||
45  n90>config_.N90max ) result = BAD;
46 
48  std::vector<CaloTowerPtr> jetTowers = Jet.getCaloConstituents();
49  if (jetTowers.size()<config_.NCaloTowersmin ||
50  jetTowers.size()>config_.NCaloTowersmax ) result = BAD;
51 
52  //calculate tower related variables:
53  double MaxEnergyTower = 0., SumTowPt=0., SumTowPtR=0.;
54  for(std::vector<CaloTowerPtr>::const_iterator tow = jetTowers.begin(),
55  towend = jetTowers.end(); tow != towend; ++tow){
56 
57  SumTowPt += (*tow)->et();
58  SumTowPtR += (*tow)->et()*deltaR( Jet.p4().Eta(), Jet.p4().Phi(),
59  (*tow)->eta(), (*tow)->phi() );
60  if ( (*tow)->et() > MaxEnergyTower )
61  MaxEnergyTower = (*tow)->et();
62  }
63 
65  double EtTowerMaxOverEtJet = 0.;
66  if (Jet.p4().Et()!=0.) EtTowerMaxOverEtJet = MaxEnergyTower /Jet.p4().Et();
67  if (EtTowerMaxOverEtJet < config_.HighestTowerOverJetmin ||
68  EtTowerMaxOverEtJet > config_.HighestTowerOverJetmax ) result = BAD;
69 
71  double RWidth = 0.;
72  if (SumTowPt!=0.) RWidth = SumTowPtR /SumTowPt;
73  if (RWidth < config_.RWidthmin ||
74  RWidth > config_.RWidthmax ) result = BAD;
75 
77  double PtJetoverArea = 0.;
78  if (Jet.towersArea() !=0.) PtJetoverArea = Jet.p4().Pt() / Jet.towersArea();
79  if (PtJetoverArea < config_.PtJetOverArea_min ||
80  PtJetoverArea > config_.PtJetOverArea_max ) result = BAD;
81 
83  double PtToweroverArea = 0.;
84  if (Jet.towersArea() !=0.) PtToweroverArea = MaxEnergyTower / Jet.towersArea();
85  if (PtToweroverArea < config_.PtTowerOverArea_min ||
86  PtToweroverArea > config_.PtTowerOverArea_max ) result = BAD;
87 
88  return result;
89 }
double PtTowerOverArea_max
Definition: JetSelection.h:27
int n90() const
Definition: CaloJet.h:116
Jets made from CaloTowers.
Definition: CaloJet.h:30
SingleObjectSelector< reco::CaloJetCollection, StringCutObjectSelector< reco::CaloJet > > CaloJetSelector
double PtJetOverArea_min
Definition: JetSelection.h:26
T eta() const
virtual std::vector< CaloTowerPtr > getCaloConstituents() const
get all constituents
Definition: CaloJet.cc:94
1: Failed selection (without additional info)
Definition: ParticleCode.h:34
double PtJetOverArea_max
Definition: JetSelection.h:26
tuple result
Definition: query.py:137
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
double HighestTowerOverJetmax
Definition: JetSelection.h:24
float towersArea() const
Definition: CaloJet.h:114
Analysis-level calorimeter jet class.
Definition: Jet.h:72
double HighestTowerOverJetmin
Definition: JetSelection.h:24
0: Passed selection
Definition: ParticleCode.h:33
double PtTowerOverArea_min
Definition: JetSelection.h:27
ParticleStatus
Definition of particle status after selection.
Definition: ParticleCode.h:32
virtual const LorentzVector & p4() const
four-momentum Lorentz vector
float emEnergyFraction() const
Definition: CaloJet.h:98