GENFIT  Rev:NoNumberAvailable
GblFitterInfo.h
Go to the documentation of this file.
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 
44 #ifndef __CINT__
45 #include <boost/scoped_ptr.hpp>
46 #endif
47 
48 
49 namespace genfit {
50 
51 
55  class GblFitterInfo : public AbsFitterInfo {
56 
57  public:
58 
62  GblFitterInfo();
63 
69  GblFitterInfo(const TrackPoint* trackPoint, const AbsTrackRep* rep);
70 
78  GblFitterInfo(const TrackPoint* trackPoint, const AbsTrackRep* rep, StateOnPlane& referenceState);
79 
87  void reset(unsigned int measurementDim = 2, unsigned int repDim = 5);
88 
102  void setReferenceState(StateOnPlane& referenceState);
110  void setJacobian(TMatrixD jacobian);
111 
120  TMatrixDSym getCovariance(double variance, TVector3 trackDirection, SharedPlanePtr measurementPlane) const;
121 
133 
144 
159  const MeasuredStateOnPlane& getFittedState(bool afterKink = true) const;
160 
175  MeasurementOnPlane getResidual(unsigned int = 0, bool = false, bool onlyMeasurementErrors = true) const;
176 
183  MeasurementOnPlane getKink() const;
184 
191  TVectorD getKinks() const;
192 
200 
209  void updateMeasurementAndPlane(const StateOnPlane & sop);
210 
217 
226  void recalculateJacobian(GblFitterInfo* prevFitterInfo);
227 
228  virtual ~GblFitterInfo() {;}
229  virtual GblFitterInfo* clone() const;
231  bool hasReferenceState() const {return (refPrediction_(0) != 0.);}
232  bool hasForwardPrediction() const {return hasReferenceState();}
233  bool hasBackwardPrediction() const {return hasReferenceState();}
234  bool hasForwardUpdate() const {return hasForwardPrediction();}
235  bool hasBackwardUpdate() const {return hasBackwardPrediction();}
236  bool hasUpdate(int direction) const {if (direction < 0) return hasBackwardPrediction(); return hasForwardPrediction();}
238 
239  void deleteForwardInfo() {;}
244  }
245  void deleteReferenceInfo() {;} // Empty because we really do not want to delete reference without a new one
246  void deleteMeasurementInfo() {;} // We do not keep the measurements
247  virtual void Print(const Option_t* = "") const;
248  virtual bool checkConsistency(const genfit::PruneFlags* = NULL) const;
249 
250  private:
251  TMatrixD jacobian_;
252  TVectorD measResiduals_;
254  TVectorD kinkResiduals_;
260  TMatrixDSym bwdCov_;
261  TMatrixDSym fwdCov_;
262  TVectorD fwdPrediction_;
263  TVectorD bwdPrediction_;
264  TVectorD refPrediction_;
265 
266  TVectorD measurement_;
267  TMatrixDSym measCov_;
268  TMatrixD hMatrix_;
269 
270  #ifndef __CINT__
271  mutable boost::scoped_ptr<MeasuredStateOnPlane> fittedStateBwd_;
272  mutable boost::scoped_ptr<MeasuredStateOnPlane> fittedStateFwd_;
273  #else
276  #endif
277 
278  public:
279 
280  ClassDef(GblFitterInfo, 1)
281 
282  };
283 
284 } /* End of namespace genfit */
287 #endif // genfit_GblFitterInfo_h
genfit::GblFitterInfo::clone
virtual GblFitterInfo * clone() const
Deep copy ctor for polymorphic class.
Definition: GblFitterInfo.cc:480
genfit::GblFitterInfo
Collects information needed and produced by a GblFitter/GBL and is specific to one AbsTrackRep of the...
Definition: GblFitterInfo.h:55
genfit::GblFitterInfo::bwdPrediction_
TVectorD bwdPrediction_
Definition: GblFitterInfo.h:263
genfit::SharedPlanePtr
boost::shared_ptr< genfit::DetPlane > SharedPlanePtr
Shared Pointer to a DetPlane.
Definition: SharedPlanePtr.h:43
genfit::AbsFitterInfo::sharedPlane_
SharedPlanePtr sharedPlane_
No ownership.
Definition: AbsFitterInfo.h:94
genfit::GblFitterInfo::deleteBackwardInfo
void deleteBackwardInfo()
Definition: GblFitterInfo.h:240
genfit::GblFitterInfo::recalculateJacobian
void recalculateJacobian(GblFitterInfo *prevFitterInfo)
Re-extrapolates between prevFitterInfo and this point using forward state to update the Jacobian (if ...
Definition: GblFitterInfo.cc:345
genfit::GblFitterInfo::hasBackwardPrediction
bool hasBackwardPrediction() const
Definition: GblFitterInfo.h:233
genfit::GblFitterInfo::fittedStateFwd_
boost::scoped_ptr< MeasuredStateOnPlane > fittedStateFwd_
cache
Definition: GblFitterInfo.h:272
genfit::GblFitterInfo::hasForwardUpdate
bool hasForwardUpdate() const
Definition: GblFitterInfo.h:234
genfit::GblFitterInfo::updateFitResults
void updateFitResults(gbl::GblTrajectory &traj)
Update fitter info from GBL fit results.
Definition: GblFitterInfo.cc:245
genfit::GblFitterInfo::getKink
MeasurementOnPlane getKink() const
Get kink (residual) with diagonalized covariance (2D) Covariance may be zero if not yet fitted or no ...
Definition: GblFitterInfo.cc:451
genfit::MeasuredStateOnPlane
StateOnPlane with additional covariance matrix.
Definition: MeasuredStateOnPlane.h:38
ICalibrationParametersDerivatives.h
genfit::GblFitterInfo::getResidual
MeasurementOnPlane getResidual(unsigned int=0, bool=false, bool onlyMeasurementErrors=true) const
Get the residual.
Definition: GblFitterInfo.cc:414
genfit::GblFitterInfo::deleteMeasurementInfo
void deleteMeasurementInfo()
Definition: GblFitterInfo.h:246
genfit::GblFitterInfo::refPrediction_
TVectorD refPrediction_
Definition: GblFitterInfo.h:264
genfit
Defines for I/O streams used for error and debug printing.
Definition: AbsFinitePlane.cc:22
genfit::GblFitterInfo::kinkDownWeights_
TVectorD kinkDownWeights_
Definition: GblFitterInfo.h:257
genfit::GblFitterInfo::getKinks
TVectorD getKinks() const
Get kink (residual) (2D) = 0 - ( (+)pred - (-)pred )
Definition: GblFitterInfo.cc:460
TrackPoint.h
GblPoint.h
AbsFitterInfo.h
genfit::GblFitterInfo::bwdCov_
TMatrixDSym bwdCov_
Definition: GblFitterInfo.h:260
ThinScatterer.h
genfit::GblFitterInfo::~GblFitterInfo
virtual ~GblFitterInfo()
Definition: GblFitterInfo.h:228
genfit::AbsFitterInfo::rep_
const AbsTrackRep * rep_
No ownership.
Definition: AbsFitterInfo.h:92
genfit::GblFitterInfo::fwdStateCorrection_
TVectorD fwdStateCorrection_
Definition: GblFitterInfo.h:259
genfit::GblFitterInfo::kinkResidualErrors_
TVectorD kinkResidualErrors_
Definition: GblFitterInfo.h:255
genfit::AbsTrackRep
Abstract base class for a track representation.
Definition: AbsTrackRep.h:66
genfit::GblFitterInfo::setJacobian
void setJacobian(TMatrixD jacobian)
Set the Jacobian for further GblPoint construction.
Definition: GblFitterInfo.cc:91
gbl::GblPoint
Point on trajectory.
Definition: GblPoint.h:48
genfit::GblFitterInfo::getReferenceState
StateOnPlane getReferenceState() const
Returns (copy of) the stored reference 5D state at current plane with internal rep.
Definition: GblFitterInfo.h:216
StateOnPlane.h
genfit::GblFitterInfo::Print
virtual void Print(const Option_t *="") const
Definition: GblFitterInfo.cc:510
genfit::GblFitterInfo::hMatrix_
TMatrixD hMatrix_
Definition: GblFitterInfo.h:268
genfit::GblFitterInfo::checkConsistency
virtual bool checkConsistency(const genfit::PruneFlags *=NULL) const
Definition: GblFitterInfo.cc:475
genfit::GblFitterInfo::fwdCov_
TMatrixDSym fwdCov_
Definition: GblFitterInfo.h:261
genfit::GblFitterInfo::hasReferenceState
bool hasReferenceState() const
Definition: GblFitterInfo.h:231
genfit::TrackPoint
Object containing AbsMeasurement and AbsFitterInfo objects.
Definition: TrackPoint.h:50
genfit::AbsFitterInfo
This class collects all information needed and produced by a specific AbsFitter and is specific to on...
Definition: AbsFitterInfo.h:42
genfit::GblFitterInfo::measDownWeights_
TVectorD measDownWeights_
Definition: GblFitterInfo.h:256
genfit::StateOnPlane
A state with arbitrary dimension defined in a DetPlane.
Definition: StateOnPlane.h:45
genfit::TrackPoint::hasRawMeasurements
bool hasRawMeasurements() const
Definition: TrackPoint.h:96
GblFitter.h
genfit::GblFitterInfo::GblFitterInfo
GblFitterInfo()
Constructor for ROOT I/O.
Definition: GblFitterInfo.cc:10
MeasurementOnPlane.h
genfit::GblFitterInfo::updateMeasurementAndPlane
void updateMeasurementAndPlane(const StateOnPlane &sop)
SHOULD BE USED ONLY INTERNALY! Update the plane from measurement constructed with state or take plane...
Definition: GblFitterInfo.cc:194
genfit::GblFitterInfo::fwdPrediction_
TVectorD fwdPrediction_
Definition: GblFitterInfo.h:262
genfit::GblFitterInfo::measCov_
TMatrixDSym measCov_
Definition: GblFitterInfo.h:267
genfit::GblFitterInfo::measResidualErrors_
TVectorD measResidualErrors_
Definition: GblFitterInfo.h:253
genfit::GblFitterInfo::measurement_
TVectorD measurement_
Definition: GblFitterInfo.h:266
genfit::GblFitterInfo::deleteForwardInfo
void deleteForwardInfo()
Definition: GblFitterInfo.h:239
genfit::AbsFitterInfo::trackPoint_
const TrackPoint * trackPoint_
Definition: AbsFitterInfo.h:88
genfit::MeasurementOnPlane
Measured coordinates on a plane.
Definition: MeasurementOnPlane.h:45
genfit::GblFitterInfo::bwdStateCorrection_
TVectorD bwdStateCorrection_
Definition: GblFitterInfo.h:258
genfit::GblFitterInfo::constructGblPoint
gbl::GblPoint constructGblPoint()
Collect all data and create a GblPoint.
Definition: GblFitterInfo.cc:111
AbsHMatrix.h
genfit::GblFitterInfo::getCovariance
TMatrixDSym getCovariance(double variance, TVector3 trackDirection, SharedPlanePtr measurementPlane) const
Get scattering covariance projected into (measurement) plane.
Definition: GblFitterInfo.cc:96
genfit::GblFitterInfo::hasForwardPrediction
bool hasForwardPrediction() const
Definition: GblFitterInfo.h:232
Track.h
genfit::GblFitterInfo::jacobian_
TMatrixD jacobian_
Definition: GblFitterInfo.h:251
genfit::GblFitterInfo::getFittedState
const MeasuredStateOnPlane & getFittedState(bool afterKink=true) const
Get the prediction at this point Always biased in GBL (global fit) There are 2 states,...
Definition: GblFitterInfo.cc:397
genfit::GblFitterInfo::measResiduals_
TVectorD measResiduals_
Definition: GblFitterInfo.h:252
MeasuredStateOnPlane.h
genfit::GblFitterInfo::hasMeasurements
bool hasMeasurements() const
Definition: GblFitterInfo.h:230
genfit::GblFitterInfo::getMeasurement
MeasurementOnPlane getMeasurement() const
Get the measurement on plane from stored measurement data (from last construction/update)
Definition: GblFitterInfo.cc:471
gbl::GblTrajectory
GBL trajectory.
Definition: GblTrajectory.h:26
genfit::GblFitterInfo::hasBackwardUpdate
bool hasBackwardUpdate() const
Definition: GblFitterInfo.h:235
GblTrajectory.h
genfit::GblFitterInfo::hasPredictionsAndUpdates
bool hasPredictionsAndUpdates() const
Definition: GblFitterInfo.h:237
genfit::GblFitterInfo::setReferenceState
void setReferenceState(StateOnPlane &referenceState)
Set the prediction and plane (from measurement if any) You should use the user constructor instead.
Definition: GblFitterInfo.cc:78
genfit::GblFitterInfo::fittedStateBwd_
boost::scoped_ptr< MeasuredStateOnPlane > fittedStateBwd_
Definition: GblFitterInfo.h:271
genfit::GblFitterInfo::reset
void reset(unsigned int measurementDim=2, unsigned int repDim=5)
(Initial) reset of fitter info
Definition: GblFitterInfo.cc:41
genfit::GblFitterInfo::deletePredictions
void deletePredictions()
Definition: GblFitterInfo.h:241
genfit::GblFitterInfo::deleteReferenceInfo
void deleteReferenceInfo()
Definition: GblFitterInfo.h:245
genfit::GblFitterInfo::hasUpdate
bool hasUpdate(int direction) const
Definition: GblFitterInfo.h:236
genfit::PruneFlags
Info which information has been pruned from the Track.
Definition: FitStatus.h:47
genfit::GblFitterInfo::kinkResiduals_
TVectorD kinkResiduals_
Definition: GblFitterInfo.h:254