GENFIT  Rev:NoNumberAvailable
Track.h
Go to the documentation of this file.
1 /* Copyright 2008-2010, Technische Universitaet Muenchen,
2  Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch & Tobias Schlüter
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 */
19 
24 #ifndef genfit_Track_h
25 #define genfit_Track_h
26 
27 #include "AbsTrackRep.h"
28 #include "FitStatus.h"
29 #include "MeasurementFactory.h"
30 #include "TrackCand.h"
31 #include "TrackPoint.h"
32 
33 #include <vector>
34 #include <TObject.h>
35 #include <TVectorD.h>
36 
37 
38 namespace genfit {
39 
40 class KalmanFitStatus;
41 
46  public:
50  bool operator() (const TrackPoint* lhs, const TrackPoint* rhs) const {
51  return lhs->getSortingParameter() < rhs->getSortingParameter();
52  }
53 };
54 
55 
71 class Track : public TObject {
72 
73  public:
74 
75  Track();
76 
93  Track(const TrackCand& trackCand, const MeasurementFactory<genfit::AbsMeasurement>& factory, AbsTrackRep* rep = NULL);
94 
95  Track(AbsTrackRep* trackRep, const TVectorD& stateSeed);
96  Track(AbsTrackRep* trackRep, const TVector3& posSeed, const TVector3& momSeed);
97  Track(AbsTrackRep* trackRep, const TVectorD& stateSeed, const TMatrixDSym& covSeed);
98 
99  Track(const Track&); // copy constructor
100  Track& operator=(Track); // assignment operator
101  void swap(Track& other); // nothrow
102 
103  virtual ~Track();
104  virtual void Clear(Option_t* = "");
105 
106  void createMeasurements(const TrackCand& trackCand, const MeasurementFactory<genfit::AbsMeasurement>& factory);
107 
108  TrackPoint* getPoint(int id) const;
109  const std::vector< genfit::TrackPoint* > & getPoints() const {return trackPoints_;}
110  unsigned int getNumPoints() const {return trackPoints_.size();}
111 
112  TrackPoint* getPointWithMeasurement(int id) const;
113  const std::vector< genfit::TrackPoint* > & getPointsWithMeasurement() const {return trackPointsWithMeasurement_;}
114  unsigned int getNumPointsWithMeasurement() const {return trackPointsWithMeasurement_.size();}
115 
116  TrackPoint* getPointWithMeasurementAndFitterInfo(int id, const AbsTrackRep* rep = NULL) const;
117  TrackPoint* getPointWithFitterInfo(int id, const AbsTrackRep* rep = NULL) const;
118 
128  const MeasuredStateOnPlane& getFittedState(int id = 0, const AbsTrackRep* rep = NULL, bool biased = true) const;
129 
130  AbsTrackRep* getTrackRep(int id) const {return trackReps_.at(id);}
131  unsigned int getNumReps() const {return trackReps_.size();}
132 
134  int getIdForRep(const AbsTrackRep* rep) const;
135 
144  unsigned int getCardinalRepId() const {return cardinalRep_;}
145 
147  int getMcTrackId() const {return mcTrackId_;}
148 
150  bool hasFitStatus(const AbsTrackRep* rep = NULL) const;
152  FitStatus* getFitStatus(const AbsTrackRep* rep = NULL) const {if (rep == NULL) rep = getCardinalRep(); return fitStatuses_.at(rep);}
153 
155  bool hasKalmanFitStatus(const AbsTrackRep* rep = NULL) const;
157  KalmanFitStatus* getKalmanFitStatus(const AbsTrackRep* rep = NULL) const;
158 
159  void setFitStatus(FitStatus* fitStatus, const AbsTrackRep* rep);
160 
161  double getTimeSeed() const {return timeSeed_;}
162  void setTimeSeed(double time) {timeSeed_ = time;}
163 
164  const TVectorD& getStateSeed() const {return stateSeed_;}
165  void setStateSeed(const TVectorD& s) {stateSeed_.ResizeTo(s); stateSeed_ = s;}
166  void setStateSeed(const TVector3& pos, const TVector3& mom);
167 
168  const TMatrixDSym& getCovSeed() const {return covSeed_;}
169  void setCovSeed(const TMatrixDSym& c) {covSeed_.ResizeTo(c); covSeed_ = c;}
170 
172  void setMcTrackId(int i) {mcTrackId_ = i;}
173 
181  void insertPoint(TrackPoint* point, int id = -1);
182 
190  void insertPoints(std::vector<genfit::TrackPoint*> points, int id = -1);
191 
192  void deletePoint(int id);
193 
195  void insertMeasurement(AbsMeasurement* measurement, int id = -1);
196 
205  void mergeTrack(const Track* other, int id = -1);
206 
207  void addTrackRep(AbsTrackRep* trackRep);
208 
210  void deleteTrackRep(int id);
211 
212  void setCardinalRep(int id);
214  void determineCardinalRep();
215 
221  bool sort();
222 
225  bool udpateSeed(int id = 0, AbsTrackRep* rep = NULL, bool biased = true);
226 
228  void reverseTrackPoints();
229 
231  void reverseMomSeed() {
232  stateSeed_(3) *= -1; stateSeed_(4) *= -1; stateSeed_(5) *= -1;
233  }
234 
236  void switchPDGSigns(AbsTrackRep* rep = NULL);
237 
239 
244  void reverseTrack();
245 
246 
247  void deleteForwardInfo(int startId = 0, int endId = -1, const AbsTrackRep* rep = NULL); // delete in range [startId, endId]. If rep == NULL, delete for ALL reps, otherwise only for rep.
248  void deleteBackwardInfo(int startId = 0, int endId = -1, const AbsTrackRep* rep = NULL); // delete in range [startId, endId]. If rep == NULL, delete for ALL reps, otherwise only for rep.
249  void deleteReferenceInfo(int startId = 0, int endId = -1, const AbsTrackRep* rep = NULL); // delete in range [startId, endId]. If rep == NULL, delete for ALL reps, otherwise only for rep.
250  void deleteMeasurementInfo(int startId = 0, int endId = -1, const AbsTrackRep* rep = NULL); // delete in range [startId, endId]. If rep == NULL, delete for ALL reps, otherwise only for rep.
251  void deleteFitterInfo(int startId = 0, int endId = -1, const AbsTrackRep* rep = NULL); // delete in range [startId, endId]. If rep == NULL, delete for ALL reps, otherwise only for rep.
252 
254  double getTrackLen(AbsTrackRep* rep = NULL, int startId = 0, int endId = -1) const;
256  double getTOF(AbsTrackRep* rep = NULL, int startId = 0, int endId = -1) const;
257 
259 
265  TrackCand* constructTrackCand() const;
266 
269  void fixWeights(AbsTrackRep* rep = NULL, int startId = 0, int endId = -1);
270 
285  void prune(const Option_t* = "CFLWRMIU");
286 
287  void Print(const Option_t* = "") const;
288 
289  bool checkConsistency() const;
290 
291  private:
292 
293  void trackHasChanged();
294 
296 
297  std::vector<AbsTrackRep*> trackReps_; // Ownership
298  unsigned int cardinalRep_; // THE selected rep, default = 0;
299 
300  std::vector<TrackPoint*> trackPoints_; // Ownership
301  std::vector<TrackPoint*> trackPointsWithMeasurement_;
302 
303  std::map< const AbsTrackRep*, FitStatus* > fitStatuses_; // Ownership over FitStatus*
304 
306  double timeSeed_;
307  TVectorD stateSeed_; // 6D: position, momentum
308  TMatrixDSym covSeed_; // 6D
309 
310 
311  public:
312  ClassDef(Track,3)
313  // Class version history:
314  // ver 3: introduces timeSeed_
315 };
316 
317 } /* End of namespace genfit */
320 #endif // genfit_Track_h
genfit::Track::covSeed_
TMatrixDSym covSeed_
Definition: Track.h:308
genfit::Track::trackHasChanged
void trackHasChanged()
Definition: Track.cc:1435
genfit::Track::insertMeasurement
void insertMeasurement(AbsMeasurement *measurement, int id=-1)
Creates a new TrackPoint containing the measurement, and adds it to the track.
Definition: Track.cc:508
genfit::Track::addTrackRep
void addTrackRep(AbsTrackRep *trackRep)
Definition: Track.cc:562
genfit::Track
Collection of TrackPoint objects, AbsTrackRep objects and FitStatus objects.
Definition: Track.h:71
genfit::Track::getPointWithMeasurementAndFitterInfo
TrackPoint * getPointWithMeasurementAndFitterInfo(int id, const AbsTrackRep *rep=NULL) const
Definition: Track.cc:228
genfit::Track::getKalmanFitStatus
KalmanFitStatus * getKalmanFitStatus(const AbsTrackRep *rep=NULL) const
If FitStatus is a KalmanFitStatus, return it. Otherwise return NULL.
Definition: Track.cc:336
genfit::Track::constructTrackCand
TrackCand * constructTrackCand() const
Construct a new TrackCand containing the hit IDs of the measurements.
Definition: Track.cc:932
genfit::Track::getCardinalRepId
unsigned int getCardinalRepId() const
Definition: Track.h:144
genfit::Track::Print
void Print(const Option_t *="") const
Definition: Track.cc:1109
FitStatus.h
genfit::Track::deletePoint
void deletePoint(int id)
Definition: Track.cc:473
genfit::Track::udpateSeed
bool udpateSeed(int id=0, AbsTrackRep *rep=NULL, bool biased=true)
Definition: Track.cc:683
genfit::Track::getTimeSeed
double getTimeSeed() const
Definition: Track.h:161
genfit::MeasuredStateOnPlane
StateOnPlane with additional covariance matrix.
Definition: MeasuredStateOnPlane.h:38
genfit::Track::reverseTrack
void reverseTrack()
Make track ready to be fitted in reverse direction.
Definition: Track.cc:730
genfit::Track::getMcTrackId
int getMcTrackId() const
Get the MCT track id, for MC simulations - default value = -1.
Definition: Track.h:147
genfit::Track::getPoints
const std::vector< genfit::TrackPoint * > & getPoints() const
Definition: Track.h:109
genfit::Track::getPointWithFitterInfo
TrackPoint * getPointWithFitterInfo(int id, const AbsTrackRep *rep=NULL) const
Definition: Track.cc:258
AbsTrackRep.h
genfit::Track::getCovSeed
const TMatrixDSym & getCovSeed() const
Definition: Track.h:168
genfit::Track::setFitStatus
void setFitStatus(FitStatus *fitStatus, const AbsTrackRep *rep)
Definition: Track.cc:341
genfit
Defines for I/O streams used for error and debug printing.
Definition: AbsFinitePlane.cc:22
genfit::MeasurementFactory
Factory object to create AbsMeasurement objects from digitized and clustered data.
Definition: MeasurementFactory.h:51
TrackPoint.h
genfit::Track::getTOF
double getTOF(AbsTrackRep *rep=NULL, int startId=0, int endId=-1) const
get time of flight in ns between to trackPoints (if NULL, for cardinal rep)
Definition: Track.cc:968
genfit::Track::getTrackRep
AbsTrackRep * getTrackRep(int id) const
Definition: Track.h:130
genfit::Track::deleteFitterInfo
void deleteFitterInfo(int startId=0, int endId=-1, const AbsTrackRep *rep=NULL)
Definition: Track.cc:858
genfit::Track::getPoint
TrackPoint * getPoint(int id) const
Definition: Track.cc:212
genfit::Track::Clear
virtual void Clear(Option_t *="")
Definition: Track.cc:184
genfit::Track::setStateSeed
void setStateSeed(const TVectorD &s)
Definition: Track.h:165
genfit::Track::deleteReferenceInfo
void deleteReferenceInfo(int startId=0, int endId=-1, const AbsTrackRep *rep=NULL)
Definition: Track.cc:798
genfit::Track::getFitStatus
FitStatus * getFitStatus(const AbsTrackRep *rep=NULL) const
Get FitStatus for a AbsTrackRep. Per default, return FitStatus for cardinalRep.
Definition: Track.h:152
genfit::Track::reverseTrackPoints
void reverseTrackPoints()
Flip the ordering of the TrackPoints.
Definition: Track.cc:706
genfit::Track::switchPDGSigns
void switchPDGSigns(AbsTrackRep *rep=NULL)
Switch the pdg signs of specified rep (of all reps if rep == NULL).
Definition: Track.cc:718
genfit::AbsTrackRep
Abstract base class for a track representation.
Definition: AbsTrackRep.h:66
genfit::Track::getTrackLen
double getTrackLen(AbsTrackRep *rep=NULL, int startId=0, int endId=-1) const
get TrackLength between to trackPoints (if NULL, for cardinal rep)
Definition: Track.cc:889
genfit::Track::timeSeed_
double timeSeed_
Definition: Track.h:306
MeasurementFactory.h
genfit::Track::fitStatuses_
std::map< const AbsTrackRep *, FitStatus * > fitStatuses_
helper
Definition: Track.h:303
genfit::Track::reverseMomSeed
void reverseMomSeed()
Flip direction of momentum seed.
Definition: Track.h:231
genfit::Track::prune
void prune(const Option_t *="CFLWRMIU")
Delete unneeded information from the Track.
Definition: Track.cc:1034
genfit::Track::determineCardinalRep
void determineCardinalRep()
See with which AbsTrackRep the track was fitted best (converged fit w/ smallest chi2) and set the car...
Definition: Track.cc:609
genfit::TrackCand
Track candidate – seed values and indices.
Definition: TrackCand.h:69
genfit::Track::hasFitStatus
bool hasFitStatus(const AbsTrackRep *rep=NULL) const
Check if track has a FitStatus for given AbsTrackRep. Per default, check for cardinal rep.
Definition: Track.cc:314
genfit::Track::swap
void swap(Track &other)
Definition: Track.cc:167
genfit::Track::insertPoints
void insertPoints(std::vector< genfit::TrackPoint * > points, int id=-1)
Insert TrackPoints BEFORE TrackPoint with position id, if id >= 0.
Definition: Track.cc:423
genfit::AbsMeasurement
Contains the measurement and covariance in raw detector coordinates.
Definition: AbsMeasurement.h:42
genfit::Track::insertPoint
void insertPoint(TrackPoint *point, int id=-1)
Insert TrackPoint BEFORE TrackPoint with position id, if id >= 0.
Definition: Track.cc:363
genfit::Track::getPointWithMeasurement
TrackPoint * getPointWithMeasurement(int id) const
Definition: Track.cc:220
genfit::TrackPoint
Object containing AbsMeasurement and AbsFitterInfo objects.
Definition: TrackPoint.h:50
genfit::Track::fillPointsWithMeasurement
void fillPointsWithMeasurement()
Definition: Track.cc:1450
genfit::Track::mergeTrack
void mergeTrack(const Track *other, int id=-1)
Merge two tracks.
Definition: Track.cc:513
genfit::TrackPointComparator
Helper class for TrackPoint sorting, used in Track::sort().
Definition: Track.h:45
genfit::Track::deleteForwardInfo
void deleteForwardInfo(int startId=0, int endId=-1, const AbsTrackRep *rep=NULL)
Definition: Track.cc:738
genfit::Track::hasKalmanFitStatus
bool hasKalmanFitStatus(const AbsTrackRep *rep=NULL) const
Check if track has a KalmanFitStatus for given AbsTrackRep. Per default, check for cardinal rep.
Definition: Track.cc:325
genfit::Track::mcTrackId_
int mcTrackId_
Definition: Track.h:305
genfit::Track::getIdForRep
int getIdForRep(const AbsTrackRep *rep) const
This is used when streaming TrackPoints.
Definition: Track.cc:302
genfit::FitStatus
Class where important numbers and properties of a fit can be stored.
Definition: FitStatus.h:80
genfit::Track::getNumReps
unsigned int getNumReps() const
Definition: Track.h:131
genfit::Track::cardinalRep_
unsigned int cardinalRep_
Definition: Track.h:298
genfit::Track::getNumPointsWithMeasurement
unsigned int getNumPointsWithMeasurement() const
Definition: Track.h:114
genfit::Track::setMcTrackId
void setMcTrackId(int i)
Set the MCT track id, for MC simulations.
Definition: Track.h:172
genfit::Track::trackPoints_
std::vector< TrackPoint * > trackPoints_
Definition: Track.h:300
genfit::Track::operator=
Track & operator=(Track)
Definition: Track.cc:152
genfit::Track::deleteBackwardInfo
void deleteBackwardInfo(int startId=0, int endId=-1, const AbsTrackRep *rep=NULL)
Definition: Track.cc:767
genfit::Track::setCardinalRep
void setCardinalRep(int id)
Definition: Track.cc:595
genfit::Track::deleteMeasurementInfo
void deleteMeasurementInfo(int startId=0, int endId=-1, const AbsTrackRep *rep=NULL)
Definition: Track.cc:828
genfit::TrackPointComparator::operator()
bool operator()(const TrackPoint *lhs, const TrackPoint *rhs) const
Definition: Track.h:50
genfit::Track::checkConsistency
bool checkConsistency() const
Definition: Track.cc:1275
genfit::Track::getStateSeed
const TVectorD & getStateSeed() const
Definition: Track.h:164
genfit::Track::~Track
virtual ~Track()
Definition: Track.cc:180
genfit::Track::getCardinalRep
AbsTrackRep * getCardinalRep() const
Get cardinal track representation.
Definition: Track.h:143
genfit::Track::trackPointsWithMeasurement_
std::vector< TrackPoint * > trackPointsWithMeasurement_
Definition: Track.h:301
genfit::Track::getFittedState
const MeasuredStateOnPlane & getFittedState(int id=0, const AbsTrackRep *rep=NULL, bool biased=true) const
Shortcut to get FittedStates.
Definition: Track.cc:288
genfit::Track::setTimeSeed
void setTimeSeed(double time)
Definition: Track.h:162
genfit::Track::createMeasurements
void createMeasurements(const TrackCand &trackCand, const MeasurementFactory< genfit::AbsMeasurement > &factory)
Definition: Track.cc:76
TrackCand.h
genfit::Track::getPointsWithMeasurement
const std::vector< genfit::TrackPoint * > & getPointsWithMeasurement() const
Definition: Track.h:113
genfit::Track::trackReps_
std::vector< AbsTrackRep * > trackReps_
Definition: Track.h:297
genfit::Track::stateSeed_
TVectorD stateSeed_
Definition: Track.h:307
genfit::KalmanFitStatus
FitStatus for use with AbsKalmanFitter implementations.
Definition: KalmanFitStatus.h:36
genfit::Track::fixWeights
void fixWeights(AbsTrackRep *rep=NULL, int startId=0, int endId=-1)
Definition: Track.cc:1001
genfit::Track::deleteTrackRep
void deleteTrackRep(int id)
Delete a AbsTrackRep and all corresponding AbsFitterInfo objects in every TrackPoint.
Definition: Track.cc:568
genfit::Track::sort
bool sort()
Sort TrackPoint and according to their sorting parameters.
Definition: Track.cc:634
genfit::Track::Track
Track()
Definition: Track.cc:45
genfit::Track::getNumPoints
unsigned int getNumPoints() const
Definition: Track.h:110
genfit::TrackPoint::getSortingParameter
double getSortingParameter() const
Definition: TrackPoint.h:88
genfit::Track::setCovSeed
void setCovSeed(const TMatrixDSym &c)
Definition: Track.h:169