CMS 3D CMS Logo

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

Simple method to get the correct jet combination in semileptonic ttbar events. More...

#include "TopQuarkAnalysis/TopLeptonSelection/interface/TtSemiSimpleBestJetComb.h"

Public Member Functions

int operator() (std::vector< TtSemiEvtSolution > &)
 
 TtSemiSimpleBestJetComb ()
 
 ~TtSemiSimpleBestJetComb ()
 

Detailed Description

Simple method to get the correct jet combination in semileptonic ttbar events.

This method starts from a vector of fitted TtSemiEvtSolutions. This class returns the solution with the highest probChi^2 value. In case that there are more possibilities (eg when only a hadrW constraint was applied), the correct hadronic b is assumed to be the one with the smallest DR angle wrt the Whadr direction.

Author
Jan Heyninck
Version
Id:
TtSemiSimpleBestJetComb.h,v 1.4 2008/02/17 11:27:11 rwolf Exp

Definition at line 33 of file TtSemiSimpleBestJetComb.h.

Constructor & Destructor Documentation

TtSemiSimpleBestJetComb::TtSemiSimpleBestJetComb ( )

Definition at line 7 of file TtSemiSimpleBestJetComb.cc.

8 {
9 }
TtSemiSimpleBestJetComb::~TtSemiSimpleBestJetComb ( )

Definition at line 11 of file TtSemiSimpleBestJetComb.cc.

12 {
13 }

Member Function Documentation

int TtSemiSimpleBestJetComb::operator() ( std::vector< TtSemiEvtSolution > &  sols)

Definition at line 15 of file TtSemiSimpleBestJetComb.cc.

References max(), phi, and alignCSCRings::s.

16 {
17  // search the highest probChi^2 value in the among the different jet combination solutions
18  double maxProbChi2 = 0;
19  for(unsigned int s=0; s<sols.size(); s++) maxProbChi2 = std::max(maxProbChi2,sols[s].getProbChi2());
20 
21  //search indices of original solutions with highest probChi2 value
22  std::vector<unsigned int> indices;
23  indices.clear();
24  for(unsigned int s=0; s<sols.size(); s++){
25  if(fabs(sols[s].getProbChi2()-maxProbChi2) < 0.0001) indices.push_back(s);
26  }
27 
28  int bestSol = -999;
29  if(maxProbChi2 > 0.){
30  if(indices.size() == 1) bestSol = indices[0];
31  if(indices.size() == 2) {
32  //typically only light jets constraints applied, so still b-jet ambiguity to resolve
33  // -> look at DPhi(Whadr,bhadr) and choose smallest value
34  double DPhi_Wb0 = fabs(sols[indices[0]].getFitHadW().phi()-sols[indices[0]].getFitHadb().phi());
35  double DPhi_Wb1 = fabs(sols[indices[1]].getFitHadW().phi()-sols[indices[1]].getFitHadb().phi());
36  if(DPhi_Wb0>3.1415) DPhi_Wb0 = 2.*3.1415-DPhi_Wb0;
37  if(DPhi_Wb1>3.1415) DPhi_Wb1 = 2.*3.1415-DPhi_Wb1;
38  if(DPhi_Wb0 < DPhi_Wb1){
39  bestSol = indices[0];
40  }
41  else{
42  bestSol = indices[1];
43  }
44  }
45  }
46  return bestSol;
47 }
const T & max(const T &a, const T &b)
Definition: DDAxes.h:10