17 const char *BtagAlgo =
"trackCountingJetTags";
22 if(DEBUG)
std::cout<<
"---------- Start calculating the LR observables ----------"<<std::endl;
25 std::vector<pat::Jet> TopJets;
28 for(
unsigned int i = 0 ;
i<SelectedTopJets.size() ;
i++)
30 TopJets.push_back(SelectedTopJets[
i]);
36 TLorentzVector * Hadp =
new TLorentzVector();
37 Hadp->SetPxPyPzE(TopJets[3].px(),TopJets[3].py(),TopJets[3].pz(),TopJets[3].
energy());
39 TLorentzVector * Hadq =
new TLorentzVector();
40 Hadq->SetPxPyPzE(TopJets[2].px(),TopJets[2].py(),TopJets[2].pz(),TopJets[2].
energy());
42 TLorentzVector * Hadb =
new TLorentzVector();
43 Hadb->SetPxPyPzE(TopJets[1].px(),TopJets[1].py(),TopJets[1].pz(),TopJets[1].
energy());
45 TLorentzVector * Lepb =
new TLorentzVector();
46 Lepb->SetPxPyPzE(TopJets[0].px(),TopJets[0].py(),TopJets[0].pz(),TopJets[0].
energy());
48 TLorentzVector * Lept =
new TLorentzVector();
52 TLorentzVector *Lepn =
new TLorentzVector();
66 double Obs1 = Lept->Pt();
68 if(DEBUG)
std::cout<<
"------ LR observable 1 "<<Obs1<<
" calculated ------"<<std::endl;
74 if(DEBUG)
std::cout<<
"------ LR observable 2 "<<Obs2<<
" calculated ------"<<std::endl;
79 for(
unsigned int i=0;
i<4;
i++)
81 HT += TopJets[
i].et();
86 if(DEBUG)
std::cout<<
"------ LR observable 3 "<<Obs3<<
" calculated ------"<<std::endl;
90 double EtSum = TopJets[2].et()+TopJets[3].et();
93 if(DEBUG)
std::cout<<
"------ LR observable 4 "<<Obs4<<
" calculated ------"<<std::endl;
97 double Obs5 = EtSum/
HT;
99 if(DEBUG)
std::cout<<
"------ LR observable 5 "<<Obs5<<
" calculated ------"<<std::endl;
103 double Obs6 = (HT-EtSum)/HT;
105 if(DEBUG)
std::cout<<
"------ LR observable 6 "<<Obs6<<
" calculated ------"<<std::endl;
109 TLorentzVector TtbarSystem = (*Hadp)+(*Hadq)+(*Hadb)+(*Lepb)+(*Lept)+(*Lepn);
110 double MT = TtbarSystem.Mt();
113 if(DEBUG)
std::cout<<
"------ LR observable 7 "<<Obs7<<
" calculated ------"<<std::endl;
126 double BGap = TopJets[1].bDiscriminator(BtagAlgo) - TopJets[2].bDiscriminator(BtagAlgo);
129 double BjetsBdiscSum = TopJets[0].bDiscriminator(BtagAlgo) + TopJets[1].bDiscriminator(BtagAlgo);
130 double LjetsBdiscSum = TopJets[2].bDiscriminator(BtagAlgo) + TopJets[3].bDiscriminator(BtagAlgo);
132 Obs8 = (TopJets[2].bDiscriminator(BtagAlgo) > -10 ?
log(BGap) : -5);
133 if(DEBUG)
std::cout<<
"------ LR observable 8 "<<Obs8<<
" calculated ------"<<std::endl;
134 Obs9 = (BjetsBdiscSum*BGap);
135 if(DEBUG)
std::cout<<
"------ LR observable 9 "<<Obs9<<
" calculated ------"<<std::endl;
136 Obs10 = (BjetsBdiscSum/LjetsBdiscSum);
137 if(DEBUG)
std::cout<<
"------ LR observable 10 "<<Obs10<<
" calculated ------"<<std::endl;
139 Obs11 = 0.707*((BjetsBdiscSum+LjetsBdiscSum)/2 +10);
140 if(DEBUG)
std::cout<<
"------ LR observable 11 "<<Obs11<<
" calculated ------"<<std::endl;
153 double N=0,
D=0,C_tmp=0,
C=10000;
154 double N_NoNu=0,D_NoNu=0,C_NoNu_tmp=0,C_NoNu=10000;
159 for(
unsigned int i=0;
i<4;
i++)
161 D += fabs(TopJets[
i].
pt());
164 D += fabs(Lept->Pt());
166 D += fabs(Lepn->Pt());
172 for(
unsigned int i=0;
i<720;
i++)
180 for(
unsigned int i=0;
i<4;
i++)
182 N += fabs(TopJets[
i].px()*nx+TopJets[
i].py()*ny+TopJets[
i].pz()*nz);
185 N += fabs(Lept->Px()*nx+Lept->Py()*ny+Lept->Pz()*nz);
187 N += fabs(Lepn->Px()*nx+Lepn->Py()*ny+Lepn->Pz()*nz);
192 C_NoNu_tmp = 2*N_NoNu/D_NoNu;
194 if(C_tmp<
C)
C = C_tmp;
197 if(C_NoNu_tmp<C_NoNu) C_NoNu = C_NoNu_tmp;
201 double Obs12 = (
C!=10000 ?
C : 0);
203 if(DEBUG)
std::cout<<
"------ LR observable 12 "<<Obs12<<
" calculated ------"<<std::endl;
207 double Obs13 = ( C_NoNu != 10000 ? C_NoNu : 0);
209 if(DEBUG)
std::cout<<
"------ LR observable 13 "<<Obs13<<
" calculated ------"<<std::endl;
214 for(
unsigned int i=0;
i<4;
i++)
216 H += TopJets[
i].energy();
221 if(DEBUG)
std::cout<<
"------ LR observable 14 "<<Obs14<<
" calculated ------"<<std::endl;
231 double P2 = PX2+PY2+PZ2;
233 double PXY = Hadp->Px()*Hadp->Py()+Hadq->Px()*Hadq->Py()+Hadb->Px()*Hadb->Py()+Lepb->Px()*Lepb->Py()+Lept->Px()*Lept->Py()+Lepn->Px()*Lepn->Py();
234 double PXZ = Hadp->Px()*Hadp->Pz()+Hadq->Px()*Hadq->Pz()+Hadb->Px()*Hadb->Pz()+Lepb->Px()*Lepb->Pz()+Lept->Px()*Lept->Pz()+Lepn->Px()*Lepn->Pz();
235 double PYZ = Hadp->Py()*Hadp->Pz()+Hadq->Py()*Hadq->Pz()+Hadb->Py()*Hadb->Pz()+Lepb->Py()*Lepb->Pz()+Lept->Py()*Lept->Pz()+Lepn->Py()*Lepn->Pz();
241 TMatrixDSymEigen pTensor(
Matrix);
243 std::vector<double> EigValues;
247 EigValues.push_back(pTensor.GetEigenValues()[
i]);
250 std::sort(EigValues.begin(),EigValues.end(),
dComparator);
252 double Sphericity = 1.5*(EigValues[1]+EigValues[2]);
253 double Aplanarity = 1.5*EigValues[2];
257 if(DEBUG)
std::cout<<
"------ LR observable 15 "<<Obs15<<
" calculated ------"<<std::endl;
261 if(DEBUG)
std::cout<<
"------ LR observable 16 "<<Obs16<<
" calculated ------"<<std::endl;
266 TVector3 BoostBackToCM = -(TtbarSystem.BoostVector());
267 Hadp->Boost(BoostBackToCM);
268 Hadq->Boost(BoostBackToCM);
269 Hadb->Boost(BoostBackToCM);
270 Lepb->Boost(BoostBackToCM);
271 Lept->Boost(BoostBackToCM);
272 Lepn->Boost(BoostBackToCM);
279 double BOOST_P2 = BOOST_PX2+BOOST_PY2+BOOST_PZ2;
281 double BOOST_PXY = Hadp->Px()*Hadp->Py()+Hadq->Px()*Hadq->Py()+Hadb->Px()*Hadb->Py()+Lepb->Px()*Lepb->Py()+Lept->Px()*Lept->Py()+Lepn->Px()*Lepn->Py();
282 double BOOST_PXZ = Hadp->Px()*Hadp->Pz()+Hadq->Px()*Hadq->Pz()+Hadb->Px()*Hadb->Pz()+Lepb->Px()*Lepb->Pz()+Lept->Px()*Lept->Pz()+Lepn->Px()*Lepn->Pz();
283 double BOOST_PYZ = Hadp->Py()*Hadp->Pz()+Hadq->Py()*Hadq->Pz()+Hadb->Py()*Hadb->Pz()+Lepb->Py()*Lepb->Pz()+Lept->Py()*Lept->Pz()+Lepn->Py()*Lepn->Pz();
285 TMatrixDSym BOOST_Matrix(3);
287 BOOST_Matrix(0,0) = BOOST_PX2/BOOST_P2; BOOST_Matrix(0,1) = BOOST_PXY/BOOST_P2; BOOST_Matrix(0,2) = BOOST_PXZ/BOOST_P2;
288 BOOST_Matrix(1,0) = BOOST_PXY/BOOST_P2; BOOST_Matrix(1,1) = BOOST_PY2/BOOST_P2; BOOST_Matrix(1,2) = BOOST_PYZ/BOOST_P2;
289 BOOST_Matrix(2,0) = BOOST_PXZ/BOOST_P2; BOOST_Matrix(2,1) = BOOST_PYZ/BOOST_P2; BOOST_Matrix(2,2) = BOOST_PZ2/BOOST_P2;
291 TMatrixDSymEigen BOOST_pTensor(BOOST_Matrix);
293 std::vector<double> BOOST_EigValues;
294 BOOST_EigValues.clear();
297 BOOST_EigValues.push_back(BOOST_pTensor.GetEigenValues()[
i]);
300 std::sort(BOOST_EigValues.begin(),BOOST_EigValues.end(),
dComparator);
302 double BOOST_Sphericity = 1.5*(BOOST_EigValues[1]+BOOST_EigValues[2]);
303 double BOOST_Aplanarity = 1.5*BOOST_EigValues[2];
305 double Obs17 = (
edm::isNotFinite(BOOST_Sphericity) ? 0 : BOOST_Sphericity );
307 if(DEBUG)
std::cout<<
"------ LR observable 17 "<<Obs17<<
" calculated ------"<<std::endl;
309 double Obs18 = (
edm::isNotFinite(BOOST_Aplanarity) ? 0 : BOOST_Aplanarity );
311 if(DEBUG)
std::cout<<
"------ LR observable 18 "<<Obs18<<
" calculated ------"<<std::endl;
315 double Obs19 = (TopJets.size() > 4) ? TopJets[4].
et()/HT : 1.0;
317 if(DEBUG)
std::cout<<
"------ LR observable 19 "<<Obs19<<
" calculated ------"<<std::endl;
321 double HT_alljets = 0;
322 double H_alljets = 0;
323 for(
unsigned int i=0;
i<TopJets.size();
i++)
325 HT_alljets += TopJets[
i].et();
326 H_alljets += TopJets[
i].energy();
328 double Obs20 = HT_alljets;
330 if(DEBUG)
std::cout<<
"------ LR observable 20 "<<Obs20<<
" calculated ------"<<std::endl;
334 double HT3_alljets = 0;
335 for(
unsigned int i=2;
i<TopJets.size();
i++)
337 HT3_alljets += TopJets[
i].et();
339 double Obs21 = HT3_alljets;
341 if(DEBUG)
std::cout<<
"------ LR observable 21 "<<Obs21<<
" calculated ------"<<std::endl;
345 double ET0 = TopJets[0].et()/HT_alljets;
348 if(DEBUG)
std::cout<<
"------ LR observable 22 "<<Obs22<<
" calculated ------"<<std::endl;
352 double Obs23 = ( (H_alljets>0) ? HT_alljets/H_alljets : 0);
354 if(DEBUG)
std::cout<<
"------ LR observable 23 "<<Obs23<<
" calculated ------"<<std::endl;
358 double FW_momentum_0=0, FW_momentum_1=0, FW_momentum_2=0, FW_momentum_3=0, FW_momentum_4=0, FW_momentum_5=0, FW_momentum_6=0;
360 for(
unsigned int i=0;
i<TopJets.size();
i++)
362 for(
unsigned int j=0;j<TopJets.size();j++)
364 double ET_ij_over_ETSum2= TopJets[
i].et()*TopJets[j].et()/(
std::pow(HT_alljets,2));
365 double cosTheta_ij = (TopJets[
i].px()*TopJets[j].px()+
366 TopJets[
i].py()*TopJets[j].py()+
367 TopJets[
i].pz()*TopJets[j].pz())
368 /(TopJets[
i].
p4().R()*TopJets[j].p4().R());
369 FW_momentum_0 += ET_ij_over_ETSum2;
370 FW_momentum_1 += ET_ij_over_ETSum2 * cosTheta_ij;
371 FW_momentum_2 += ET_ij_over_ETSum2 * 0.5 * ( 3*
std::pow(cosTheta_ij,2)- 1);
372 FW_momentum_3 += ET_ij_over_ETSum2 * 0.5 * ( 5*
std::pow(cosTheta_ij,3)- 3*cosTheta_ij);
373 FW_momentum_4 += ET_ij_over_ETSum2 * 0.125 * ( 35*
std::pow(cosTheta_ij,4)- 30*
std::pow(cosTheta_ij,2)+3);
374 FW_momentum_5 += ET_ij_over_ETSum2 * 0.125 * ( 63*
std::pow(cosTheta_ij,5)- 70*
std::pow(cosTheta_ij,3)+15*cosTheta_ij);
375 FW_momentum_6 += ET_ij_over_ETSum2 * 0.0625* (231*
std::pow(cosTheta_ij,6)-315*
std::pow(cosTheta_ij,4)+105*
std::pow(cosTheta_ij,2)-5);
379 double Obs24 = FW_momentum_0;
381 if(DEBUG)
std::cout<<
"------ LR observable 24 "<<Obs24<<
" calculated ------"<<std::endl;
382 double Obs25 = FW_momentum_1;
384 if(DEBUG)
std::cout<<
"------ LR observable 25 "<<Obs25<<
" calculated ------"<<std::endl;
385 double Obs26 = FW_momentum_2;
387 if(DEBUG)
std::cout<<
"------ LR observable 26 "<<Obs26<<
" calculated ------"<<std::endl;
388 double Obs27 = FW_momentum_3;
390 if(DEBUG)
std::cout<<
"------ LR observable 27 "<<Obs27<<
" calculated ------"<<std::endl;
391 double Obs28 = FW_momentum_4;
393 if(DEBUG)
std::cout<<
"------ LR observable 28 "<<Obs28<<
" calculated ------"<<std::endl;
394 double Obs29 = FW_momentum_5;
396 if(DEBUG)
std::cout<<
"------ LR observable 29 "<<Obs29<<
" calculated ------"<<std::endl;
397 double Obs30 = FW_momentum_6;
399 if(DEBUG)
std::cout<<
"------ LR observable 30 "<<Obs30<<
" calculated ------"<<std::endl;
403 TVector3
n(0,0,0), n_tmp(0,0,0);
405 double Thrust_D = 0, Thrust_N = 0;
406 double Thrust = -1, Thrust_tmp =0;
407 double Thrust_Major = -1, Thrust_Major_tmp =0;
408 double Thrust_Minor = -1;
410 for(
unsigned int i=0;
i<TopJets.size();
i++)
412 Thrust_D += TopJets[
i].p();
415 Thrust_D += Lept->P();
420 for(
unsigned int i=0;
i<720;
i++)
422 for(
unsigned int j=0;j<360;j++)
426 n_tmp.SetZ(
cos((
PI/360)*j));
428 for(
unsigned int k=0;
k<TopJets.size();
k++)
430 Thrust_N += fabs(TopJets[
k].px()*(n_tmp.x())+TopJets[
k].py()*(n_tmp.y())+TopJets[
k].pz()*(n_tmp.z()));
432 Thrust_N += fabs(Lept->Px()*(n_tmp.x())+Lept->Py()*(n_tmp.y())+Lept->Pz()*(n_tmp.z()));
434 Thrust_tmp = Thrust_N/Thrust_D;
437 if(Thrust_tmp > Thrust)
440 n.SetXYZ(n_tmp.x(),n_tmp.y(),n_tmp.z());
446 TVector3 nT =
n.Orthogonal();
448 for(
unsigned int i=0;
i<720;
i++)
450 nT.Rotate((2*
PI/720)*
i,
n);
451 for(
unsigned int j=0;j<TopJets.size();j++)
453 Thrust_N += fabs(TopJets[j].px()*(nT.x())+TopJets[j].py()*(nT.y())+TopJets[j].pz()*(nT.z()));
455 Thrust_N += fabs(Lept->Px()*nT.x()+Lept->Py()*(nT.y())+Lept->Pz()*(nT.z()));
457 Thrust_Major_tmp = Thrust_N/Thrust_D;
460 if(Thrust_Major_tmp > Thrust_Major)
462 Thrust_Major = Thrust_Major_tmp;
468 TVector3 nMinor = nT.Cross(
n);
469 nMinor = nMinor.Unit();
471 for(
unsigned int i=0;
i<TopJets.size();
i++)
473 Thrust_N += fabs(TopJets[
i].px()*(nMinor.x())+TopJets[
i].py()*(nMinor.y())+TopJets[
i].pz()*(nMinor.z()));
475 Thrust_N += fabs(Lept->Px()*nMinor.x()+Lept->Py()*(nMinor.y())+Lept->Pz()*(nMinor.z()));
477 Thrust_Minor = Thrust_N/Thrust_D;
480 double Obs31 = Thrust;
482 if(DEBUG)
std::cout<<
"------ LR observable 31 "<<Obs31<<
" calculated ------"<<std::endl;
483 double Obs32 = Thrust_Major;
485 if(DEBUG)
std::cout<<
"------ LR observable 32 "<<Obs32<<
" calculated ------"<<std::endl;
486 double Obs33 = Thrust_Minor;
488 if(DEBUG)
std::cout<<
"------ LR observable 33 "<<Obs33<<
" calculated ------"<<std::endl;
492 double Obs34 = Thrust_Major-Thrust_Minor;
494 if(DEBUG)
std::cout<<
"------ LR observable 34 "<<Obs34<<
" calculated ------"<<std::endl;
498 TMatrixDSym Matrix_NoNu(3);
504 double P2_NoNu = PX2_NoNu+PY2_NoNu+PZ2_NoNu;
506 double PXY_NoNu = Hadp->Px()*Hadp->Py()+Hadq->Px()*Hadq->Py()+Hadb->Px()*Hadb->Py()+Lepb->Px()*Lepb->Py()+Lept->Px()*Lept->Py();
507 double PXZ_NoNu = Hadp->Px()*Hadp->Pz()+Hadq->Px()*Hadq->Pz()+Hadb->Px()*Hadb->Pz()+Lepb->Px()*Lepb->Pz()+Lept->Px()*Lept->Pz();
508 double PYZ_NoNu = Hadp->Py()*Hadp->Pz()+Hadq->Py()*Hadq->Pz()+Hadb->Py()*Hadb->Pz()+Lepb->Py()*Lepb->Pz()+Lept->Py()*Lept->Pz();
510 Matrix_NoNu(0,0) = PX2_NoNu/P2_NoNu; Matrix_NoNu(0,1) = PXY_NoNu/P2_NoNu; Matrix_NoNu(0,2) = PXZ_NoNu/P2_NoNu;
511 Matrix_NoNu(1,0) = PXY_NoNu/P2_NoNu; Matrix_NoNu(1,1) = PY2_NoNu/P2_NoNu; Matrix_NoNu(1,2) = PYZ_NoNu/P2_NoNu;
512 Matrix_NoNu(2,0) = PXZ_NoNu/P2_NoNu; Matrix_NoNu(2,1) = PYZ_NoNu/P2_NoNu; Matrix_NoNu(2,2) = PZ2_NoNu/P2_NoNu;
514 TMatrixDSymEigen pTensor_NoNu(Matrix_NoNu);
516 std::vector<double> EigValues_NoNu;
517 EigValues_NoNu.clear();
520 EigValues_NoNu.push_back(pTensor_NoNu.GetEigenValues()[
i]);
523 std::sort(EigValues_NoNu.begin(),EigValues_NoNu.end(),
dComparator);
525 double Sphericity_NoNu = 1.5*(EigValues_NoNu[1]+EigValues_NoNu[2]);
526 double Aplanarity_NoNu = 1.5*EigValues_NoNu[2];
530 if(DEBUG)
std::cout<<
"------ LR observable 35 "<<Obs35<<
" calculated ------"<<std::endl;
534 if(DEBUG)
std::cout<<
"------ LR observable 36 "<<Obs36<<
" calculated ------"<<std::endl;
538 TMatrixDSym Matrix_NoNuNoLep(3);
544 double P2_NoNuNoLep = PX2_NoNuNoLep+PY2_NoNuNoLep+PZ2_NoNuNoLep;
546 double PXY_NoNuNoLep = Hadp->Px()*Hadp->Py()+Hadq->Px()*Hadq->Py()+Hadb->Px()*Hadb->Py()+Lepb->Px()*Lepb->Py();
547 double PXZ_NoNuNoLep = Hadp->Px()*Hadp->Pz()+Hadq->Px()*Hadq->Pz()+Hadb->Px()*Hadb->Pz()+Lepb->Px()*Lepb->Pz();
548 double PYZ_NoNuNoLep = Hadp->Py()*Hadp->Pz()+Hadq->Py()*Hadq->Pz()+Hadb->Py()*Hadb->Pz()+Lepb->Py()*Lepb->Pz();
550 Matrix_NoNuNoLep(0,0) = PX2_NoNuNoLep/P2_NoNuNoLep; Matrix_NoNuNoLep(0,1) = PXY_NoNuNoLep/P2_NoNuNoLep; Matrix_NoNuNoLep(0,2) = PXZ_NoNuNoLep/P2_NoNuNoLep;
551 Matrix_NoNuNoLep(1,0) = PXY_NoNuNoLep/P2_NoNuNoLep; Matrix_NoNuNoLep(1,1) = PY2_NoNuNoLep/P2_NoNuNoLep; Matrix_NoNuNoLep(1,2) = PYZ_NoNuNoLep/P2_NoNuNoLep;
552 Matrix_NoNuNoLep(2,0) = PXZ_NoNuNoLep/P2_NoNuNoLep; Matrix_NoNuNoLep(2,1) = PYZ_NoNuNoLep/P2_NoNuNoLep; Matrix_NoNuNoLep(2,2) = PZ2_NoNuNoLep/P2_NoNuNoLep;
554 TMatrixDSymEigen pTensor_NoNuNoLep(Matrix_NoNuNoLep);
556 std::vector<double> EigValues_NoNuNoLep;
557 EigValues_NoNuNoLep.clear();
560 EigValues_NoNuNoLep.push_back(pTensor_NoNuNoLep.GetEigenValues()[
i]);
563 std::sort(EigValues_NoNuNoLep.begin(),EigValues_NoNuNoLep.end(),
dComparator);
565 double Sphericity_NoNuNoLep = 1.5*(EigValues_NoNuNoLep[1]+EigValues_NoNuNoLep[2]);
566 double Aplanarity_NoNuNoLep = 1.5*EigValues_NoNuNoLep[2];
568 double Obs37 = (
edm::isNotFinite(Sphericity_NoNuNoLep) ? 0 : Sphericity_NoNuNoLep);
570 if(DEBUG)
std::cout<<
"------ LR observable 37 "<<Obs37<<
" calculated ------"<<std::endl;
572 double Obs38 = (
edm::isNotFinite(Aplanarity_NoNuNoLep) ? 0 : Aplanarity_NoNuNoLep);
574 if(DEBUG)
std::cout<<
"------ LR observable 38 "<<Obs38<<
" calculated ------"<<std::endl;
579 if(DEBUG)
std::cout<<
"------ Observable values stored in the event ------"<<std::endl;
582 if(DEBUG)
std::cout<<
"------ Pointer to Hadp deleted ------"<<std::endl;
584 if(DEBUG)
std::cout<<
"------ Pointer to Hadq deleted ------"<<std::endl;
586 if(DEBUG)
std::cout<<
"------ Pointer to Hadb deleted ------"<<std::endl;
588 if(DEBUG)
std::cout<<
"------ Pointer to Lepb deleted ------"<<std::endl;
590 if(DEBUG)
std::cout<<
"------ Pointer to Lepn deleted ------"<<std::endl;
592 if(DEBUG)
std::cout<<
"------ Pointer to Mez deleted ------"<<std::endl;
595 if(DEBUG)
std::cout<<
"------------ LR observables calculated -----------"<<std::endl;
void SetLepton(const pat::Particle &lepton, bool isMuon=true)
Set lepton.
void setLRSignalEvtObservables(const std::vector< std::pair< unsigned int, double > > &varval)
CompareBdisc BdiscComparator
constexpr bool isNotFinite(T x)
CompareDouble dComparator
double px() const final
x coordinate of momentum vector
Sin< T >::type sin(const T &t)
std::string getDecay() const
std::vector< std::pair< unsigned int, double > > evtselectVarVal
pat::Muon getMuon() const
void SetMET(const pat::MET &MET)
Set MET.
double Calculate(int type=1)
member functions
double et() const final
transverse energy
double pz() const final
z coordinate of momentum vector
Cos< T >::type cos(const T &t)
double energy() const final
energy
pat::Electron getElectron() const
DecomposeProduct< arg, typename Div::arg > D
double py() const final
y coordinate of momentum vector
et
define resolution functions of each parameter
pat::MET getNeutrino() const
Power< A, B >::type pow(const A &a, const B &b)