Go to the documentation of this file.00001
00002
00003
00004
00005 #include "TopQuarkAnalysis/TopJetCombination/interface/TtSemiSimpleBestJetComb.h"
00006
00007 TtSemiSimpleBestJetComb::TtSemiSimpleBestJetComb()
00008 {
00009 }
00010
00011 TtSemiSimpleBestJetComb::~TtSemiSimpleBestJetComb()
00012 {
00013 }
00014
00015 int TtSemiSimpleBestJetComb::operator()(std::vector<TtSemiEvtSolution> & sols)
00016 {
00017
00018 double maxProbChi2 = 0;
00019 for(unsigned int s=0; s<sols.size(); s++) maxProbChi2 = std::max(maxProbChi2,sols[s].getProbChi2());
00020
00021
00022 std::vector<unsigned int> indices;
00023 indices.clear();
00024 for(unsigned int s=0; s<sols.size(); s++){
00025 if(fabs(sols[s].getProbChi2()-maxProbChi2) < 0.0001) indices.push_back(s);
00026 }
00027
00028 int bestSol = -999;
00029 if(maxProbChi2 > 0.){
00030 if(indices.size() == 1) bestSol = indices[0];
00031 if(indices.size() == 2) {
00032
00033
00034 double DPhi_Wb0 = fabs(sols[indices[0]].getFitHadW().phi()-sols[indices[0]].getFitHadb().phi());
00035 double DPhi_Wb1 = fabs(sols[indices[1]].getFitHadW().phi()-sols[indices[1]].getFitHadb().phi());
00036 if(DPhi_Wb0>3.1415) DPhi_Wb0 = 2.*3.1415-DPhi_Wb0;
00037 if(DPhi_Wb1>3.1415) DPhi_Wb1 = 2.*3.1415-DPhi_Wb1;
00038 if(DPhi_Wb0 < DPhi_Wb1){
00039 bestSol = indices[0];
00040 }
00041 else{
00042 bestSol = indices[1];
00043 }
00044 }
00045 }
00046 return bestSol;
00047 }