CMS 3D CMS Logo

MultiProngTauSolver.h
Go to the documentation of this file.
1 #ifndef RecoTauTag_ImpactParameter_MultiProngTauSolver_h
2 #define RecoTauTag_ImpactParameter_MultiProngTauSolver_h
3 
4 /* From SimpleFits Package
5  * Designed an written by
6  * author: Ian M. Nugent
7  * Humboldt Foundations
8  */
9 
10 #include "TVector3.h"
11 #include "TLorentzVector.h"
14 
15 namespace tauImpactParameter {
16 
18  public:
20 
21  // constructor and Destructor
23  virtual ~MultiProngTauSolver(){};
24 
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,
27  TLorentzVector& nu_minus,
28  const TLorentzVector& A1,
29  bool& isReal);
30  static void numericalESolver(TLorentzVector& nu_plus,
31  TLorentzVector& nu_minus,
32  const TLorentzVector& A1,
33  bool& isReal);
34  static void solveByRotation(const TVector3& TauDir,
35  const TLorentzVector& A1,
36  TLorentzVector& Tau_plus,
37  TLorentzVector& Tau_minus,
38  TLorentzVector& nu_plus,
39  TLorentzVector& nu_minus,
40  bool& isReal,
41  bool rotateback = true);
42  static bool setTauDirectionatThetaGJMax(const TLorentzVector& a1, double& theta, double& phi, double scale = 1.0);
43  static double thetaGJMax(const TLorentzVector& a1);
45  const TVector3& pv,
46  int ambiguity,
47  TLorentzVector& tau);
48  static TVectorT<double> rotateToTauFrame(const TVectorT<double>& inpar);
49  };
50 
51 } // namespace tauImpactParameter
52 #endif
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)
def pv(vc)
Definition: MetAnalyzer.py:7
double b
Definition: hdecay.h:118
double a
Definition: hdecay.h:119
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)