Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:31:21

0001 
0002 #include "TopQuarkAnalysis/TopJetCombination/interface/TtHadLRJetCombObservables.h"
0003 
0004 // constructor with path; default should not be used
0005 TtHadLRJetCombObservables::TtHadLRJetCombObservables() {}
0006 
0007 TtHadLRJetCombObservables::~TtHadLRJetCombObservables() {}
0008 
0009 void TtHadLRJetCombObservables::operator()(TtHadEvtSolution& sol) {
0010   jetCombVarVal.clear();
0011 
0012   //observable 1 : pt(had top)
0013   //Calculate the average pt for all possible combinations of light jets with the two b-jets
0014   double AverageTop = ((sol.getHadb().p4() + sol.getHadq().p4() + sol.getHadp().p4()).pt() +
0015                        (sol.getHadbbar().p4() + sol.getHadq().p4() + sol.getHadp().p4()).pt() +
0016                        (sol.getHadb().p4() + sol.getHadbbar().p4() + sol.getHadp().p4()).pt() +
0017                        (sol.getHadb().p4() + sol.getHadbbar().p4() + sol.getHadq().p4()).pt() +
0018                        (sol.getHadb().p4() + sol.getHadk().p4() + sol.getHadj().p4()).pt() +
0019                        (sol.getHadbbar().p4() + sol.getHadk().p4() + sol.getHadj().p4()).pt() +
0020                        (sol.getHadb().p4() + sol.getHadbbar().p4() + sol.getHadj().p4()).pt() +
0021                        (sol.getHadb().p4() + sol.getHadbbar().p4() + sol.getHadk().p4()).pt() +
0022                        (sol.getHadb().p4() + sol.getHadq().p4() + sol.getHadj().p4()).pt() +
0023                        (sol.getHadb().p4() + sol.getHadq().p4() + sol.getHadk().p4()).pt() +
0024                        (sol.getHadbbar().p4() + sol.getHadq().p4() + sol.getHadj().p4()).pt() +
0025                        (sol.getHadbbar().p4() + sol.getHadq().p4() + sol.getHadk().p4()).pt()) /
0026                       12.;
0027 
0028   double Obs1 = ((sol.getHadb().p4() + sol.getHadq().p4() + sol.getHadp().p4() + sol.getHadbbar().p4() +
0029                   sol.getHadk().p4() + sol.getHadj().p4())
0030                      .pt()) /
0031                 AverageTop;
0032   jetCombVarVal.push_back(std::pair<unsigned int, double>(1, Obs1));
0033 
0034   //observable 2 : (pt_b1 + pt_b2)/(sum jetpt)
0035   double obs2 = (sol.getHadb().pt() + sol.getHadbbar().pt()) /
0036                 (sol.getHadp().pt() + sol.getHadq().pt() + sol.getHadj().pt() + sol.getHadk().pt());
0037   jetCombVarVal.push_back(std::pair<unsigned int, double>(2, obs2));
0038 
0039   //observable 3 and 4: delta R between had b and had W and delta R between had bbar and had W
0040   double Obs3 = ROOT::Math::VectorUtil::DeltaR(sol.getHadb().p4(), (sol.getHadq().p4() + sol.getHadp().p4()));
0041   jetCombVarVal.push_back(std::pair<unsigned int, double>(3, Obs3));
0042 
0043   double Obs4 = ROOT::Math::VectorUtil::DeltaR(sol.getHadbbar().p4(), (sol.getHadk().p4() + sol.getHadj().p4()));
0044   jetCombVarVal.push_back(std::pair<unsigned int, double>(4, Obs4));
0045 
0046   //observalbe 5 and 6: delta R between light quarks pq and jk
0047   double Obs5 = ROOT::Math::VectorUtil::DeltaR(sol.getHadq().p4(), sol.getHadp().p4());
0048   jetCombVarVal.push_back(std::pair<unsigned int, double>(5, Obs5));
0049 
0050   double Obs6 = ROOT::Math::VectorUtil::DeltaR(sol.getHadk().p4(), sol.getHadj().p4());
0051   jetCombVarVal.push_back(std::pair<unsigned int, double>(6, Obs6));
0052 
0053   //observable 7: b-tagging information
0054   double Obs7 = 0;
0055   if (fabs(sol.getHadb().bDiscriminator("trackCountingJetTags") + 10) < 0.0001 ||
0056       fabs(sol.getHadbbar().bDiscriminator("trackCountingJetTags") + 10) < 0.0001) {
0057     Obs7 = -10.;
0058   } else {
0059     Obs7 = (sol.getHadb().bDiscriminator("trackCountingJetTags") +
0060             sol.getHadbbar().bDiscriminator("trackCountingJetTags"));
0061   }
0062   jetCombVarVal.push_back(std::pair<unsigned int, double>(7, Obs7));
0063 
0064   //observable 8 : chi2 value of kinematical fit with W-mass constraint
0065   double Obs8 = 0;
0066   if (sol.getProbChi2() < 0) {
0067     Obs8 = -0;
0068   } else {
0069     Obs8 = log10(sol.getProbChi2() + .00001);
0070   }
0071   jetCombVarVal.push_back(std::pair<unsigned int, double>(8, Obs8));
0072 
0073   sol.setLRJetCombObservables(jetCombVarVal);
0074 }