CMS 3D CMS Logo

TtHadLRJetCombObservables.cc
Go to the documentation of this file.
1 
3 
4 // constructor with path; default should not be used
6 
8 
10  jetCombVarVal.clear();
11 
12  //observable 1 : pt(had top)
13  //Calculate the average pt for all possible combinations of light jets with the two b-jets
14  double AverageTop = ((sol.getHadb().p4() + sol.getHadq().p4() + sol.getHadp().p4()).pt() +
15  (sol.getHadbbar().p4() + sol.getHadq().p4() + sol.getHadp().p4()).pt() +
16  (sol.getHadb().p4() + sol.getHadbbar().p4() + sol.getHadp().p4()).pt() +
17  (sol.getHadb().p4() + sol.getHadbbar().p4() + sol.getHadq().p4()).pt() +
18  (sol.getHadb().p4() + sol.getHadk().p4() + sol.getHadj().p4()).pt() +
19  (sol.getHadbbar().p4() + sol.getHadk().p4() + sol.getHadj().p4()).pt() +
20  (sol.getHadb().p4() + sol.getHadbbar().p4() + sol.getHadj().p4()).pt() +
21  (sol.getHadb().p4() + sol.getHadbbar().p4() + sol.getHadk().p4()).pt() +
22  (sol.getHadb().p4() + sol.getHadq().p4() + sol.getHadj().p4()).pt() +
23  (sol.getHadb().p4() + sol.getHadq().p4() + sol.getHadk().p4()).pt() +
24  (sol.getHadbbar().p4() + sol.getHadq().p4() + sol.getHadj().p4()).pt() +
25  (sol.getHadbbar().p4() + sol.getHadq().p4() + sol.getHadk().p4()).pt()) /
26  12.;
27 
28  double Obs1 = ((sol.getHadb().p4() + sol.getHadq().p4() + sol.getHadp().p4() + sol.getHadbbar().p4() +
29  sol.getHadk().p4() + sol.getHadj().p4())
30  .pt()) /
31  AverageTop;
32  jetCombVarVal.push_back(std::pair<unsigned int, double>(1, Obs1));
33 
34  //observable 2 : (pt_b1 + pt_b2)/(sum jetpt)
35  double obs2 = (sol.getHadb().pt() + sol.getHadbbar().pt()) /
36  (sol.getHadp().pt() + sol.getHadq().pt() + sol.getHadj().pt() + sol.getHadk().pt());
37  jetCombVarVal.push_back(std::pair<unsigned int, double>(2, obs2));
38 
39  //observable 3 and 4: delta R between had b and had W and delta R between had bbar and had W
40  double Obs3 = ROOT::Math::VectorUtil::DeltaR(sol.getHadb().p4(), (sol.getHadq().p4() + sol.getHadp().p4()));
41  jetCombVarVal.push_back(std::pair<unsigned int, double>(3, Obs3));
42 
43  double Obs4 = ROOT::Math::VectorUtil::DeltaR(sol.getHadbbar().p4(), (sol.getHadk().p4() + sol.getHadj().p4()));
44  jetCombVarVal.push_back(std::pair<unsigned int, double>(4, Obs4));
45 
46  //observalbe 5 and 6: delta R between light quarks pq and jk
47  double Obs5 = ROOT::Math::VectorUtil::DeltaR(sol.getHadq().p4(), sol.getHadp().p4());
48  jetCombVarVal.push_back(std::pair<unsigned int, double>(5, Obs5));
49 
50  double Obs6 = ROOT::Math::VectorUtil::DeltaR(sol.getHadk().p4(), sol.getHadj().p4());
51  jetCombVarVal.push_back(std::pair<unsigned int, double>(6, Obs6));
52 
53  //observable 7: b-tagging information
54  double Obs7 = 0;
55  if (fabs(sol.getHadb().bDiscriminator("trackCountingJetTags") + 10) < 0.0001 ||
56  fabs(sol.getHadbbar().bDiscriminator("trackCountingJetTags") + 10) < 0.0001) {
57  Obs7 = -10.;
58  } else {
59  Obs7 = (sol.getHadb().bDiscriminator("trackCountingJetTags") +
60  sol.getHadbbar().bDiscriminator("trackCountingJetTags"));
61  }
62  jetCombVarVal.push_back(std::pair<unsigned int, double>(7, Obs7));
63 
64  //observable 8 : chi2 value of kinematical fit with W-mass constraint
65  double Obs8 = 0;
66  if (sol.getProbChi2() < 0) {
67  Obs8 = -0;
68  } else {
69  Obs8 = log10(sol.getProbChi2() + .00001);
70  }
71  jetCombVarVal.push_back(std::pair<unsigned int, double>(8, Obs8));
72 
73  sol.setLRJetCombObservables(jetCombVarVal);
74 }
constexpr float sol
Definition: Config.h:13
void operator()(TtHadEvtSolution &)
std::vector< std::pair< unsigned int, double > > jetCombVarVal