1 #ifndef RecoTauTag_ImpactParameter_MultiProngTauSolver_h
2 #define RecoTauTag_ImpactParameter_MultiProngTauSolver_h
11 #include "TLorentzVector.h"
15 namespace tauImpactParameter {
25 static void quadratic(
double& x_plus,
double& x_minus,
double a,
double b,
double c,
bool &isReal);
26 static void analyticESolver(TLorentzVector& nu_plus,TLorentzVector& nu_minus,
const TLorentzVector& A1,
bool &isReal);
27 static void numericalESolver(TLorentzVector& nu_plus,TLorentzVector& nu_minus,
const TLorentzVector& A1,
bool &isReal);
28 static void solveByRotation(
const TVector3& TauDir,
const TLorentzVector& A1, TLorentzVector& Tau_plus,TLorentzVector& Tau_minus,TLorentzVector& nu_plus,TLorentzVector& nu_minus,
bool &isReal,
bool rotateback=
true);
30 static double thetaGJMax(
const TLorentzVector& a1);
static void analyticESolver(TLorentzVector &nu_plus, TLorentzVector &nu_minus, const TLorentzVector &A1, bool &isReal)
static TVectorT< double > rotateToTauFrame(const TVectorT< double > &inpar)
Geom::Theta< T > theta() const
static bool setTauDirectionatThetaGJMax(const TLorentzVector &a1, double &theta, double &phi, double scale=1.0)
static double thetaGJMax(const TLorentzVector &a1)
static LorentzVectorParticle estimateNu(const LorentzVectorParticle &a1, const TVector3 &pv, int ambiguity, TLorentzVector &tau)
virtual ~MultiProngTauSolver()
static void solveByRotation(const TVector3 &TauDir, const TLorentzVector &A1, TLorentzVector &Tau_plus, TLorentzVector &Tau_minus, TLorentzVector &nu_plus, TLorentzVector &nu_minus, bool &isReal, bool rotateback=true)
static void numericalESolver(TLorentzVector &nu_plus, TLorentzVector &nu_minus, const TLorentzVector &A1, bool &isReal)
static void quadratic(double &x_plus, double &x_minus, double a, double b, double c, bool &isReal)