PandaRoot
TrackPoint.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_TrackPoint_h
24 #define genfit_TrackPoint_h
25 
26 #include "AbsMeasurement.h"
27 #include "AbsFitterInfo.h"
28 #include "ThinScatterer.h"
29 
30 #include <TObject.h>
31 
32 #include <map>
33 #include <vector>
34 #include <memory>
35 
36 #ifndef __CINT__
37 #include <boost/scoped_ptr.hpp>
38 #endif
39 
40 namespace genfit {
41 
42 class Track;
43 class KalmanFitterInfo;
44 
49 class TrackPoint : public TObject {
50 
51  public:
52  TrackPoint();
53  TrackPoint(Track *track);
54 
61  TrackPoint(const std::vector<genfit::AbsMeasurement *> &rawMeasurements, Track *track);
62 
69  TrackPoint(genfit::AbsMeasurement *rawMeasurement, Track *track);
70 
71  TrackPoint(const TrackPoint &); // copy constructor
72  TrackPoint &operator=(TrackPoint); // assignment operator
73  void swap(TrackPoint &other);
74 
79  TrackPoint(const TrackPoint &rhs, const std::map<const genfit::AbsTrackRep *, genfit::AbsTrackRep *> &map,
80  const std::vector<const genfit::AbsTrackRep *> *repsToIgnore = nullptr);
81 
82  virtual ~TrackPoint();
83 
84  double getSortingParameter() const { return sortingParameter_; }
85 
86  Track *getTrack() const { return track_; }
87  void setTrack(Track *track) { track_ = track; }
88 
89  const std::vector<genfit::AbsMeasurement *> &getRawMeasurements() const { return rawMeasurements_; }
90  AbsMeasurement *getRawMeasurement(int i = 0) const;
91  unsigned int getNumRawMeasurements() const { return rawMeasurements_.size(); }
92  bool hasRawMeasurements() const { return (rawMeasurements_.size() != 0); }
94  std::vector<genfit::AbsFitterInfo *> getFitterInfos() const;
96  AbsFitterInfo *getFitterInfo(const AbsTrackRep *rep = nullptr) const;
98  KalmanFitterInfo *getKalmanFitterInfo(const AbsTrackRep *rep = nullptr) const;
99  bool hasFitterInfo(const AbsTrackRep *rep) const { return (fitterInfos_.find(rep) != fitterInfos_.end()); }
100 
101  ThinScatterer *getMaterialInfo() const { return thinScatterer_.get(); }
102  bool hasThinScatterer() const { return thinScatterer_.get() != nullptr; }
103 
104  void setSortingParameter(double sortingParameter) { sortingParameter_ = sortingParameter; }
107  {
108  assert(rawMeasurement != nullptr);
109  rawMeasurement->setTrackPoint(this);
110  rawMeasurements_.push_back(rawMeasurement);
111  }
112  void deleteRawMeasurements();
114  void setFitterInfo(genfit::AbsFitterInfo *fitterInfo);
115  void deleteFitterInfo(const AbsTrackRep *rep)
116  {
117  delete fitterInfos_[rep];
118  fitterInfos_.erase(rep);
119  }
120 
121  void setScatterer(ThinScatterer *scatterer) { thinScatterer_.reset(scatterer); }
122 
123  void Print(const Option_t * = "") const;
124 
132  void fixupRepsForReading();
133 
134  private:
135  double sortingParameter_;
136 
138  Track *track_;
139 
141  std::vector<AbsMeasurement *> rawMeasurements_; // Ownership
142 
143  std::map<const AbsTrackRep *, AbsFitterInfo *> fitterInfos_;
144 
151  std::vector<AbsFitterInfo *> vFitterInfos_;
152 
153 #ifndef __CINT__
154  boost::scoped_ptr<ThinScatterer> thinScatterer_; // Ownership
155 #else
156  class ThinScatterer *thinScatterer_;
157 #endif
158 
159  public:
160  ClassDef(TrackPoint, 1)
161 };
162 
163 } /* End of namespace genfit */
166 #endif // genfit_TrackPoint_h
void setTrack(Track *track)
Definition: TrackPoint.h:87
bool hasThinScatterer() const
Definition: TrackPoint.h:102
Collection of TrackPoint objects, AbsTrackRep objects and FitStatus objects.
Definition: Track.h:67
double getSortingParameter() const
Definition: TrackPoint.h:84
ThinScatterer * getMaterialInfo() const
Definition: TrackPoint.h:101
KalmanFitterInfo * getKalmanFitterInfo(const AbsTrackRep *rep=nullptr) const
Helper to avoid casting.
Abstract base class for a track representation.
Definition: AbsTrackRep.h:62
Thin or thick scatterer.
Definition: ThinScatterer.h:37
void swap(TrackPoint &other)
std::vector< genfit::AbsFitterInfo * > getFitterInfos() const
Get list of all fitterInfos.
This class collects all information needed and produced by a specific AbsFitter and is specific to on...
Definition: AbsFitterInfo.h:41
bool hasFitterInfo(const AbsTrackRep *rep) const
Definition: TrackPoint.h:99
void Print(const Option_t *="") const
unsigned int i
Definition: P4_F32vec4.h:21
void setSortingParameter(double sortingParameter)
Definition: TrackPoint.h:104
void addRawMeasurement(genfit::AbsMeasurement *rawMeasurement)
Takes ownership and sets this as measurement&#39;s trackPoint.
Definition: TrackPoint.h:106
virtual ~TrackPoint()
void setTrackPoint(TrackPoint *tp)
AbsMeasurement * getRawMeasurement(int i=0) const
void setFitterInfo(genfit::AbsFitterInfo *fitterInfo)
Takes Ownership.
void deleteRawMeasurements()
Object containing AbsMeasurement and AbsFitterInfo objects.
Definition: TrackPoint.h:49
Track * getTrack() const
Definition: TrackPoint.h:86
const std::vector< genfit::AbsMeasurement * > & getRawMeasurements() const
Definition: TrackPoint.h:89
void setScatterer(ThinScatterer *scatterer)
Definition: TrackPoint.h:121
unsigned int getNumRawMeasurements() const
Definition: TrackPoint.h:91
void fixupRepsForReading()
Contains the measurement and covariance in raw detector coordinates.
AbsFitterInfo * getFitterInfo(const AbsTrackRep *rep=nullptr) const
Get fitterInfo for rep. Per default, use cardinal rep.
void deleteFitterInfo(const AbsTrackRep *rep)
Definition: TrackPoint.h:115
TrackPoint & operator=(TrackPoint)
bool hasRawMeasurements() const
Definition: TrackPoint.h:92
Collects information needed and produced by a AbsKalmanFitter implementations and is specific to one ...
Matrix inversion tools.
Definition: AbsBField.h:28