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);
27 TLorentzVector& nu_minus,
28 const TLorentzVector& A1,
31 TLorentzVector& nu_minus,
32 const TLorentzVector& A1,
35 const TLorentzVector& A1,
36 TLorentzVector& Tau_plus,
37 TLorentzVector& Tau_minus,
38 TLorentzVector& nu_plus,
39 TLorentzVector& nu_minus,
41 bool rotateback =
true);
static void analyticESolver(TLorentzVector &nu_plus, TLorentzVector &nu_minus, const TLorentzVector &A1, bool &isReal)
const edm::EventSetup & c
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)