PandaRoot
AbsHMatrix.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 /* Copyright 2008-2010, Technische Universitaet Muenchen,
14  Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch
15 
16  This file is part of GENFIT.
17 
18  GENFIT is free software: you can redistribute it and/or modify
19  it under the terms of the GNU Lesser General Public License as published
20  by the Free Software Foundation, either version 3 of the License, or
21  (at your option) any later version.
22 
23  GENFIT is distributed in the hope that it will be useful,
24  but WITHOUT ANY WARRANTY; without even the implied warranty of
25  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26  GNU Lesser General Public License for more details.
27 
28  You should have received a copy of the GNU Lesser General Public License
29  along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
30 */
35 #ifndef genfit_AbsHMatrix_h
36 #define genfit_AbsHMatrix_h
37 
38 #include <TObject.h>
39 #include <TMatrixDSym.h>
40 #include <TVectorD.h>
41 
42 namespace genfit {
43 
48 class AbsHMatrix : public TObject {
49 
50  public:
51  AbsHMatrix() { ; }
52 
53  virtual ~AbsHMatrix() { ; }
54 
56  virtual const TMatrixD &getMatrix() const = 0;
57 
59  virtual TVectorD Hv(const TVectorD &v) const { return getMatrix() * v; }
60 
62  virtual TMatrixD MHt(const TMatrixDSym &M) const { return TMatrixD(M, TMatrixD::kMultTranspose, getMatrix()); }
63  virtual TMatrixD MHt(const TMatrixD &M) const { return TMatrixD(M, TMatrixD::kMultTranspose, getMatrix()); }
64 
66  virtual void HMHt(TMatrixDSym &M) const { M.Similarity(getMatrix()); }
67 
68  virtual AbsHMatrix *clone() const = 0;
69 
70  bool operator==(const AbsHMatrix &other) const { return this->isEqual(other); }
71  bool operator!=(const AbsHMatrix &other) const { return !(this->isEqual(other)); }
72  virtual bool isEqual(const AbsHMatrix &other) const = 0;
73 
74  virtual void Print(const Option_t * = "") const { ; }
75 
76  protected:
77  // protect from calling copy c'tor or assignment operator from outside the class. Use #clone() if you want a copy!
78  AbsHMatrix(const AbsHMatrix &o) : TObject(o) { ; }
80 
81  public:
82  ClassDef(AbsHMatrix, 1)
83 };
84 
85 } /* End of namespace genfit */
88 #endif // genfit_AbsHMatrix_h
bool operator==(const AbsHMatrix &other) const
Definition: AbsHMatrix.h:70
AbsHMatrix(const AbsHMatrix &o)
Definition: AbsHMatrix.h:78
AbsHMatrix & operator=(const AbsHMatrix &)
HMatrix for projecting from AbsTrackRep parameters to measured parameters in a DetPlane.
Definition: AbsHMatrix.h:48
__m128 v
Definition: P4_F32vec4.h:15
bool operator!=(const AbsHMatrix &other) const
Definition: AbsHMatrix.h:71
virtual void Print(const Option_t *="") const
Definition: AbsHMatrix.h:74
virtual TVectorD Hv(const TVectorD &v) const
H*v.
Definition: AbsHMatrix.h:59
virtual TMatrixD MHt(const TMatrixD &M) const
Definition: AbsHMatrix.h:63
virtual const TMatrixD & getMatrix() const =0
Get the actual matrix representation.
virtual bool isEqual(const AbsHMatrix &other) const =0
virtual ~AbsHMatrix()
Definition: AbsHMatrix.h:53
virtual void HMHt(TMatrixDSym &M) const
similarity: H*M*H^t
Definition: AbsHMatrix.h:66
virtual TMatrixD MHt(const TMatrixDSym &M) const
M*H^t.
Definition: AbsHMatrix.h:62
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:64
virtual AbsHMatrix * clone() const =0
Matrix inversion tools.
Definition: AbsBField.h:40