14 std::vector<pat::Jet> topJets;
16 topJets.push_back(TS.
getHadp());
17 topJets.push_back(TS.
getHadq());
18 topJets.push_back(TS.
getHadj());
19 topJets.push_back(TS.
getHadk());
20 topJets.push_back(TS.
getHadb());
24 TLorentzVector *Hadp =
new TLorentzVector();
25 TLorentzVector *Hadq =
new TLorentzVector();
26 TLorentzVector *Hadj =
new TLorentzVector();
27 TLorentzVector *Hadk =
new TLorentzVector();
28 TLorentzVector *Hadb =
new TLorentzVector();
29 TLorentzVector *Hadbbar =
new TLorentzVector();
30 Hadp->SetPxPyPzE(topJets[0].px(),topJets[0].py(),topJets[0].pz(),topJets[3].
energy());
31 Hadq->SetPxPyPzE(topJets[1].px(),topJets[1].py(),topJets[1].pz(),topJets[2].
energy());
32 Hadj->SetPxPyPzE(topJets[2].px(),topJets[2].py(),topJets[2].pz(),topJets[2].
energy());
33 Hadk->SetPxPyPzE(topJets[3].px(),topJets[3].py(),topJets[3].pz(),topJets[3].
energy());
34 Hadb->SetPxPyPzE(topJets[4].px(),topJets[4].py(),topJets[4].pz(),topJets[1].
energy());
35 Hadbbar->SetPxPyPzE(topJets[4].px(),topJets[4].py(),topJets[4].pz(),topJets[1].
energy());
41 double EtSum = topJets[5].et()+topJets[5].et();
42 double Obs1 = (EtSum>0 ? EtSum : -1);
51 double BGap = topJets[1].bDiscriminator(
"trackCountingJetTags") - topJets[2].bDiscriminator(
"trackCountingJetTags");
52 double Obs2 = (BGap>0 ?
log(BGap) : -1);
56 double N=0,
D=0,C_tmp=0,
C=1000;
61 for(
unsigned int i=0;
i<6;
i++){
62 D += fabs(topJets[
i].pt());
67 for(
unsigned int i=0;
i<360;
i++){
72 for(
unsigned int i=0;
i<4;
i++){
73 N += fabs(topJets[
i].px()*nx+topJets[
i].py()*ny+topJets[
i].pz()*nz);
76 if(C_tmp<
C)
C = C_tmp;
80 double Obs3 = (
C!=1000 ?
C : -1);
86 for(
unsigned int i=0;
i<6;
i++){
87 HT += topJets[
i].et();
90 double Obs4 = ( HT!=0 ? HT : -1);
96 for(
unsigned int i=0;
i<6;
i++){
97 pjets += topJets[
i].p4();
100 double Obs5 = ( MT>0 ? MT : -1);
107 double px1 = topJets[2].px();
double px2 = topJets[3].px();
108 double py1 = topJets[2].py();
double py2 = topJets[3].py();
109 double pz1 = topJets[2].pz();
double pz2 = topJets[3].pz();
110 double E1 = topJets[2].energy();
double E2 = topJets[3].energy();
111 double px3 = topJets[4].px();
double px4 = topJets[5].px();
112 double py3 = topJets[4].py();
double py4 = topJets[5].py();
113 double pz3 = topJets[4].pz();
double pz4 = topJets[5].pz();
114 double E3 = topJets[4].energy();
double E4 = topJets[5].energy();
116 TLorentzVector *LightJet1 =
new TLorentzVector();
117 TLorentzVector *LightJet2 =
new TLorentzVector();
118 TLorentzVector *LightJet3 =
new TLorentzVector();
119 TLorentzVector *LightJet4 =
new TLorentzVector();
121 LightJet1->SetPxPyPzE(px1,py1,pz1,E1);
123 LightJet2->SetPxPyPzE(px2,py2,pz2,E2);
125 LightJet3->SetPxPyPzE(px3,py3,pz3,E3);
127 LightJet4->SetPxPyPzE(px4,py4,pz4,E4);
130 double CosTheta1 =
cos(LightJet2->Angle(LightJet1->Vect()));
131 double CosTheta2 =
cos(LightJet4->Angle(LightJet3->Vect()));
133 double Obs6 = ( -1<CosTheta1 ? CosTheta1 : -2);
135 double Obs7 = ( -1<CosTheta2 ? CosTheta2 : -2);
147 double BjetsBdiscSum = topJets[0].bDiscriminator(
"trackCountingJetTags") + topJets[1].bDiscriminator(
"trackCountingJetTags");
148 double Ljets1BdiscSum = topJets[2].bDiscriminator(
"trackCountingJetTags") + topJets[3].bDiscriminator(
"trackCountingJetTags");
149 double Ljets2BdiscSum = topJets[4].bDiscriminator(
"trackCountingJetTags") + topJets[5].bDiscriminator(
"trackCountingJetTags");
153 double Obs8 = (Ljets1BdiscSum !=0 ?
log(BjetsBdiscSum/Ljets1BdiscSum) : -1);
155 double Obs9 = (Ljets2BdiscSum !=0 ?
log(BjetsBdiscSum/Ljets2BdiscSum) : -1);
157 double Obs10 = (BGap>0 ?
log(BjetsBdiscSum*BGap) : -1);
162 double Obs11 = (HT!=0 ? (HT-EtSum)/HT : -1);
175 double P2 = PX2+PY2+PZ2;
177 double PXY = Hadp->Px()*Hadp->Py()+Hadq->Px()*Hadq->Py()+Hadb->Px()*Hadb->Py()+
178 Hadj->Px()*Hadj->Py()+Hadk->Px()*Hadk->Py()+Hadbbar->Px()*Hadbbar->Py();
179 double PXZ = Hadp->Px()*Hadp->Pz()+Hadq->Px()*Hadq->Pz()+Hadb->Px()*Hadb->Pz()+
180 Hadj->Px()*Hadj->Pz()+Hadk->Px()*Hadk->Pz()+Hadbbar->Px()*Hadbbar->Pz();
181 double PYZ = Hadp->Py()*Hadp->Pz()+Hadq->Py()*Hadq->Pz()+Hadb->Py()*Hadb->Pz()+
182 Hadj->Py()*Hadj->Pz()+Hadk->Py()*Hadk->Pz()+Hadbbar->Py()*Hadbbar->Pz();
188 TMatrixDSymEigen pTensor(Matrix);
190 std::vector<double> EigValues;
192 for(
int i=0;
i<3;
i++){
193 EigValues.push_back(pTensor.GetEigenValues()[
i]);
198 double Sphericity = 1.5*(EigValues[1]+EigValues[2]);
199 double Aplanarity = 1.5*EigValues[2];
201 double Obs12 = (
isnan(Sphericity) ? -1 : Sphericity);
204 double Obs13 = (
isnan(Aplanarity) ? -1 : Aplanarity);
209 TLorentzVector *TtbarSystem =
new TLorentzVector();
210 TtbarSystem->SetPx(Hadp->Px()+Hadq->Px()+Hadb->Px()+Hadj->Px()+Hadk->Px()+Hadbbar->Px());
211 TtbarSystem->SetPy(Hadp->Py()+Hadq->Py()+Hadb->Py()+Hadj->Py()+Hadk->Py()+Hadbbar->Py());
212 TtbarSystem->SetPz(Hadp->Pz()+Hadq->Pz()+Hadb->Pz()+Hadj->Pz()+Hadk->Pz()+Hadbbar->Pz());
213 TtbarSystem->SetE(Hadp->E()+Hadq->E()+Hadb->E()+Hadj->E()+Hadk->E()+Hadbbar->E());
215 TVector3 BoostBackToCM = -(TtbarSystem->BoostVector());
216 Hadp->Boost(BoostBackToCM);
217 Hadq->Boost(BoostBackToCM);
218 Hadb->Boost(BoostBackToCM);
219 Hadj->Boost(BoostBackToCM);
220 Hadk->Boost(BoostBackToCM);
221 Hadbbar->Boost(BoostBackToCM);
230 double BOOST_P2 = BOOST_PX2+BOOST_PY2+BOOST_PZ2;
232 double BOOST_PXY = Hadp->Px()*Hadp->Py()+Hadq->Px()*Hadq->Py()+Hadb->Px()*Hadb->Py()+
233 Hadj->Px()*Hadj->Py()+Hadk->Px()*Hadk->Py()+Hadbbar->Px()*Hadbbar->Py();
234 double BOOST_PXZ = Hadp->Px()*Hadp->Pz()+Hadq->Px()*Hadq->Pz()+Hadb->Px()*Hadb->Pz()+
235 Hadj->Px()*Hadj->Pz()+Hadk->Px()*Hadk->Pz()+Hadbbar->Px()*Hadbbar->Pz();
236 double BOOST_PYZ = Hadp->Py()*Hadp->Pz()+Hadq->Py()*Hadq->Pz()+Hadb->Py()*Hadb->Pz()+
237 Hadj->Py()*Hadj->Pz()+Hadk->Py()*Hadk->Pz()+Hadbbar->Py()*Hadbbar->Pz();
239 TMatrixDSym BOOST_Matrix(3);
241 BOOST_Matrix(0,0) = BOOST_PX2/BOOST_P2; BOOST_Matrix(0,1) = BOOST_PXY/BOOST_P2; BOOST_Matrix(0,2) = BOOST_PXZ/BOOST_P2;
242 BOOST_Matrix(1,0) = BOOST_PXY/BOOST_P2; BOOST_Matrix(1,1) = BOOST_PY2/BOOST_P2; BOOST_Matrix(1,2) = BOOST_PYZ/BOOST_P2;
243 BOOST_Matrix(2,0) = BOOST_PXZ/BOOST_P2; BOOST_Matrix(2,1) = BOOST_PYZ/BOOST_P2; BOOST_Matrix(2,2) = BOOST_PZ2/BOOST_P2;
245 TMatrixDSymEigen BOOST_pTensor(BOOST_Matrix);
247 std::vector<double> BOOST_EigValues;
248 BOOST_EigValues.clear();
249 for(
int i=0;
i<3;
i++){
250 BOOST_EigValues.push_back(BOOST_pTensor.GetEigenValues()[
i]);
255 double BOOST_Sphericity = 1.5*(BOOST_EigValues[1]+BOOST_EigValues[2]);
256 double BOOST_Aplanarity = 1.5*BOOST_EigValues[2];
258 double Obs14 = (
isnan(BOOST_Sphericity) ? -1 : BOOST_Sphericity );
261 double Obs15 = (
isnan(BOOST_Aplanarity) ? -1 : BOOST_Aplanarity );
267 for(
unsigned int i=0;
i<6;
i++){
268 H += topJets[
i].energy();
270 double Obs16 = ( H != 0 ? HT/H : -1 );
275 double Obs17 = ( BjetsBdiscSum != 0 && Ljets1BdiscSum != 0 ? 0.707*(BjetsBdiscSum-Ljets1BdiscSum) : -1 );
277 double Obs18 = ( BjetsBdiscSum != 0 && Ljets2BdiscSum != 0 ? 0.707*(BjetsBdiscSum-Ljets2BdiscSum) : -1 );
281 double Obs19 = ( HT != 0 ? EtSum/HT : -1 );
string MT
|_ _( _ ) | _ \ | _ \ __ _(_)_ __ ___ | | / _ \/\ |_) | | |_) / _` | | '__/ __| | || (_> < __/ | __/...
Sin< T >::type sin(const T &t)
pat::Jet getHadbbar() const
void operator()(TtHadEvtSolution &)
CompareBdisc BdiscComparator
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
void setLRSignalEvtObservables(std::vector< std::pair< unsigned int, double > > varval)
Cos< T >::type cos(const T &t)
TtHadLRSignalSelObservables()
CompareDouble dComparator
std::vector< std::pair< unsigned int, double > > evtselectVarVal
~TtHadLRSignalSelObservables()
DecomposeProduct< arg, typename Div::arg > D
Power< A, B >::type pow(const A &a, const B &b)