8 #include <tracking/trackFitting/fitter/base/TrackFitter.h>
10 #include <tracking/dataobjects/RecoTrack.h>
12 #include <genfit/AbsTrackRep.h>
13 #include <genfit/FitStatus.h>
14 #include <genfit/AbsFitter.h>
15 #include <genfit/DAF.h>
16 #include <genfit/KalmanFitterInfo.h>
26 int currentPdgCode = particleType.
getPDGCode();
28 const auto& pdgParticleCharge = particleType.
getParticlePDG()->Charge();
32 B2ASSERT(
"Charge of candidate and PDG particle don't match. (Code assumes |q| = 1).",
33 fabs(pdgParticleCharge) == fabs(recoTrackCharge * 3.0));
39 if (std::signbit(pdgParticleCharge) != std::signbit(recoTrackCharge))
42 return currentPdgCode;
60 return fit(recoTrack, trackRepresentation);
68 return fit(recoTrack, trackRepresentation);
79 B2WARNING(e.getExcString());
91 if (not kalmanFitterInfo) {
92 recoHitInformation->setFlag(RecoHitInformation::RecoHitFlag::c_dismissedByFit);
94 std::vector<double> weights = kalmanFitterInfo->
getWeights();
95 for (
const double weight : weights) {
97 recoHitInformation->setFlag(RecoHitInformation::RecoHitFlag::c_dismissedByFit);
109 B2ASSERT(
"No fitter was loaded! Have you reset the fitter to an invalid one?",
m_fitter);
114 B2WARNING(
"No track points (measurements) were added to this reco track. Have you used an invalid measurement adder?");
118 const std::vector<genfit::AbsTrackRep*>& trackRepresentations = recoTrack.
getRepresentations();
119 if (std::find(trackRepresentations.begin(), trackRepresentations.end(), trackRepresentation) == trackRepresentations.end()) {
120 B2FATAL(
"The TrackRepresentation provided is not part of the Reco Track.");
125 B2DEBUG(100,
"Hit content did not change, track representation is already present and you used only default parameters." <<
126 "I will not fit the track again. If you still want to do so, set the dirty flag of the track.");
130 const auto previousSetting = gErrorIgnoreLevel;
132 auto fitWithoutCheckResult =
fitWithoutCheck(recoTrack, *trackRepresentation);
133 gErrorIgnoreLevel = previousSetting;
134 return fitWithoutCheckResult;
140 B2FATAL(
"DAF parameters are not available.");
Provides a type-safe way to pass members of the chargedStableSet set.
int getPDGCode() const
PDG code.
const TParticlePDG * getParticlePDG() const
Accessor for ROOT TParticlePDG object.
static const ChargedStable pion
charged pion particle
bool addMeasurements(RecoTrack &recoTrack) const
After you have filled the internal storage with measurement creators (either by providing your own or...
static genfit::Track & getGenfitTrack(RecoTrack &recoTrack)
Give access to the RecoTrack's genfit::Track.
static genfit::AbsTrackRep * createOrReturnRKTrackRep(RecoTrack &recoTrack, int PDGcode)
Checks if a TrackRap for the PDG id of the RecoTrack (and its charge conjugate) does already exit and...
This is the Reconstruction Event-Data Model Track.
const genfit::FitStatus * getTrackFitStatus(const genfit::AbsTrackRep *representation=nullptr) const
Return the track fit status for the given representation or for the cardinal one. You are not allowed...
bool wasFitSuccessful(const genfit::AbsTrackRep *representation=nullptr) const
Returns true if the last fit with the given representation was successful.
void setDirtyFlag(const bool &dirtyFlag=true)
Set to true, if you want to rebuild the measurements and do the fit independent on changes of the hit...
const std::vector< genfit::AbsTrackRep * > & getRepresentations() const
Return a list of track representations. You are not allowed to modify or delete them!
bool hasTrackFitStatus(const genfit::AbsTrackRep *representation=nullptr) const
Check, if there is a fit status for the given representation or for the cardinal one.
const genfit::TrackPoint * getCreatedTrackPoint(const RecoHitInformation *recoHitInformation) const
Get a pointer to the TrackPoint that was created from this hit.
std::vector< RecoHitInformation * > getRecoHitInformations(bool getSorted=false) const
Return a list of all RecoHitInformations associated with the RecoTrack.
genfit::AbsTrackRep * getCardinalRepresentation() const
Get a pointer to the cardinal track representation. You are not allowed to modify or delete it!
bool getDirtyFlag() const
This returns true, if a hit was added after the last fit and measurement creation and a refit should ...
void deleteFittedInformationForRepresentation(const genfit::AbsTrackRep *rep)
Delete all fitted information for the given representations.
short int getChargeSeed() const
Return the charge seed stored in the reco track. ATTENTION: This is not the fitted charge.
DBObjPtr< DAFparameters > m_DAFparameters
DAF parameters Database OjbPtr.
static int createCorrectPDGCodeForChargedStable(const Const::ChargedStable &particleType, const RecoTrack &recoTrack)
Helper function to multiply the PDG code of a charged stable with the charge of the reco track (if ne...
static constexpr double s_defaultProbCut
Default probCut for the default DAF fitter.
bool fit(RecoTrack &recoTrack, genfit::AbsTrackRep *trackRepresentation) const
Fit a reco track with a given non-default track representation.
static constexpr double s_defaultDeltaPValue
Default deltaPValue for the default DAF fitter.
void resetFitter(const std::shared_ptr< genfit::AbsFitter > &fitter)
Set the internal storage of the fitter to a provided one, if you want to use non-default settings.
MeasurementAdder m_measurementAdder
The measurement adder algorithm class.
void resetFitterToDefaultSettings()
Use the default settings of the fitter to fit the reco tracks.
Int_t m_gErrorIgnoreLevel
Control the output level of the ROOT functions used by the GenFit fitter. Default is increased from k...
static constexpr unsigned int s_defaultMaxFailedHits
Default maxFailedHits for the default DAF fitter.
std::shared_ptr< genfit::AbsFitter > m_fitter
The internal storage of the used fitting algorithms.
bool m_skipDirtyCheck
Flag to skip the dirty flag check which is needed when using non-default fitters.
bool fitWithoutCheck(RecoTrack &recoTrack, const genfit::AbsTrackRep &trackRepresentation) const
Helper function to do the fit.
Abstract base class for a track representation.
Determinstic Annealing Filter (DAF) implementation.
Exception class for error handling in GENFIT (provides storage for diagnostic information)
bool isFitted() const
Has the track been fitted?
Collects information needed and produced by a AbsKalmanFitter implementations and is specific to one ...
std::vector< double > getWeights() const
Get weights of measurements.
Object containing AbsMeasurement and AbsFitterInfo objects.
KalmanFitterInfo * getKalmanFitterInfo(const AbsTrackRep *rep=nullptr) const
Helper to avoid casting.
Abstract base class for different kinds of events.