 |
Belle II Software
release-05-02-19
|
1 #include <tracking/dataobjects/RecoTrack.h>
2 #include <mdst/dataobjects/MCParticle.h>
4 #include <genfit/TrackCand.h>
5 #include <genfit/AbsTrackRep.h>
6 #include <genfit/KalmanFitterInfo.h>
7 #include <genfit/KalmanFitStatus.h>
8 #include <genfit/WireTrackCandHit.h>
9 #include <genfit/RKTrackRep.h>
10 #include <genfit/MplTrackRep.h>
11 #include <simulation/monopoles/MonopoleConstants.h>
15 RecoTrack::RecoTrack(
const TVector3& seedPosition,
const TVector3& seedMomentum,
const short int seedCharge,
16 const std::string& storeArrayNameOfCDCHits,
17 const std::string& storeArrayNameOfSVDHits,
18 const std::string& storeArrayNameOfPXDHits,
19 const std::string& storeArrayNameOfBKLMHits,
20 const std::string& storeArrayNameOfEKLMHits,
21 const std::string& storeArrayNameOfRecoHitInformation) :
23 m_storeArrayNameOfCDCHits(storeArrayNameOfCDCHits),
24 m_storeArrayNameOfSVDHits(storeArrayNameOfSVDHits),
25 m_storeArrayNameOfPXDHits(storeArrayNameOfPXDHits),
26 m_storeArrayNameOfBKLMHits(storeArrayNameOfBKLMHits),
27 m_storeArrayNameOfEKLMHits(storeArrayNameOfEKLMHits),
28 m_storeArrayNameOfRecoHitInformation(storeArrayNameOfRecoHitInformation)
32 TMatrixDSym covSeed(6);
36 covSeed(3, 3) = 0.01e-3;
37 covSeed(4, 4) = 0.01e-3;
38 covSeed(5, 5) = 0.04e-3;
44 std::string
const& pxdHitsStoreArrayName,
45 std::string
const& svdHitsStoreArrayName,
46 std::string
const& cdcHitsStoreArrayName,
47 std::string
const& bklmHitsStoreArrayName,
48 std::string
const& eklmHitsStoreArrayName,
49 std::string
const& recoHitInformationStoreArrayName)
52 recoHitInformations.registerInDataStore();
56 if (cdcHits.isOptional()) {
62 if (svdHits.isOptional()) {
68 if (pxdHits.isOptional()) {
74 if (bklmHits.isOptional()) {
80 if (eklmHits.isOptional()) {
87 const std::string& storeArrayNameOfRecoTracks,
88 const std::string& storeArrayNameOfCDCHits,
89 const std::string& storeArrayNameOfSVDHits,
90 const std::string& storeArrayNameOfPXDHits,
91 const std::string& storeArrayNameOfBKLMHits,
92 const std::string& storeArrayNameOfEKLMHits,
93 const std::string& storeArrayNameOfRecoHitInformation,
94 const bool recreateSortingParameters
107 const TVector3& position = trackCand.
getPosSeed();
108 const TVector3& momentum = trackCand.
getMomSeed();
109 const short int charge = trackCand.getChargeSeed();
113 cdcHits.getName(), svdHits.getName(),
115 bklmHits.getName(), eklmHits.getName(),
116 recoHitInformations.getName());
120 TMatrixDSym covSeed(6);
121 covSeed(0, 0) = 1e-3;
122 covSeed(1, 1) = 1e-3;
123 covSeed(2, 2) = 4e-3;
124 covSeed(3, 3) = 0.01e-3;
125 covSeed(4, 4) = 0.01e-3;
126 covSeed(5, 5) = 0.04e-3;
129 for (
unsigned int hitIndex = 0; hitIndex < trackCand.getNHits(); hitIndex++) {
131 const int detID = trackCandHit->getDetId();
132 const int hitID = trackCandHit->getHitId();
133 const unsigned int sortingParameter = recreateSortingParameters ? hitIndex :
static_cast<unsigned int>
134 (trackCandHit->getSortingParameter());
135 if (detID == Const::CDC) {
140 B2FATAL(
"CDC hit is not a wire hit. The RecoTrack can not handle such a case.");
142 if (wireHit->getLeftRightResolution() > 0) {
143 newRecoTrack->
addCDCHit(cdcHit, sortingParameter, RecoHitInformation::RightLeftInformation::c_right);
144 }
else if (wireHit->getLeftRightResolution() < 0) {
145 newRecoTrack->
addCDCHit(cdcHit, sortingParameter, RecoHitInformation::RightLeftInformation::c_left);
147 newRecoTrack->
addCDCHit(cdcHit, sortingParameter, RecoHitInformation::RightLeftInformation::c_undefinedRightLeftInformation);
150 }
else if (detID == Const::SVD) {
152 newRecoTrack->
addSVDHit(svdHit, sortingParameter);
153 }
else if (detID == Const::PXD) {
155 newRecoTrack->
addPXDHit(pxdHit, sortingParameter);
156 }
else if (detID == Const::BKLM) {
158 newRecoTrack->
addBKLMHit(bklmHit, sortingParameter);
159 }
else if (detID == Const::EKLM) {
161 newRecoTrack->
addEKLMHit(eklmHit, sortingParameter);
181 createdTrackCand.addHit(new genfit::WireTrackCandHit(Const::CDC, hit->getArrayIndex(), -1,
182 hitInformation.getSortingParameter(), -1));
184 createdTrackCand.addHit(new genfit::WireTrackCandHit(Const::CDC, hit->getArrayIndex(), -1,
185 hitInformation.getSortingParameter(), 1));
187 createdTrackCand.addHit(new genfit::WireTrackCandHit(Const::CDC, hit->getArrayIndex(), -1,
188 hitInformation.getSortingParameter(), 0));
193 createdTrackCand.addHit(Const::SVD, hit->getArrayIndex(), -1, hitInformation.
getSortingParameter());
197 createdTrackCand.addHit(Const::PXD, hit->getArrayIndex(), -1, hitInformation.
getSortingParameter());
201 createdTrackCand.addHit(Const::BKLM, hit->getArrayIndex(), -1, hitInformation.
getSortingParameter());
205 createdTrackCand.addHit(Const::EKLM, hit->getArrayIndex(), -1, hitInformation.
getSortingParameter());
211 const MCParticle* relatedMCParticle = getRelatedTo<MCParticle>();
212 if (relatedMCParticle) {
217 return createdTrackCand;
223 if (createdTrackPointID == -1) {
231 boost::optional<double> optionalMinimalWeight)
233 size_t hitsCopied = 0;
235 unsigned int maximalSortingParameter = 0;
242 const auto& maximalElement = std::max_element(recoHitInformations.begin(), recoHitInformations.end(), sortBySP);
243 if (maximalElement != recoHitInformations.end()) {
244 maximalSortingParameter = (*maximalElement)->getSortingParameter();
249 const auto calculateSortingParameter = [maximalSortingParameter, sortingParameterOffset](
unsigned int sortingParameters) {
250 if (maximalSortingParameter > 0) {
251 return maximalSortingParameter - sortingParameters + sortingParameterOffset;
253 return sortingParameters + sortingParameterOffset;
256 const auto testHitWeight = [recoTrack, optionalMinimalWeight](
const RecoHitInformation * recoHitInformation) {
257 if (not optionalMinimalWeight) {
260 double minimalWeight = *optionalMinimalWeight;
264 if (not kalmanFitterInfo) {
267 const std::vector<double>& weights = kalmanFitterInfo->getWeights();
268 const auto checkWeight = [minimalWeight](
const double weight) {
269 return weight >= minimalWeight;
271 return std::any_of(weights.begin(), weights.end(), checkWeight);
279 if (testHitWeight(recoHitInfo)) {
280 hitsCopied +=
addPXDHit(pxdHit, calculateSortingParameter(recoHitInfo->getSortingParameter()),
281 recoHitInfo->getFoundByTrackFinder());
288 if (testHitWeight(recoHitInfo)) {
289 hitsCopied +=
addSVDHit(svdHit, calculateSortingParameter(recoHitInfo->getSortingParameter()),
290 recoHitInfo->getFoundByTrackFinder());
297 if (testHitWeight(recoHitInfo)) {
298 hitsCopied +=
addCDCHit(cdcHit, calculateSortingParameter(recoHitInfo->getSortingParameter()),
299 recoHitInfo->getRightLeftInformation(),
300 recoHitInfo->getFoundByTrackFinder());
307 if (testHitWeight(recoHitInfo)) {
308 hitsCopied +=
addBKLMHit(bklmHit, calculateSortingParameter(recoHitInfo->getSortingParameter()),
309 recoHitInfo->getFoundByTrackFinder());
316 if (testHitWeight(recoHitInfo)) {
317 hitsCopied +=
addEKLMHit(eklmHit, calculateSortingParameter(recoHitInfo->getSortingParameter()),
318 recoHitInfo->getFoundByTrackFinder());
342 if (not fs->isFitConverged()) {
353 for (
unsigned int i = 0; i < trackSize; i++) {
358 B2DEBUG(100,
"Can not get mSoP because of: " << exception.
what());
369 std::vector<RelationEntry> relatedRecoHitInformations = getRelationsWith<RecoHitInformation>
371 std::sort(relatedRecoHitInformations.begin(), relatedRecoHitInformations.end() , [](
const RelationEntry & lhs,
373 return dynamic_cast<RecoHitInformation*>(lhs.object)->getSortingParameter() > dynamic_cast<RecoHitInformation*>
374 (rhs.object)->getSortingParameter();
378 for (
unsigned int i = 1; i < relatedRecoHitInformations.size() - 1; ++i) {
379 dynamic_cast<RecoHitInformation*
>(relatedRecoHitInformations[i].object)->setFlag(RecoHitInformation::RecoHitFlag::c_pruned);
380 dynamic_cast<RecoHitInformation*
>(relatedRecoHitInformations[i].object)->setCreatedTrackPointID(-1);
400 if (trackRepresentation ==
nullptr) {
401 if (PDGcode == Monopoles::c_monopolePDGCode) {
408 return trackRepresentation;
415 const unsigned int numberOfPoints =
m_genfitTrack.getNumPointsWithMeasurement();
417 assert(numberOfPoints > 0);
420 double minimalDistance2 = 0;
421 for (
unsigned int hitIndex = 0; hitIndex < numberOfPoints; hitIndex++) {
425 const double currentDistance2 = (measuredStateOnPlane.getPos() - closestPoint).Mag2();
427 if (not nearestStateOnPlane or currentDistance2 < minimalDistance2) {
428 nearestStateOnPlane = &measuredStateOnPlane;
429 minimalDistance2 = currentDistance2;
432 B2DEBUG(50,
"Can not get mSoP because of: " << exception.
what());
436 return *nearestStateOnPlane;
456 B2FATAL(
"Only positive pdgCode is possible when calling getTrackRepresentationForPDG, got " << pdgCode);
464 if (rkTrackRepresenation !=
nullptr) {
466 if (std::abs(rkTrackRepresenation->
getPDG()) == pdgCode) {
467 return trackRepresentation;
483 return std::make_tuple(measuredStateOnPlane.getPos(), measuredStateOnPlane.getMom(), measuredStateOnPlane.getCharge());
488 const TVector3& position,
const TVector3& momentum,
short charge,
489 const TMatrixDSym& covariance,
double timeSeed)
const
510 return copyToStoreArrayUsing(storeArray, mSoP.getPos(), mSoP.getMom(),
static_cast<short>(mSoP.getCharge()),
511 mSoP.get6DCov(), mSoP.getTime());
533 std::vector<RecoHitInformation*> hitList;
537 hitList.reserve(recoHitInformations.
size());
538 for (
auto& recoHit : recoHitInformations) {
540 hitList.push_back(&recoHit);
547 return a->getSortingParameter() < b->getSortingParameter();
560 B2FATAL(
"MeasuredStateOnPlane can not be retrieved for RecoTracks where no fit has been attempted.");
564 B2FATAL(
"MeasuredStateOnPlane cannot be provided for RecoHit which was not used in the fit.");
568 if (not hitTrackPoint) {
569 B2FATAL(
"TrackPoint was requested which has not been created");
572 const auto* fittedResult = hitTrackPoint->getFitterInfo(representation);
573 if (not fittedResult) {
574 throw NoTrackFitResult();
577 return fittedResult->getFittedState();
583 for (
unsigned int i = 0; i < trackSize; i++) {
587 B2DEBUG(50,
"Can not get mSoP because of: " << exception.
what());
591 B2FATAL(
"There is no single hit with a valid mSoP in this track! Check if the fit failed with wasFitSuccessful before");
597 for (
int i = -1; i >= -trackSize; i--) {
601 B2DEBUG(50,
"Can not get mSoP because of: " << exception.
what());
605 B2FATAL(
"There is no single hit with a valid mSoP in this track!");
610 std::stringstream out;
621 out <<
"<b>was fitted with " << rep->getPDG() <<
"</b>=" <<
wasFitSuccessful() <<
", ";
size_t size() const
Get number of relations.
T * appendNew()
Construct a new T object at the end of the array.
Exception class for error handling in GENFIT (provides storage for diagnostic information)
Object containing AbsMeasurement and AbsFitterInfo objects.
std::string m_storeArrayNameOfEKLMHits
Store array name of added EKLM hits.
static void registerRequiredRelations(StoreArray< RecoTrack > &recoTracks, std::string const &pxdHitsStoreArrayName="", std::string const &svdHitsStoreArrayName="", std::string const &cdcHitsStoreArrayName="", std::string const &bklmHitsStoreArrayName="", std::string const &eklmHitsStoreArrayName="", std::string const &recoHitInformationStoreArrayName="")
Convenience method which registers all relations required to fully use a RecoTrack.
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...
genfit::TrackCand createGenfitTrackCand() const
Create a genfit::TrackCand out of this reco track and copy all information to the track candidate.
size_t addHitsFromRecoTrack(const RecoTrack *recoTrack, unsigned int sortingParameterOffset=0, bool reversed=false, boost::optional< double > optionalMinimalWeight=boost::none)
Add all hits from another RecoTrack to this RecoTrack.
RecoTrack * copyToStoreArrayUsingSeeds(StoreArray< RecoTrack > &storeArray) const
Append a new RecoTrack to the given store array and copy its general properties, but not the hits the...
void setTimeSeed(const double timeSeed)
Set the time seed. ATTENTION: This is not the fitted time.
bool wasFitSuccessful(const genfit::AbsTrackRep *representation=nullptr) const
Returns true if the last fit with the given representation was successful.
bool registerRelationTo(const StoreArray< TO > &toArray, DataStore::EDurability durability=DataStore::c_Event, DataStore::EStoreFlags storeFlags=DataStore::c_WriteOut, const std::string &namedRelation="") const
Register a relation to the given StoreArray.
bool hasTrackFitStatus(const genfit::AbsTrackRep *representation=nullptr) const
Check, if there is a fit status for the given representation or for the cardinal one.
std::tuple< TVector3, TVector3, short > extractTrackState() const
Return the position, the momentum and the charge of the first measured state on plane or - if unfitte...
void deleteFittedState(const genfit::AbsTrackRep *rep)
Delete the fit status and all the FitStates of the TrackPoints for the given hypothesis.
#StateOnPlane with additional covariance matrix.
Track candidate – seed values and indices.
static genfit::Track & getGenfitTrack(RecoTrack &recoTrack)
Give access to the RecoTrack's genfit::Track.
void setSeedCovariance(const TMatrixDSym &seedCovariance)
Set the covariance of the seed. ATTENTION: This is not the fitted covariance.
FitStatus for use with AbsKalmanFitter implementations.
const genfit::MeasuredStateOnPlane & getMeasuredStateOnPlaneFromRecoHit(const RecoHitInformation *recoHitInfo, const genfit::AbsTrackRep *representation=nullptr) const
Return genfit's MeasuredStateOnPlane on plane for associated with one RecoHitInformation.
std::vector< Belle2::RecoTrack::UsedSVDHit * > getSVDHitList() const
Return an unsorted list of svd hits.
static RecoTrack * createFromTrackCand(const genfit::TrackCand &trackCand, const std::string &storeArrayNameOfRecoTracks="", const std::string &storeArrayNameOfCDCHits="", const std::string &storeArrayNameOfSVDHits="", const std::string &storeArrayNameOfPXDHits="", const std::string &storeArrayNameOfBKLMHits="", const std::string &storeArrayNameOfEKLMHits="", const std::string &storeArrayNameOfRecoHitInformation="", const bool recreateSortingParameters=false)
Create a reco track from a genfit::TrackCand and save it to the given store array.
int getPDG() const
Get the pdg code.
Class containing the result of the unpacker in raw data and the result of the digitizer in simulation...
const genfit::MeasuredStateOnPlane & getMeasuredStateOnPlaneFromFirstHit(const genfit::AbsTrackRep *representation=nullptr) const
Return genfit's MeasuredStateOnPlane for the first hit in a fit useful for extrapolation of measureme...
std::vector< Belle2::RecoTrack::UsedCDCHit * > getCDCHitList() const
Return an unsorted list of cdc hits.
double getTimeSeed() const
Get the time at which the seed state is defined.
void setCovSeed(const TMatrixDSym &cov6D)
set the covariance matrix seed (6D).
genfit::AbsTrackRep * getTrackRepresentationForPDG(int pdgCode)
Return an already created track representation of the given reco track for the PDG.
virtual std::string getInfoHTML() const
Get useful information on EventDisplay.
Collection of TrackPoint objects, AbsTrackRep objects and FitStatus objects.
KalmanFitterInfo * getKalmanFitterInfo(const AbsTrackRep *rep=nullptr) const
Helper to avoid casting.
std::vector< Belle2::RecoTrack::UsedBKLMHit * > getBKLMHitList() const
Return an unsorted list of bklm hits.
Hit object for use in TrackCand.
Abstract base class for a track representation.
std::string m_storeArrayNameOfCDCHits
Store array name of added CDC hits.
const std::string & getStoreArrayNameOfPXDHits() const
Name of the store array of the pxd hits.
const std::vector< genfit::AbsTrackRep * > & getRepresentations() const
Return a list of track representations. You are not allowed to modify or delete them!
RecoTrack * copyToStoreArray(StoreArray< RecoTrack > &storeArray) const
Append a new RecoTrack to the given store array and copy its general properties, but not the hits the...
int getArrayIndex() const
Get 0-based index of the particle in the corresponding MCParticle list.
This dataobject is used only for EKLM alignment.
genfit::Track m_genfitTrack
Internal storage for the genfit track.
RecoTrack()
Empty constructor for ROOT. Do not use!
std::string m_storeArrayNameOfRecoHitInformation
Store array of added RecoHitInformation.
bool addCDCHit(const UsedCDCHit *cdcHit, const unsigned int sortingParameter, RightLeftInformation rightLeftInformation=RightLeftInformation::c_undefinedRightLeftInformation, OriginTrackFinder foundByTrackFinder=OriginTrackFinder::c_undefinedTrackFinder)
Adds a cdc hit with the given information to the reco track.
TVector3 getPosSeed() const
get the seed value for track: pos.
const genfit::TrackPoint * getCreatedTrackPoint(const RecoHitInformation *recoHitInformation) const
Get a pointer to the TrackPoint that was created from this hit.
const std::vector< genfit::TrackPoint * > & getHitPointsWithMeasurement() const
Return a list of measurements and track points, which can be used e.g. to extrapolate....
AbsTrackRep with 5D track parameterization in plane coordinates: (q/p, u', v', u, v)
bool addEKLMHit(const UsedEKLMHit *eklmHit, const unsigned int sortingParameter, OriginTrackFinder foundByTrackFinder=OriginTrackFinder::c_undefinedTrackFinder)
Adds an eklm hit with the given information to the reco track.
RecoTrack * copyToStoreArrayUsing(StoreArray< RecoTrack > &storeArray, const TVector3 &position, const TVector3 &momentum, short charge, const TMatrixDSym &covariance, double timeSeed) const
Append a new RecoTrack to the given store array and copy its general properties, but not the hits the...
double getTimeSeed() const
Return the time seed stored in the reco track. ATTENTION: This is not the fitted time.
std::string m_storeArrayNameOfSVDHits
Store array name of added SVD hits.
This is the Reconstruction Event-Data Model Track.
std::string m_storeArrayNameOfPXDHits
Store array name of added PXD hits.
void deleteFittedInformation()
Delete all fitted information for all representations.
TVector3 getPositionSeed() const
Return the position seed stored in the reco track. ATTENTION: This is not the fitted position.
Class for type safe access to objects that are referred to in relations.
Collects information needed and produced by a AbsKalmanFitter implementations and is specific to one ...
const std::string & getStoreArrayNameOfCDCHits() const
Name of the store array of the cdc hits.
RecoHitInformation * getRecoHitInformation(HitType *hit) const
Return the reco hit information for a generic hit from the storeArray.
bool addSVDHit(const UsedSVDHit *svdHit, const unsigned int sortingParameter, OriginTrackFinder foundByTrackFinder=OriginTrackFinder::c_undefinedTrackFinder)
Adds a svd hit with the given information to the reco track.
Abstract base class for different kinds of events.
bool addBKLMHit(const UsedBKLMHit *bklmHit, const unsigned int sortingParameter, OriginTrackFinder foundByTrackFinder=OriginTrackFinder::c_undefinedTrackFinder)
Adds a bklm hit with the given information to the reco track.
void sortHits()
Sort the hits that were already added to the trackCand using the sorting parameters.
const MeasuredStateOnPlane & getFittedState(int id=0, const AbsTrackRep *rep=nullptr, bool biased=true) const
Shortcut to get FittedStates.
const genfit::MeasuredStateOnPlane & getMeasuredStateOnPlaneClosestTo(const TVector3 &closestPoint, const genfit::AbsTrackRep *representation=nullptr)
Return genfit's MasuredStateOnPlane, that is closest to the given point useful for extrapolation of m...
The PXD Cluster class This class stores all information about reconstructed PXD clusters The position...
Monopole track representation.
void prune()
Prune the genfit track, e.g.
void setTimeSeed(double time)
Set the time at which the seed is defined.
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...
The SVD Cluster class This class stores all information about reconstructed SVD clusters.
std::vector< RecoHitInformation * > getRecoHitInformations(bool getSorted=false) const
Return a list of all RecoHitInformations associated with the RecoTrack.
TVector3 getMomentumSeed() const
Return the momentum seed stored in the reco track. ATTENTION: This is not the fitted momentum.
void prune(const Option_t *="CFLWRMIU")
Delete unneeded information from the Track.
std::vector< Belle2::RecoTrack::UsedEKLMHit * > getEKLMHitList() const
Return an unsorted list of eklm hits.
A Class to store the Monte Carlo particle information.
short int getChargeSeed() const
Return the charge seed stored in the reco track. ATTENTION: This is not the fitted charge.
Accessor to arrays stored in the data store.
virtual const char * what() const noexcept
Standard error message handling for exceptions. use like "std::cerr << e.what();".
const std::string & getStoreArrayNameOfRecoHitInformation() const
Name of the store array of the reco hit informations.
void deleteFittedInformationForRepresentation(const genfit::AbsTrackRep *rep)
Delete all fitted information for the given representations.
void setMcTrackId(int i)
Set the MCT track id, for MC simulations.
std::string m_storeArrayNameOfBKLMHits
Store array name of added BKLM hits.
const std::string & getStoreArrayNameOfEKLMHits() const
Name of the store array of the eklm hits.
Class where important numbers and properties of a fit can be stored.
bool hasFitStatus(const AbsTrackRep *rep=nullptr) const
Check if track has a FitStatus for given AbsTrackRep. Per default, check for cardinal rep.
void setPosMomSeed(const TVector3 &pos, const TVector3 &mom, const double charge)
sets the state to seed the track fitting.
Store one BKLM strip hit as a ROOT object.
Hit object for use in TrackCand.
TVector3 getMomSeed() const
get the seed value for track: mom.
bool addPXDHit(const UsedPXDHit *pxdHit, const unsigned int sortingParameter, OriginTrackFinder foundByTrackFinder=OriginTrackFinder::c_undefinedTrackFinder)
Adds a pxd hit with the given information to the reco track.
void checkDirtyFlag() const
Helper: Check the dirty flag and produce a warning, whenever a fit result is accessed.
const std::string & getStoreArrayNameOfBKLMHits() const
Name of the store array of the bklm hits.
const TMatrixDSym & getSeedCovariance() const
Return the covariance matrix of the seed. ATTENTION: This is not the fitted covariance.
const std::string & getStoreArrayNameOfSVDHits() const
Name of the store array of the svd hits.
const genfit::MeasuredStateOnPlane & getMeasuredStateOnPlaneFromLastHit(const genfit::AbsTrackRep *representation=nullptr) const
Return genfit's MeasuredStateOnPlane for the last hit in a fit useful for extrapolation of measuremen...
std::vector< Belle2::RecoTrack::UsedPXDHit * > getPXDHitList() const
Return an unsorted list of pxd hits.