CMS 3D CMS Logo

TauA1NuConstrainedFitter.h
Go to the documentation of this file.
1 #ifndef RecoTauTag_ImpactParameter_TauA1NuConstrainedFitter_h
2 #define RecoTauTag_ImpactParameter_TauA1NuConstrainedFitter_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"
14 #include <vector>
15 #include "TMatrixT.h"
16 #include "TVectorT.h"
17 #include "TMatrixTSym.h"
18 
19 namespace tauImpactParameter {
20 
22  public:
23  TauA1NuConstrainedFitter(unsigned int ambiguity,const LorentzVectorParticle& A1,const TVector3& PVertex, const TMatrixTSym<double>& VertexCov);
25 
29 
30  std::vector<LorentzVectorParticle> getRefitDaughters();
33 
34  bool fit();
35 
36  private:
37  static TVectorT<double> ComputeInitalExpPar(const TVectorT<double> &inpar);
38  static TVectorT<double> ComputeExpParToPar(const TVectorT<double> &inpar);
39  static TVectorT<double> ComputeNuLorentzVectorPar(const TVectorT<double> &inpar);
40  static TVectorT<double> ComputeA1LorentzVectorPar(const TVectorT<double> &inpar);
41  static TVectorT<double> ComputeMotherLorentzVectorPar(const TVectorT<double> &inpar);
42  static TVectorT<double> SolveAmbiguityAnalytically(const TVectorT<double> &inpar, unsigned int ambiguity);
43  static TVectorT<double> SolveAmbiguityAnalyticallywithRot(const TVectorT<double> &inpar, unsigned int ambiguity);
44  static TVectorT<double> TauRot(const TVectorT<double> &inpar);
45 
46  void UpdateExpandedPar();
47  static void CovertParToObjects(const TVectorD &v,TLorentzVector &a1,TLorentzVector &nu,double &phi,double &theta,TVector3 &TauDir);
48 
49  TVectorT<double> par_0;
50  TVectorT<double> par;
51  TMatrixTSym<double> cov_0;
52  TMatrixTSym<double> cov;
53 
54  TVectorT<double> exppar;
55  TMatrixTSym<double> expcov;
56  std::vector<LorentzVectorParticle> particles_;
57  unsigned int ambiguity_;
58 
59  static unsigned int static_amb;
60 
61 };
62 }
63 #endif
Geom::Theta< T > theta() const
static TVectorT< double > ComputeInitalExpPar(const TVectorT< double > &inpar)
static TVectorT< double > ComputeA1LorentzVectorPar(const TVectorT< double > &inpar)
static TVectorT< double > ComputeMotherLorentzVectorPar(const TVectorT< double > &inpar)
std::vector< LorentzVectorParticle > getRefitDaughters()
TauA1NuConstrainedFitter(unsigned int ambiguity, const LorentzVectorParticle &A1, const TVector3 &PVertex, const TMatrixTSym< double > &VertexCov)
static TVectorT< double > TauRot(const TVectorT< double > &inpar)
static TVectorT< double > SolveAmbiguityAnalyticallywithRot(const TVectorT< double > &inpar, unsigned int ambiguity)
std::vector< LorentzVectorParticle > particles_
static void CovertParToObjects(const TVectorD &v, TLorentzVector &a1, TLorentzVector &nu, double &phi, double &theta, TVector3 &TauDir)
static TVectorT< double > ComputeNuLorentzVectorPar(const TVectorT< double > &inpar)
static TVectorT< double > ComputeExpParToPar(const TVectorT< double > &inpar)
static TVectorT< double > SolveAmbiguityAnalytically(const TVectorT< double > &inpar, unsigned int ambiguity)