EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GblFitterInfo.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file GblFitterInfo.h
1 /* Copyright 2008-2010, Technische Universitaet Muenchen,
2  * Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch
3  *
4  * This file is part of GENFIT.
5  *
6  * GENFIT is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Lesser General Public License as published
8  * by the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * GENFIT is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
18  */
23 #ifndef genfit_GblFitterInfo_h
24 #define genfit_GblFitterInfo_h
25 
26 #include "AbsFitterInfo.h"
27 #include "MeasuredStateOnPlane.h"
28 #include "MeasurementOnPlane.h"
29 #include "StateOnPlane.h"
30 #include "TrackPoint.h"
31 #include "ThinScatterer.h"
32 #include "StateOnPlane.h"
33 #include "Track.h"
35 #include "GblPoint.h"
36 #include "GblTrajectory.h"
37 #include "GblFitter.h"
38 #include "TMatrixD.h"
39 #include "TMatrixDSym.h"
40 #include "AbsHMatrix.h"
41 
42 #include <vector>
43 #include <memory>
44 
45 
46 namespace genfit {
47 
48 
52  class GblFitterInfo : public AbsFitterInfo {
53 
54  public:
55 
59  GblFitterInfo();
60 
66  GblFitterInfo(const TrackPoint* trackPoint, const AbsTrackRep* rep);
67 
75  GblFitterInfo(const TrackPoint* trackPoint, const AbsTrackRep* rep, StateOnPlane& referenceState);
76 
84  void reset(unsigned int measurementDim = 2, unsigned int repDim = 5);
85 
99  void setReferenceState(StateOnPlane& referenceState);
107  void setJacobian(TMatrixD jacobian);
108 
117  TMatrixDSym getCovariance(double variance, TVector3 trackDirection, SharedPlanePtr measurementPlane) const;
118 
130 
141 
156  const MeasuredStateOnPlane& getFittedState(bool afterKink = true) const override;
157 
172  MeasurementOnPlane getResidual(unsigned int = 0, bool = false, bool onlyMeasurementErrors = true) const override;
173 
180  MeasurementOnPlane getKink() const;
181 
188  TVectorD getKinks() const;
189 
197 
206  void updateMeasurementAndPlane(const StateOnPlane & sop);
207 
214 
223  void recalculateJacobian(GblFitterInfo* prevFitterInfo);
224 
225  virtual ~GblFitterInfo() {;}
226  virtual GblFitterInfo* clone() const override;
227  bool hasMeasurements() const override {return trackPoint_->hasRawMeasurements();}
228  bool hasReferenceState() const override {return (refPrediction_(0) != 0.);}
229  bool hasForwardPrediction() const override {return hasReferenceState();}
230  bool hasBackwardPrediction() const override {return hasReferenceState();}
231  bool hasForwardUpdate() const override {return hasForwardPrediction();}
232  bool hasBackwardUpdate() const override {return hasBackwardPrediction();}
233  bool hasUpdate(int direction) const override {if (direction < 0) return hasBackwardPrediction(); return hasForwardPrediction();}
235 
236  void deleteForwardInfo() override {;}
237  void deleteBackwardInfo() override {;}
241  }
242  void deleteReferenceInfo() override {;} // Empty because we really do not want to delete reference without a new one
243  void deleteMeasurementInfo() override {;} // We do not keep the measurements
244  virtual void Print(const Option_t* = "") const override;
245  virtual bool checkConsistency(const genfit::PruneFlags* = nullptr) const override;
246 
247  private:
248  TMatrixD jacobian_;
249  TVectorD measResiduals_;
251  TVectorD kinkResiduals_;
257  TMatrixDSym bwdCov_;
258  TMatrixDSym fwdCov_;
259  TVectorD fwdPrediction_;
260  TVectorD bwdPrediction_;
261  TVectorD refPrediction_;
262 
263  TVectorD measurement_;
264  TMatrixDSym measCov_;
265  TMatrixD hMatrix_;
266 
267  mutable std::unique_ptr<MeasuredStateOnPlane> fittedStateBwd_;
268  mutable std::unique_ptr<MeasuredStateOnPlane> fittedStateFwd_;
269 
270  public:
271 
272  ClassDefOverride(GblFitterInfo, 1)
273 
274  };
275 
276 } /* End of namespace genfit */
279 #endif // genfit_GblFitterInfo_h