#include <TtFullLepKinSolver.h>
Classes | |
struct | NeutrinoSolution |
Public Member Functions | |
TtDilepEvtSolution | addKinSolInfo (TtDilepEvtSolution *asol) |
NeutrinoSolution | getNuSolution (TLorentzVector LV_l, TLorentzVector LV_l_, TLorentzVector LV_b, TLorentzVector LV_b_) |
void | SetConstraints (const double xx=0, const double yy=0) |
TtFullLepKinSolver (const double, const double, const double, const std::vector< double >, const double=80.4, const double=4.8) | |
constructor with parameters to configure the top-mass scan and the neutrino spectrum | |
TtFullLepKinSolver () | |
default constructor | |
void | useWeightFromMC (bool useMC) |
~TtFullLepKinSolver () | |
destructor | |
Private Member Functions | |
int | cubic (const double *c_coeff, double *c_sol) const |
void | FindCoeff (const TLorentzVector al, const TLorentzVector l, const TLorentzVector b_al, const TLorentzVector b_l, const double mt, const double mat, const double pxboost, const double pyboost, double *q_coeff) |
int | quartic (double *q_coeff, double *q_sol) const |
double | sqr (const double x) const |
void | SWAP (double &realone, double &realtwo) const |
void | TopRec (const TLorentzVector al, const TLorentzVector l, const TLorentzVector b_al, const TLorentzVector b_l, const double sol) |
double | WeightSolfromMC () const |
double | WeightSolfromShape () const |
use the parametrized event shape to obtain the solution weight. | |
Private Attributes | |
double | C |
double | D |
TF2 * | EventShape_ |
Event shape. | |
double | F |
TLorentzVector | genLV_n |
provisional | |
TLorentzVector | genLV_n_ |
double | k16 |
double | k26 |
double | k36 |
double | k46 |
double | k51 |
double | k56 |
double | k61 |
TLorentzVector | LV_n |
TLorentzVector | LV_n_ |
TLorentzVector | LV_t |
TLorentzVector | LV_t_ |
TLorentzVector | LV_tt_t |
TLorentzVector | LV_tt_t_ |
double | m1 |
double | m2 |
double | m3 |
const double | mb |
const double | mw |
double | n1 |
double | n2 |
double | n3 |
double | pom |
double | pxmiss_ |
double | pymiss_ |
const double | topmass_begin |
const double | topmass_end |
const double | topmass_step |
bool | useMCforBest_ |
flag to swith from WeightSolfromMC() to WeightSolfromShape() |
Definition at line 25 of file TtFullLepKinSolver.h.
TtFullLepKinSolver::TtFullLepKinSolver | ( | ) |
default constructor
Definition at line 4 of file TtFullLepKinSolver.cc.
References EventShape_.
: topmass_begin(0), topmass_end(0), topmass_step(0), mw(80.4), mb(4.8), pxmiss_(0), pymiss_(0) { // That crude parametrisation has been obtained from a fit of O(1000) pythia events. // It is normalized to 1. EventShape_ = new TF2("landau2D","[0]*TMath::Landau(x,[1],[2],0)*TMath::Landau(y,[3],[4],0)",0,500,0,500); EventShape_->SetParameters(30.7137,56.2880,23.0744,59.1015,24.9145); }
TtFullLepKinSolver::TtFullLepKinSolver | ( | const double | b, |
const double | e, | ||
const double | s, | ||
const std::vector< double > | nupars, | ||
const double | mW = 80.4 , |
||
const double | mB = 4.8 |
||
) |
constructor with parameters to configure the top-mass scan and the neutrino spectrum
Definition at line 19 of file TtFullLepKinSolver.cc.
References EventShape_.
: topmass_begin(b), topmass_end(e), topmass_step(s), mw(mW), mb(mB), pxmiss_(0), pymiss_(0) { EventShape_ = new TF2("landau2D","[0]*TMath::Landau(x,[1],[2],0)*TMath::Landau(y,[3],[4],0)",0,500,0,500); EventShape_->SetParameters(nupars[0],nupars[1],nupars[2],nupars[3],nupars[4]); }
TtFullLepKinSolver::~TtFullLepKinSolver | ( | ) |
destructor
Definition at line 35 of file TtFullLepKinSolver.cc.
References EventShape_.
{ delete EventShape_; }
TtDilepEvtSolution TtFullLepKinSolver::addKinSolInfo | ( | TtDilepEvtSolution * | asol | ) |
Definition at line 40 of file TtFullLepKinSolver.cc.
References reco::LeafCandidate::energy(), FindCoeff(), genLV_n, genLV_n_, TtDilepEvtSolution::getCalJetB(), TtDilepEvtSolution::getCalJetBbar(), TtDilepEvtSolution::getElectronm(), TtDilepEvtSolution::getElectronp(), TtDilepEvtSolution::getGenN(), TtDilepEvtSolution::getGenNbar(), TtDilepEvtSolution::getMuonm(), TtDilepEvtSolution::getMuonp(), TtDilepEvtSolution::getTaum(), TtDilepEvtSolution::getTaup(), TtDilepEvtSolution::getWmDecay(), TtDilepEvtSolution::getWpDecay(), reco::LeafCandidate::px(), pxmiss_, reco::LeafCandidate::py(), pymiss_, reco::LeafCandidate::pz(), quartic(), TtDilepEvtSolution::setRecTopMass(), TtDilepEvtSolution::setRecWeightMax(), topmass_begin, topmass_end, topmass_step, TopRec(), useMCforBest_, CommonMethods::weight(), WeightSolfromMC(), and WeightSolfromShape().
Referenced by TtDilepEvtSolutionMaker::produce().
{ TtDilepEvtSolution fitsol(*asol); //antilepton and lepton TLorentzVector LV_e, LV_e_; //b and bbar quark TLorentzVector LV_b, LV_b_; bool hasMCinfo = true; if(fitsol.getGenN()) { // protect against non-dilept genevents genLV_n = TLorentzVector(fitsol.getGenN()->px(), fitsol.getGenN()->py(), fitsol.getGenN()->pz(), fitsol.getGenN()->energy()); } else hasMCinfo = false; if(fitsol.getGenNbar()) { // protect against non-dilept genevents genLV_n_ = TLorentzVector(fitsol.getGenNbar()->px(), fitsol.getGenNbar()->py(), fitsol.getGenNbar()->pz(), fitsol.getGenNbar()->energy()); } else hasMCinfo = false; // if MC is to be used to select the best top mass and is not available, // then nothing can be done. Stop here. if(useMCforBest_&&!hasMCinfo) return fitsol; // first lepton if (fitsol.getWpDecay() == "muon") { LV_e = TLorentzVector(fitsol.getMuonp().px(), fitsol.getMuonp().py(), fitsol.getMuonp().pz(), fitsol.getMuonp().energy()); } else if (fitsol.getWpDecay() == "electron") { LV_e = TLorentzVector(fitsol.getElectronp().px(), fitsol.getElectronp().py(), fitsol.getElectronp().pz(), fitsol.getElectronp().energy()); } else if (fitsol.getWpDecay() == "tau") { LV_e = TLorentzVector(fitsol.getTaup().px(), fitsol.getTaup().py(), fitsol.getTaup().pz(), fitsol.getTaup().energy()); } // second lepton if (fitsol.getWmDecay() == "muon") { LV_e_ = TLorentzVector(fitsol.getMuonm().px(), fitsol.getMuonm().py(), fitsol.getMuonm().pz(), fitsol.getMuonm().energy()); } else if (fitsol.getWmDecay() == "electron") { LV_e_ = TLorentzVector(fitsol.getElectronm().px(), fitsol.getElectronm().py(), fitsol.getElectronm().pz(), fitsol.getElectronm().energy()); } else if (fitsol.getWmDecay() == "tau") { LV_e_ = TLorentzVector(fitsol.getTaum().px(), fitsol.getTaum().py(), fitsol.getTaum().pz(), fitsol.getTaum().energy()); } // first jet LV_b = TLorentzVector(fitsol.getCalJetB().px(), fitsol.getCalJetB().py(), fitsol.getCalJetB().pz(), fitsol.getCalJetB().energy()); // second jet LV_b_ = TLorentzVector(fitsol.getCalJetBbar().px(), fitsol.getCalJetBbar().py(), fitsol.getCalJetBbar().pz(), fitsol.getCalJetBbar().energy()); //loop on top mass parameter double weightmax = -1e30; double mtmax = 0; for (double mt = topmass_begin; mt < topmass_end + 0.5*topmass_step; mt += topmass_step) { //cout << "mt = " << mt << endl; double q_coeff[5], q_sol[4]; FindCoeff(LV_e, LV_e_, LV_b, LV_b_, mt, mt, pxmiss_, pymiss_, q_coeff); int NSol = quartic(q_coeff, q_sol); //loop on all solutions for (int isol = 0; isol < NSol; isol++) { TopRec(LV_e, LV_e_, LV_b, LV_b_, q_sol[isol]); double weight = useMCforBest_ ? WeightSolfromMC() : WeightSolfromShape(); if (weight > weightmax) { weightmax =weight; mtmax = mt; } } //for (int i=0;i<5;i++) cout << " q_coeff["<<i<< "]= " << q_coeff[i]; //cout << endl; //for (int i=0;i<4;i++) cout << " q_sol["<<i<< "]= " << q_sol[i]; //cout << endl; //cout << "NSol_" << NSol << endl; } fitsol.setRecTopMass(mtmax); fitsol.setRecWeightMax(weightmax); return fitsol; }
int TtFullLepKinSolver::cubic | ( | const double * | c_coeff, |
double * | c_sol | ||
) | const [private] |
Definition at line 375 of file TtFullLepKinSolver.cc.
References funct::cos(), h, i, AlCaHLTBitMon_ParallelJobs::p, phi, Pi, lumiQueryAPI::q, sqr(), mathSSE::sqrt(), SWAP(), and w().
Referenced by quartic().
{ unsigned nreal; double w, p, q, dis, h, phi; if (coeffs[3]!=0.0) { /* cubic problem? */ w = coeffs[2]/(3*coeffs[3]); p = sqr(coeffs[1]/(3*coeffs[3])-sqr(w))*(coeffs[1]/(3*coeffs[3])-sqr(w)); q = -0.5*(2*sqr(w)*w-(coeffs[1]*w-coeffs[0])/coeffs[3]); dis = sqr(q)+p; /* discriminant */ if (dis<0.0) { /* 3 real solutions */ h = q/sqrt(-p); if (h>1.0) h = 1.0; /* confine the argument of */ if (h<-1.0) h = -1.0; /* acos to [-1;+1] */ phi = acos(h); p = 2*TMath::Power(-p, 1.0/6.0); for(unsigned i=0; i<3; i++) koreny[i] = p*cos((phi+2*i*TMath::Pi())/3.0) - w; if (koreny[1]<koreny[0]) SWAP(koreny[0], koreny[1]); /* sort results */ if (koreny[2]<koreny[1]) SWAP(koreny[1], koreny[2]); if (koreny[1]<koreny[0]) SWAP(koreny[0], koreny[1]); nreal = 3; } else { /* only one real solution */ dis = sqrt(dis); h = TMath::Power(fabs(q+dis), 1.0/3.0); p = TMath::Power(fabs(q-dis), 1.0/3.0); koreny[0] = ((q+dis>0.0)? h : -h) + ((q-dis>0.0)? p : -p) - w; nreal = 1; } /* Perform one step of a Newton iteration in order to minimize round-off errors */ for(unsigned i=0; i<nreal; i++) { h = coeffs[1] + koreny[i] * (2 * coeffs[2] + 3 * koreny[i] * coeffs[3]); if (h != 0.0) koreny[i] -= (coeffs[0] + koreny[i] * (coeffs[1] + koreny[i] * (coeffs[2] + koreny[i] * coeffs[3])))/h; } } else if (coeffs[2]!=0.0) { /* quadratic problem? */ p = 0.5*coeffs[1]/coeffs[2]; dis = sqr(p) - coeffs[0]/coeffs[2]; if (dis>=0.0) { /* two real solutions */ dis = sqrt(dis); koreny[0] = -p - dis; koreny[1] = -p + dis; nreal = 2; } else /* no real solution */ nreal = 0; } else if (coeffs[1]!=0.0) { /* linear problem? */ koreny[0] = -coeffs[0]/coeffs[1]; nreal = 1; } else /* no equation */ nreal = 0; return nreal; }
void TtFullLepKinSolver::FindCoeff | ( | const TLorentzVector | al, |
const TLorentzVector | l, | ||
const TLorentzVector | b_al, | ||
const TLorentzVector | b_l, | ||
const double | mt, | ||
const double | mat, | ||
const double | pxboost, | ||
const double | pyboost, | ||
double * | q_coeff | ||
) | [private] |
Definition at line 174 of file TtFullLepKinSolver.cc.
References C, D, F, k16, k26, k36, k46, k51, k56, k61, m1, m2, m3, mb, mw, n1, n2, n3, pom, funct::pow(), and sqr().
Referenced by addKinSolInfo(), and getNuSolution().
{ double E, apom1, apom2, apom3; double k11, k21, k31, k41, cpom1, cpom2, cpom3, l11, l21, l31, l41, l51, l61, k1, k2, k3, k4, k5,k6; double l1, l2, l3, l4, l5, l6, k15, k25, k35, k45; C = -al.Px()-b_al.Px()-l.Px()-b_l.Px() + px_miss; D = -al.Py()-b_al.Py()-l.Py()-b_l.Py() + py_miss; // right side of first two linear equations - missing pT E = (sqr(mt)-sqr(mw)-sqr(mb))/(2*b_al.E())-sqr(mw)/(2*al.E())-al.E()+al.Px()*b_al.Px()/b_al.E()+al.Py()*b_al.Py()/b_al.E()+al.Pz()*b_al.Pz()/b_al.E(); F = (sqr(mat)-sqr(mw)-sqr(mb))/(2*b_l.E())-sqr(mw)/(2*l.E())-l.E()+l.Px()*b_l.Px()/b_l.E()+l.Py()*b_l.Py()/b_l.E()+l.Pz()*b_l.Pz()/b_l.E(); m1 = al.Px()/al.E()-b_al.Px()/b_al.E(); m2 = al.Py()/al.E()-b_al.Py()/b_al.E(); m3 = al.Pz()/al.E()-b_al.Pz()/b_al.E(); n1 = l.Px()/l.E()-b_l.Px()/b_l.E(); n2 = l.Py()/l.E()-b_l.Py()/b_l.E(); n3 = l.Pz()/l.E()-b_l.Pz()/b_l.E(); pom = E-m1*C-m2*D; apom1 = sqr(al.Px())-sqr(al.E()); apom2 = sqr(al.Py())-sqr(al.E()); apom3 = sqr(al.Pz())-sqr(al.E()); k11 = 1/sqr(al.E())*(pow(mw,4)/4+sqr(C)*apom1+sqr(D)*apom2+apom3*sqr(pom)/sqr(m3)+sqr(mw)*(al.Px()*C+al.Py()*D+al.Pz()*pom/m3)+2*al.Px()*al.Py()*C*D+2*al.Px()*al.Pz()*C*pom/m3+2*al.Py()*al.Pz()*D*pom/m3); k21 = 1/sqr(al.E())*(-2*C*m3*n3*apom1+2*apom3*n3*m1*pom/m3-sqr(mw)*m3*n3*al.Px()+sqr(mw)*m1*n3*al.Pz()-2*al.Px()*al.Py()*D*m3*n3+2*al.Px()*al.Pz()*C*m1*n3-2*al.Px()*al.Pz()*n3*pom+2*al.Py()*al.Pz()*D*m1*n3); k31 = 1/sqr(al.E())*(-2*D*m3*n3*apom2+2*apom3*n3*m2*pom/m3-sqr(mw)*m3*n3*al.Py()+sqr(mw)*m2*n3*al.Pz()-2*al.Px()*al.Py()*C*m3*n3+2*al.Px()*al.Pz()*C*m2*n3-2*al.Py()*al.Pz()*n3*pom+2*al.Py()*al.Pz()*D*m2*n3); k41 = 1/sqr(al.E())*(2*apom3*m1*m2*sqr(n3)+2*al.Px()*al.Py()*sqr(m3)*sqr(n3)-2*al.Px()*al.Pz()*m2*m3*sqr(n3)-2*al.Py()*al.Pz()*m1*m3*sqr(n3)); k51 = 1/sqr(al.E())*(apom1*sqr(m3)*sqr(n3)+apom3*sqr(m1)*sqr(n3)-2*al.Px()*al.Pz()*m1*m3*sqr(n3)); k61 = 1/sqr(al.E())*(apom2*sqr(m3)*sqr(n3)+apom3*sqr(m2)*sqr(n3)-2*al.Py()*al.Pz()*m2*m3*sqr(n3)); cpom1 = sqr(l.Px())-sqr(l.E()); cpom2 = sqr(l.Py())-sqr(l.E()); cpom3 = sqr(l.Pz())-sqr(l.E()); l11 = 1/sqr(l.E())*(pow(mw,4)/4+cpom3*sqr(F)/sqr(n3)+sqr(mw)*l.Pz()*F/n3); l21 = 1/sqr(l.E())*(-2*cpom3*F*m3*n1/n3+sqr(mw)*(l.Px()*m3*n3-l.Pz()*n1*m3)+2*l.Px()*l.Pz()*F*m3); l31 = 1/sqr(l.E())*(-2*cpom3*F*m3*n2/n3+sqr(mw)*(l.Py()*m3*n3-l.Pz()*n2*m3)+2*l.Py()*l.Pz()*F*m3); l41 = 1/sqr(l.E())*(2*cpom3*n1*n2*sqr(m3)+2*l.Px()*l.Py()*sqr(m3)*sqr(n3)-2*l.Px()*l.Pz()*n2*n3*sqr(m3)-2*l.Py()*l.Pz()*n1*n3*sqr(m3)); l51 = 1/sqr(l.E())*(cpom1*sqr(m3)*sqr(n3)+cpom3*sqr(n1)*sqr(m3)-2*l.Px()*l.Pz()*n1*n3*sqr(m3)); l61 = 1/sqr(l.E())*(cpom2*sqr(m3)*sqr(n3)+cpom3*sqr(n2)*sqr(m3)-2*l.Py()*l.Pz()*n2*n3*sqr(m3)); k1 = k11*k61; k2 = k61*k21/k51; k3 = k31; k4 = k41/k51; k5 = k61/k51; k6 = 1; l1 = l11*k61; l2 = l21*k61/k51; l3 = l31; l4 = l41/k51; l5 = l51*k61/(sqr(k51)); l6 = l61/k61; k15 = k1*l5-l1*k5; k25 = k2*l5-l2*k5; k35 = k3*l5-l3*k5; k45 = k4*l5-l4*k5; k16 = k1*l6-l1*k6; k26 = k2*l6-l2*k6; k36 = k3*l6-l3*k6; k46 = k4*l6-l4*k6; k56 = k5*l6-l5*k6; koeficienty[0] = k15*sqr(k36)-k35*k36*k16-k56*sqr(k16); koeficienty[1] = 2*k15*k36*k46+k25*sqr(k36)+k35*(-k46*k16-k36*k26)-k45*k36*k16-2*k56*k26*k16; koeficienty[2] = k15*sqr(k46)+2*k25*k36*k46+k35*(-k46*k26-k36*k56)-k56*(sqr(k26)+2*k56*k16)-k45*(k46*k16+k36*k26); koeficienty[3] = k25*sqr(k46)-k35*k46*k56-k45*(k46*k26+k36*k56)-2*sqr(k56)*k26; koeficienty[4] = -k45*k46*k56-pow(k56,3); // normalization of coefficients int moc=(int(log10(fabs(koeficienty[0])))+int(log10(fabs(koeficienty[4]))))/2; koeficienty[0]=koeficienty[0]/TMath::Power(10,moc); koeficienty[1]=koeficienty[1]/TMath::Power(10,moc); koeficienty[2]=koeficienty[2]/TMath::Power(10,moc); koeficienty[3]=koeficienty[3]/TMath::Power(10,moc); koeficienty[4]=koeficienty[4]/TMath::Power(10,moc); }
TtFullLepKinSolver::NeutrinoSolution TtFullLepKinSolver::getNuSolution | ( | TLorentzVector | LV_l, |
TLorentzVector | LV_l_, | ||
TLorentzVector | LV_b, | ||
TLorentzVector | LV_b_ | ||
) |
Definition at line 138 of file TtFullLepKinSolver.cc.
References FindCoeff(), LV_n, LV_n_, TtFullLepKinSolver::NeutrinoSolution::neutrino, TtFullLepKinSolver::NeutrinoSolution::neutrinoBar, pxmiss_, pymiss_, quartic(), topmass_begin, topmass_end, topmass_step, TopRec(), CommonMethods::weight(), TtFullLepKinSolver::NeutrinoSolution::weight, and WeightSolfromShape().
Referenced by TtFullLepKinSolutionProducer::produce().
{ math::XYZTLorentzVector maxLV_n = math::XYZTLorentzVector(0,0,0,0); math::XYZTLorentzVector maxLV_n_ = math::XYZTLorentzVector(0,0,0,0); //loop on top mass parameter double weightmax = -1; for(double mt = topmass_begin; mt < topmass_end + 0.5*topmass_step; mt += topmass_step) { double q_coeff[5], q_sol[4]; FindCoeff(LV_l, LV_l_, LV_b, LV_b_, mt, mt, pxmiss_, pymiss_, q_coeff); int NSol = quartic(q_coeff, q_sol); //loop on all solutions for (int isol = 0; isol < NSol; isol++) { TopRec(LV_l, LV_l_, LV_b, LV_b_, q_sol[isol]); double weight = WeightSolfromShape(); if (weight > weightmax) { weightmax =weight; maxLV_n.SetPxPyPzE(LV_n.Px(), LV_n.Py(), LV_n.Pz(), LV_n.E()); maxLV_n_.SetPxPyPzE(LV_n_.Px(), LV_n_.Py(), LV_n_.Pz(), LV_n_.E()); } } } TtFullLepKinSolver::NeutrinoSolution nuSol; nuSol.neutrino = reco::LeafCandidate(0, maxLV_n ); nuSol.neutrinoBar = reco::LeafCandidate(0, maxLV_n_ ); nuSol.weight = weightmax; return nuSol; }
int TtFullLepKinSolver::quartic | ( | double * | q_coeff, |
double * | q_sol | ||
) | const [private] |
Definition at line 315 of file TtFullLepKinSolver.cc.
References trackerHits::c, cubic(), h, i, sqr(), mathSSE::sqrt(), lumiQTWidget::t, w(), and z.
Referenced by addKinSolInfo(), and getNuSolution().
{ double w, b0, b1, b2; double c[4]; double d0, d1, h, t, z; double *px; if (koeficienty[4]==0.0) return cubic(koeficienty, koreny); /* quartic problem? */ w = koeficienty[3]/(4*koeficienty[4]); /* offset */ b2 = -6*sqr(w) + koeficienty[2]/koeficienty[4]; /* koeficienty. of shifted polynomial */ b1 = (8*sqr(w) - 2*koeficienty[2]/koeficienty[4])*w + koeficienty[1]/koeficienty[4]; b0 = ((-3*sqr(w) + koeficienty[2]/koeficienty[4])*w - koeficienty[1]/koeficienty[4])*w + koeficienty[0]/koeficienty[4]; c[3] = 1.0; /* cubic resolvent */ c[2] = b2; c[1] = -4*b0; c[0] = sqr(b1) - 4*b0*b2; cubic(c, koreny); z = koreny[0]; //double z1=1.0,z2=2.0,z3=3.0; //TMath::RootsCubic(c,z1,z2,z3); //if (z2 !=0) z = z2; //if (z1 !=0) z = z1; /* only lowermost root needed */ int nreal = 0; px = koreny; t = sqrt(0.25*sqr(z) - b0); for(int i=-1; i<=1; i+=2) { d0 = -0.5*z + i*t; /* coeffs. of quadratic factor */ d1 = (t!=0.0)? -i*0.5*b1/t : i*sqrt(-z - b2); h = 0.25*sqr(d1) - d0; if (h>=0.0) { h = sqrt(h); nreal += 2; *px++ = -0.5*d1 - h - w; *px++ = -0.5*d1 + h - w; } } // if (nreal==4) { /* sort results */ // if (koreny[2]<koreny[0]) SWAP(koreny[0], koreny[2]); // if (koreny[3]<koreny[1]) SWAP(koreny[1], koreny[3]); // if (koreny[1]<koreny[0]) SWAP(koreny[0], koreny[1]); // if (koreny[3]<koreny[2]) SWAP(koreny[2], koreny[3]); // if (koreny[2]<koreny[1]) SWAP(koreny[1], koreny[2]); // } return nreal; }
void TtFullLepKinSolver::SetConstraints | ( | const double | xx = 0 , |
const double | yy = 0 |
||
) |
Definition at line 131 of file TtFullLepKinSolver.cc.
References pxmiss_, and pymiss_.
Referenced by TtDilepEvtSolutionMaker::produce(), and TtFullLepKinSolutionProducer::produce().
double TtFullLepKinSolver::sqr | ( | const double | x | ) | const [inline, private] |
Definition at line 78 of file TtFullLepKinSolver.h.
Referenced by cubic(), FindCoeff(), and quartic().
void TtFullLepKinSolver::SWAP | ( | double & | realone, |
double & | realtwo | ||
) | const [private] |
Definition at line 453 of file TtFullLepKinSolver.cc.
References printConversionInfo::aux.
Referenced by cubic().
void TtFullLepKinSolver::TopRec | ( | const TLorentzVector | al, |
const TLorentzVector | l, | ||
const TLorentzVector | b_al, | ||
const TLorentzVector | b_l, | ||
const double | sol | ||
) | [private] |
Definition at line 268 of file TtFullLepKinSolver.cc.
References printConversionInfo::aux, C, D, F, k16, k26, k36, k46, k51, k56, k61, LV_n, LV_n_, LV_t, LV_t_, LV_tt_t, LV_tt_t_, m1, m2, m3, n1, n2, n3, pom, and funct::pow().
Referenced by addKinSolInfo(), and getNuSolution().
{ TVector3 t_ttboost; TLorentzVector aux; double pxp, pyp, pzp, pup, pvp, pwp; pxp = sol*(m3*n3/k51); pyp = -(m3*n3/k61)*(k56*pow(sol,2) + k26*sol + k16)/(k36 + k46*sol); pzp = -1/n3*(n1*pxp + n2*pyp - F); pwp = 1/m3*(m1*pxp + m2*pyp + pom); pup = C - pxp; pvp = D - pyp; LV_n_.SetXYZM(pxp, pyp, pzp, 0.0); LV_n.SetXYZM(pup, pvp, pwp, 0.0); LV_t_ = b_l + l + LV_n_; LV_t = b_al + al + LV_n; aux = (LV_t_ + LV_t); t_ttboost = -aux.BoostVector(); LV_tt_t_ = LV_t_; LV_tt_t = LV_t; LV_tt_t_.Boost(t_ttboost); LV_tt_t.Boost(t_ttboost); }
void TtFullLepKinSolver::useWeightFromMC | ( | bool | useMC | ) | [inline] |
Definition at line 44 of file TtFullLepKinSolver.h.
References PatBasicFWLiteJetAnalyzer_Selector_cfg::useMC, and useMCforBest_.
Referenced by TtDilepEvtSolutionMaker::produce().
{ useMCforBest_ = useMC; }
double TtFullLepKinSolver::WeightSolfromMC | ( | ) | const [private] |
Definition at line 300 of file TtFullLepKinSolver.cc.
References genLV_n, genLV_n_, LV_n, LV_n_, and CommonMethods::weight().
Referenced by addKinSolInfo().
double TtFullLepKinSolver::WeightSolfromShape | ( | ) | const [private] |
use the parametrized event shape to obtain the solution weight.
Definition at line 309 of file TtFullLepKinSolver.cc.
References EventShape_, LV_n, and LV_n_.
Referenced by addKinSolInfo(), and getNuSolution().
{ return EventShape_->Eval(LV_n.E(),LV_n_.E()); }
double TtFullLepKinSolver::C [private] |
Definition at line 96 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::D [private] |
Definition at line 97 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
TF2* TtFullLepKinSolver::EventShape_ [private] |
Event shape.
Definition at line 122 of file TtFullLepKinSolver.h.
Referenced by TtFullLepKinSolver(), WeightSolfromShape(), and ~TtFullLepKinSolver().
double TtFullLepKinSolver::F [private] |
Definition at line 98 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
TLorentzVector TtFullLepKinSolver::genLV_n [private] |
provisional
Definition at line 117 of file TtFullLepKinSolver.h.
Referenced by addKinSolInfo(), and WeightSolfromMC().
TLorentzVector TtFullLepKinSolver::genLV_n_ [private] |
Definition at line 117 of file TtFullLepKinSolver.h.
Referenced by addKinSolInfo(), and WeightSolfromMC().
double TtFullLepKinSolver::k16 [private] |
Definition at line 100 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::k26 [private] |
Definition at line 101 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::k36 [private] |
Definition at line 102 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::k46 [private] |
Definition at line 103 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::k51 [private] |
Definition at line 105 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::k56 [private] |
Definition at line 104 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::k61 [private] |
Definition at line 106 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
TLorentzVector TtFullLepKinSolver::LV_n [private] |
Definition at line 115 of file TtFullLepKinSolver.h.
Referenced by getNuSolution(), TopRec(), WeightSolfromMC(), and WeightSolfromShape().
TLorentzVector TtFullLepKinSolver::LV_n_ [private] |
Definition at line 115 of file TtFullLepKinSolver.h.
Referenced by getNuSolution(), TopRec(), WeightSolfromMC(), and WeightSolfromShape().
TLorentzVector TtFullLepKinSolver::LV_t [private] |
Definition at line 115 of file TtFullLepKinSolver.h.
Referenced by TopRec().
TLorentzVector TtFullLepKinSolver::LV_t_ [private] |
Definition at line 115 of file TtFullLepKinSolver.h.
Referenced by TopRec().
TLorentzVector TtFullLepKinSolver::LV_tt_t [private] |
Definition at line 115 of file TtFullLepKinSolver.h.
Referenced by TopRec().
TLorentzVector TtFullLepKinSolver::LV_tt_t_ [private] |
Definition at line 115 of file TtFullLepKinSolver.h.
Referenced by TopRec().
double TtFullLepKinSolver::m1 [private] |
Definition at line 107 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::m2 [private] |
Definition at line 108 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::m3 [private] |
Definition at line 109 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
const double TtFullLepKinSolver::mb [private] |
Definition at line 92 of file TtFullLepKinSolver.h.
Referenced by FindCoeff().
const double TtFullLepKinSolver::mw [private] |
Definition at line 90 of file TtFullLepKinSolver.h.
Referenced by FindCoeff().
double TtFullLepKinSolver::n1 [private] |
Definition at line 110 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::n2 [private] |
Definition at line 111 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::n3 [private] |
Definition at line 112 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::pom [private] |
Definition at line 99 of file TtFullLepKinSolver.h.
Referenced by FindCoeff(), and TopRec().
double TtFullLepKinSolver::pxmiss_ [private] |
Definition at line 94 of file TtFullLepKinSolver.h.
Referenced by addKinSolInfo(), getNuSolution(), and SetConstraints().
double TtFullLepKinSolver::pymiss_ [private] |
Definition at line 94 of file TtFullLepKinSolver.h.
Referenced by addKinSolInfo(), getNuSolution(), and SetConstraints().
const double TtFullLepKinSolver::topmass_begin [private] |
Definition at line 84 of file TtFullLepKinSolver.h.
Referenced by addKinSolInfo(), and getNuSolution().
const double TtFullLepKinSolver::topmass_end [private] |
Definition at line 86 of file TtFullLepKinSolver.h.
Referenced by addKinSolInfo(), and getNuSolution().
const double TtFullLepKinSolver::topmass_step [private] |
Definition at line 88 of file TtFullLepKinSolver.h.
Referenced by addKinSolInfo(), and getNuSolution().
bool TtFullLepKinSolver::useMCforBest_ [private] |
flag to swith from WeightSolfromMC() to WeightSolfromShape()
Definition at line 120 of file TtFullLepKinSolver.h.
Referenced by addKinSolInfo(), and useWeightFromMC().