CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
Calculate Class Reference

Helper class for the calculation of a top and a W boson mass estime. More...

#include "DQM/Physics/interface/TopDQMHelpers.h"

Public Member Functions

 Calculate (int maxNJets, double wMass)
 default constructor More...
 
double massBTopQuark (const std::vector< reco::Jet > &jets, std::vector< double > VbtagWP, double btagWP_)
 calculate b-tagged t-quark mass estimate More...
 
double massTopQuark (const std::vector< reco::Jet > &jets)
 calculate t-quark mass estimate More...
 
double massWBoson (const std::vector< reco::Jet > &jets)
 calculate W boson mass estimate More...
 
double tmassTopQuark (reco::RecoCandidate *lep, const reco::MET &met, const reco::Jet &b)
 calculate top quark transverse mass estimate More...
 
double tmassWBoson (reco::RecoCandidate *lep, const reco::MET &met, const reco::Jet &b)
 calculate W boson transverse mass estimate More...
 
 ~Calculate ()
 default destructor More...
 

Private Member Functions

void operator() (const std::vector< reco::Jet > &jets)
 
void operator() (const reco::Jet &bJet, reco::RecoCandidate *lepton, const reco::MET &met)
 do the calculation of the transverse top and W masses More...
 
void operator2 (const std::vector< reco::Jet > &, std::vector< double >, double)
 do the calculation of the t-quark mass with one b-jet More...
 

Private Attributes

bool failed_
 indicate failed associations More...
 
double massBTopQuark_
 cache of b-tagged top quark mass estimate More...
 
double massTopQuark_
 cache of top quark mass estimate More...
 
double massWBoson_
 cache of w boson mass estimate More...
 
int maxNJets_
 max. number of jets to be considered More...
 
double tmassTopQuark_
 cache of top quark transverse mass estimate More...
 
double tmassWBoson_
 cache of W boson transverse mass estimate More...
 
double wMass_
 paramater of the w boson mass More...
 

Detailed Description

Helper class for the calculation of a top and a W boson mass estime.

Helper class for the calculation of a top and a W boson mass estimate. The core implementation originates from the plugin TtSemiLepHypMaxSumPtWMass in TopQuarkAnalysis/TopJetCombination package. It may be extended to include b tag information.

Definition at line 69 of file TopDQMHelpers.h.

Constructor & Destructor Documentation

Calculate::Calculate ( int  maxNJets,
double  wMass 
)

default constructor

Definition at line 4 of file TopDQMHelpers.cc.

4  :
5  failed_(false), maxNJets_(maxNJets), wMass_(wMass), massWBoson_(-1.), massTopQuark_(-1.), massBTopQuark_(-1.), tmassWBoson_(-1),tmassTopQuark_(-1)
6 {
7 }
double massWBoson_
cache of w boson mass estimate
double massTopQuark_
cache of top quark mass estimate
double tmassTopQuark_
cache of top quark transverse mass estimate
int maxNJets_
max. number of jets to be considered
double wMass_
paramater of the w boson mass
bool failed_
indicate failed associations
double tmassWBoson_
cache of W boson transverse mass estimate
double massBTopQuark_
cache of b-tagged top quark mass estimate
Calculate::~Calculate ( )
inline

default destructor

Definition at line 74 of file TopDQMHelpers.h.

74 {};

Member Function Documentation

double Calculate::massBTopQuark ( const std::vector< reco::Jet > &  jets,
std::vector< double >  VbtagWP,
double  btagWP_ 
)

calculate b-tagged t-quark mass estimate

Definition at line 23 of file TopDQMHelpers.cc.

References failed_, massBTopQuark_, and operator2().

Referenced by TopSingleLepton::MonitorEnsemble::fill().

24 {
25  if(!failed_&& massBTopQuark_<0) operator2(jets, VbtagWP, btagWP_); return massBTopQuark_;
26 }
void operator2(const std::vector< reco::Jet > &, std::vector< double >, double)
do the calculation of the t-quark mass with one b-jet
vector< PseudoJet > jets
bool failed_
indicate failed associations
double massBTopQuark_
cache of b-tagged top quark mass estimate
double Calculate::massTopQuark ( const std::vector< reco::Jet > &  jets)

calculate t-quark mass estimate

Definition at line 16 of file TopDQMHelpers.cc.

References failed_, massTopQuark_, and operator()().

Referenced by TopSingleLepton::MonitorEnsemble::fill(), and SingleTopTChannelLepton::MonitorEnsemble::fill().

17 {
19 }
double massTopQuark_
cache of top quark mass estimate
vector< PseudoJet > jets
void operator()(const std::vector< reco::Jet > &jets)
bool failed_
indicate failed associations
double Calculate::massWBoson ( const std::vector< reco::Jet > &  jets)

calculate W boson mass estimate

Definition at line 10 of file TopDQMHelpers.cc.

References failed_, massWBoson_, and operator()().

Referenced by TopSingleLepton::MonitorEnsemble::fill(), and SingleTopTChannelLepton::MonitorEnsemble::fill().

11 {
12  if(!failed_&& massWBoson_<0) operator()(jets); return massWBoson_;
13 }
double massWBoson_
cache of w boson mass estimate
vector< PseudoJet > jets
void operator()(const std::vector< reco::Jet > &jets)
bool failed_
indicate failed associations
void Calculate::operator() ( const std::vector< reco::Jet > &  jets)
private

do the calculation; this is called only once per event by the first function call to return a mass estimate. The once calculated values are cached afterwards

Definition at line 55 of file TopDQMHelpers.cc.

References failed_, customizeTrackingMonitorSeedNumber::idx, massTopQuark_, massWBoson_, maxNJets_, and wMass_.

Referenced by massTopQuark(), massWBoson(), tmassTopQuark(), and tmassWBoson().

56 {
57  if(maxNJets_<0) maxNJets_=jets.size();
58  failed_= jets.size()<(unsigned int) maxNJets_;
59  if( failed_){ return; }
60 
61  // associate those jets with maximum pt of the vectorial
62  // sum to the hadronic decay chain
63  double maxPt=-1.;
64  std::vector<int> maxPtIndices;
65  maxPtIndices.push_back(-1);
66  maxPtIndices.push_back(-1);
67  maxPtIndices.push_back(-1);
68 
69  for(int idx=0; idx<maxNJets_; ++idx){
70  for(int jdx=0; jdx<maxNJets_; ++jdx){ if(jdx<=idx) continue;
71  for(int kdx=0; kdx<maxNJets_; ++kdx){ if(kdx==idx || kdx==jdx) continue;
72  reco::Particle::LorentzVector sum = jets[idx].p4()+jets[jdx].p4()+jets[kdx].p4();
73  if( maxPt<0. || maxPt<sum.pt() ){
74  maxPt=sum.pt();
75  maxPtIndices.clear();
76  maxPtIndices.push_back(idx);
77  maxPtIndices.push_back(jdx);
78  maxPtIndices.push_back(kdx);
79  }
80  }
81  }
82  }
83  massTopQuark_= (jets[maxPtIndices[0]].p4()+
84  jets[maxPtIndices[1]].p4()+
85  jets[maxPtIndices[2]].p4()).mass();
86 
87  // associate those jets that get closest to the W mass
88  // with their invariant mass to the W boson
89  double wDist =-1.;
90  std::vector<int> wMassIndices;
91  wMassIndices.push_back(-1);
92  wMassIndices.push_back(-1);
93  for(unsigned idx=0; idx<maxPtIndices.size(); ++idx){
94  for(unsigned jdx=0; jdx<maxPtIndices.size(); ++jdx){
95  if( jdx==idx || maxPtIndices[idx]>maxPtIndices[jdx] ) continue;
96  reco::Particle::LorentzVector sum = jets[maxPtIndices[idx]].p4()+jets[maxPtIndices[jdx]].p4();
97  if( wDist<0. || wDist>fabs(sum.mass()-wMass_) ){
98  wDist=fabs(sum.mass()-wMass_);
99  wMassIndices.clear();
100  wMassIndices.push_back(maxPtIndices[idx]);
101  wMassIndices.push_back(maxPtIndices[jdx]);
102  }
103  }
104  }
105  massWBoson_= (jets[wMassIndices[0]].p4()+
106  jets[wMassIndices[1]].p4()).mass();
107 }
double massWBoson_
cache of w boson mass estimate
double massTopQuark_
cache of top quark mass estimate
int maxNJets_
max. number of jets to be considered
vector< PseudoJet > jets
double wMass_
paramater of the w boson mass
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
bool failed_
indicate failed associations
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:27
void Calculate::operator() ( const reco::Jet bJet,
reco::RecoCandidate lepton,
const reco::MET met 
)
private

do the calculation of the transverse top and W masses

Definition at line 42 of file TopDQMHelpers.cc.

References reco::LeafCandidate::p4(), funct::pow(), reco::LeafCandidate::px(), reco::LeafCandidate::py(), mathSSE::sqrt(), tmassTopQuark_, and tmassWBoson_.

42  {
43  double metT = sqrt(pow(met.px(),2) + pow(met.py(),2));
44  double lepT = sqrt(pow(lepton->px(),2) + pow(lepton->py(),2));
45  double bT = sqrt(pow(bJet.px(),2) + pow(bJet.py(),2));
46  reco::Particle::LorentzVector WT = lepton->p4() + met.p4();
47  tmassWBoson_ = sqrt(pow(metT+lepT,2) - (WT.px()*WT.px()) - (WT.py()*WT.py()));
48  reco::Particle::LorentzVector topT = WT + bJet.p4();
49  tmassTopQuark_ = sqrt(pow((metT+lepT+bT),2) - (topT.px()*topT.px()) - (topT.py()*topT.py()));
50 }
double tmassTopQuark_
cache of top quark transverse mass estimate
T sqrt(T t)
Definition: SSEVec.h:48
virtual double px() const
x coordinate of momentum vector
virtual const LorentzVector & p4() const
four-momentum Lorentz vector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:27
virtual double py() const
y coordinate of momentum vector
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
double tmassWBoson_
cache of W boson transverse mass estimate
void Calculate::operator2 ( const std::vector< reco::Jet > &  jets,
std::vector< double >  bjet,
double  btagWP 
)
private

do the calculation of the t-quark mass with one b-jet

Definition at line 110 of file TopDQMHelpers.cc.

References failed_, customizeTrackingMonitorSeedNumber::idx, massBTopQuark_, and maxNJets_.

Referenced by massBTopQuark().

111 {
112  if(maxNJets_<0) maxNJets_=jets.size();
113  failed_= jets.size()<(unsigned int) maxNJets_;
114  if( failed_){ return; }
115  if (jets.size() != bjet.size()){return;}
116 
117  // associate those jets with maximum pt of the vectorial
118  // sum to the hadronic decay chain. Require ONLY 1 btagged jet
119  double maxBPt=-1.;
120  std::vector<int> maxBPtIndices;
121  maxBPtIndices.push_back(-1);
122  maxBPtIndices.push_back(-1);
123  maxBPtIndices.push_back(-1);
124  for(int idx=0; idx<maxNJets_; ++idx){
125  for(int jdx=0; jdx<maxNJets_; ++jdx){ if(jdx<=idx) continue;
126  for(int kdx=0; kdx<maxNJets_; ++kdx){if(kdx==idx || kdx==jdx) continue;
127  //require only 1b-jet
128  if ((bjet[idx]> btagWP && bjet[jdx]<= btagWP && bjet[kdx]<= btagWP) ||
129  (bjet[idx]<= btagWP && bjet[jdx]> btagWP && bjet[kdx]<= btagWP) ||
130  (bjet[idx]<= btagWP && bjet[jdx]<= btagWP && bjet[kdx]> btagWP) ){
131  reco::Particle::LorentzVector sum = jets[idx].p4()+jets[jdx].p4()+jets[kdx].p4();
132  if( maxBPt<0. || maxBPt<sum.pt() ){
133  maxBPt=sum.pt();
134  maxBPtIndices.clear();
135  maxBPtIndices.push_back(idx);
136  maxBPtIndices.push_back(jdx);
137  maxBPtIndices.push_back(kdx);
138  }
139  }
140  }
141  }
142  }
143  if (maxBPtIndices[0]<0 || maxBPtIndices[1]<0 || maxBPtIndices[2]<0) return;
144  massBTopQuark_= (jets[maxBPtIndices[0]].p4()+
145  jets[maxBPtIndices[1]].p4()+
146  jets[maxBPtIndices[2]].p4()).mass();
147 }
int maxNJets_
max. number of jets to be considered
vector< PseudoJet > jets
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
bool failed_
indicate failed associations
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:27
double massBTopQuark_
cache of b-tagged top quark mass estimate
double Calculate::tmassTopQuark ( reco::RecoCandidate lep,
const reco::MET met,
const reco::Jet b 
)

calculate top quark transverse mass estimate

Definition at line 36 of file TopDQMHelpers.cc.

References operator()(), and tmassTopQuark_.

Referenced by SingleTopTChannelLepton::MonitorEnsemble::fill().

37 {
38  if( tmassTopQuark_<0) operator()(b,lepton,met); return tmassTopQuark_;
39 }
double tmassTopQuark_
cache of top quark transverse mass estimate
void operator()(const std::vector< reco::Jet > &jets)
double Calculate::tmassWBoson ( reco::RecoCandidate lep,
const reco::MET met,
const reco::Jet b 
)

calculate W boson transverse mass estimate

Definition at line 29 of file TopDQMHelpers.cc.

References operator()(), and tmassWBoson_.

Referenced by SingleTopTChannelLepton::MonitorEnsemble::fill().

30 {
31  if( tmassWBoson_<0) operator()(b,mu,met); return tmassWBoson_;
32 }
const int mu
Definition: Constants.h:22
void operator()(const std::vector< reco::Jet > &jets)
double tmassWBoson_
cache of W boson transverse mass estimate

Member Data Documentation

bool Calculate::failed_
private

indicate failed associations

Definition at line 102 of file TopDQMHelpers.h.

Referenced by massBTopQuark(), massTopQuark(), massWBoson(), operator()(), and operator2().

double Calculate::massBTopQuark_
private

cache of b-tagged top quark mass estimate

Definition at line 112 of file TopDQMHelpers.h.

Referenced by massBTopQuark(), and operator2().

double Calculate::massTopQuark_
private

cache of top quark mass estimate

Definition at line 110 of file TopDQMHelpers.h.

Referenced by massTopQuark(), and operator()().

double Calculate::massWBoson_
private

cache of w boson mass estimate

Definition at line 108 of file TopDQMHelpers.h.

Referenced by massWBoson(), and operator()().

int Calculate::maxNJets_
private

max. number of jets to be considered

Definition at line 104 of file TopDQMHelpers.h.

Referenced by operator()(), and operator2().

double Calculate::tmassTopQuark_
private

cache of top quark transverse mass estimate

Definition at line 116 of file TopDQMHelpers.h.

Referenced by operator()(), and tmassTopQuark().

double Calculate::tmassWBoson_
private

cache of W boson transverse mass estimate

Definition at line 114 of file TopDQMHelpers.h.

Referenced by operator()(), and tmassWBoson().

double Calculate::wMass_
private

paramater of the w boson mass

Definition at line 106 of file TopDQMHelpers.h.

Referenced by operator()().