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,
24  const LorentzVectorParticle &A1,
25  const TVector3 &PVertex,
26  const TMatrixTSym<double> &VertexCov);
28 
31  enum OrignialPars { norigpar = 13 };
32 
33  std::vector<LorentzVectorParticle> getRefitDaughters();
36 
37  bool fit();
38 
39  private:
40  static TVectorT<double> ComputeInitalExpPar(const TVectorT<double> &inpar);
41  static TVectorT<double> ComputeExpParToPar(const TVectorT<double> &inpar);
42  static TVectorT<double> ComputeNuLorentzVectorPar(const TVectorT<double> &inpar);
43  static TVectorT<double> ComputeA1LorentzVectorPar(const TVectorT<double> &inpar);
44  static TVectorT<double> ComputeMotherLorentzVectorPar(const TVectorT<double> &inpar);
45  static TVectorT<double> SolveAmbiguityAnalytically(const TVectorT<double> &inpar, unsigned int ambiguity);
46  static TVectorT<double> SolveAmbiguityAnalyticallywithRot(const TVectorT<double> &inpar, unsigned int ambiguity);
47  static TVectorT<double> TauRot(const TVectorT<double> &inpar);
48 
49  void UpdateExpandedPar();
50  static void CovertParToObjects(
51  const TVectorD &v, TLorentzVector &a1, TLorentzVector &nu, double &phi, double &theta, TVector3 &TauDir);
52 
53  TVectorT<double> par_0;
54  TVectorT<double> par;
55  TMatrixTSym<double> cov_0;
56  TMatrixTSym<double> cov;
57 
58  TVectorT<double> exppar;
59  TMatrixTSym<double> expcov;
60  std::vector<LorentzVectorParticle> particles_;
61  unsigned int ambiguity_;
62  };
63 } // namespace tauImpactParameter
64 #endif
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)
Geom::Theta< T > theta() const