FairRoot/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 
41 namespace genfit {
42 
43 class Track;
44 class KalmanFitterInfo;
45 
50 class TrackPoint : public TObject {
51 
52  public:
53 
54  TrackPoint();
56 
63  TrackPoint(const std::vector< genfit::AbsMeasurement* >& rawMeasurements, Track* track);
64 
71  TrackPoint(genfit::AbsMeasurement* rawMeasurement, Track* track);
72 
73  TrackPoint(const TrackPoint&); // copy constructor
74  TrackPoint& operator=(TrackPoint); // assignment operator
75  void swap(TrackPoint& other);
76 
81  TrackPoint(const TrackPoint& rhs,
82  const std::map<const genfit::AbsTrackRep*, genfit::AbsTrackRep*>& map,
83  const std::vector<const genfit::AbsTrackRep*> * repsToIgnore = NULL);
84 
85  virtual ~TrackPoint();
86 
87 
88  double getSortingParameter() const {return sortingParameter_;}
89 
90  Track* getTrack() const {return track_;}
91  void setTrack(Track* track) {track_ = track;}
92 
93  const std::vector< genfit::AbsMeasurement* >& getRawMeasurements() const {return rawMeasurements_;}
94  AbsMeasurement* getRawMeasurement(int i = 0) const;
95  unsigned int getNumRawMeasurements() const {return rawMeasurements_.size();}
96  bool hasRawMeasurements() const {return (rawMeasurements_.size() != 0);}
98  std::vector< genfit::AbsFitterInfo* > getFitterInfos() const;
100  AbsFitterInfo* getFitterInfo(const AbsTrackRep* rep = NULL) const;
102  KalmanFitterInfo* getKalmanFitterInfo(const AbsTrackRep* rep = NULL) const;
103  bool hasFitterInfo(const AbsTrackRep* rep) const {
104  return (fitterInfos_.find(rep) != fitterInfos_.end());
105  }
106 
108  bool hasThinScatterer() const {return thinScatterer_.get() != NULL;}
109 
110 
111  void setSortingParameter(double sortingParameter) {sortingParameter_ = sortingParameter;}
113  void addRawMeasurement(genfit::AbsMeasurement* rawMeasurement) {assert(rawMeasurement!=NULL); rawMeasurement->setTrackPoint(this); rawMeasurements_.push_back(rawMeasurement);}
114  void deleteRawMeasurements();
116  void setFitterInfo(genfit::AbsFitterInfo* fitterInfo);
117  void deleteFitterInfo(const AbsTrackRep* rep) {delete fitterInfos_[rep]; fitterInfos_.erase(rep);}
118 
119  void setScatterer(ThinScatterer* scatterer) {thinScatterer_.reset(scatterer);}
120 
121  void Print(const Option_t* = "") const;
122 
130  void fixupRepsForReading();
131 
132  private:
134 
137 
139  std::vector<AbsMeasurement*> rawMeasurements_; // Ownership
140 
141  std::map< const AbsTrackRep*, AbsFitterInfo* > fitterInfos_;
142 
149  std::vector< AbsFitterInfo* > vFitterInfos_;
150 
151 #ifndef __CINT__
152  boost::scoped_ptr<ThinScatterer> thinScatterer_; // Ownership
153 #else
155 #endif
156 
157  public:
158 
159  ClassDef(TrackPoint,1)
160 
161 };
162 
163 } /* End of namespace genfit */
166 #endif // genfit_TrackPoint_h
bool hasThinScatterer() const
Definition: TrackPoint.h:108
AbsFitterInfo * getFitterInfo(const AbsTrackRep *rep=NULL) const
Get fitterInfo for rep. Per default, use cardinal rep.
void setTrack(Track *track)
Definition: TrackPoint.h:91
std::map< const AbsTrackRep *, AbsFitterInfo * > fitterInfos_
Definition: TrackPoint.h:141
const std::vector< genfit::AbsMeasurement * > & getRawMeasurements() const
Definition: TrackPoint.h:93
Int_t i
Definition: run_full.C:25
bool hasRawMeasurements() const
Definition: TrackPoint.h:96
ThinScatterer * getMaterialInfo() const
Definition: TrackPoint.h:107
std::vector< genfit::AbsFitterInfo * > getFitterInfos() const
Get list of all fitterInfos.
PndTransMap * map
Definition: sim_emc_apd.C:99
PndRiemannTrack track
Definition: RiemannTest.C:33
Collection of TrackPoint objects, AbsTrackRep objects and FitStatus objects.
Definition: Track.h:71
Abstract base class for a track representation.
Definition: AbsTrackRep.h:66
Thin or thick scatterer.
Definition: ThinScatterer.h:38
void swap(TrackPoint &other)
This class collects all information needed and produced by a specific AbsFitter and is specific to on...
Definition: AbsFitterInfo.h:42
double getSortingParameter() const
Definition: TrackPoint.h:88
std::vector< AbsMeasurement * > rawMeasurements_
No ownership.
Definition: TrackPoint.h:139
Track * getTrack() const
Definition: TrackPoint.h:90
void setSortingParameter(double sortingParameter)
Definition: TrackPoint.h:111
KalmanFitterInfo * getKalmanFitterInfo(const AbsTrackRep *rep=NULL) const
Helper to avoid casting.
std::vector< AbsFitterInfo * > vFitterInfos_
Ownership over FitterInfos.
Definition: TrackPoint.h:149
double sortingParameter_
Definition: TrackPoint.h:133
void addRawMeasurement(genfit::AbsMeasurement *rawMeasurement)
Takes ownership and sets this as measurement's trackPoint.
Definition: TrackPoint.h:113
virtual ~TrackPoint()
void setTrackPoint(TrackPoint *tp)
boost::scoped_ptr< ThinScatterer > thinScatterer_
Definition: TrackPoint.h:152
FairMCTracks * Track
Definition: drawEveTracks.C:8
void Print(const Option_t *="") const
void setFitterInfo(genfit::AbsFitterInfo *fitterInfo)
Takes Ownership.
void deleteRawMeasurements()
Object containing AbsMeasurement and AbsFitterInfo objects.
Definition: TrackPoint.h:50
void setScatterer(ThinScatterer *scatterer)
Definition: TrackPoint.h:119
Track * track_
Pointer to Track where TrackPoint belongs to.
Definition: TrackPoint.h:136
void fixupRepsForReading()
Contains the measurement and covariance in raw detector coordinates.
unsigned int getNumRawMeasurements() const
Definition: TrackPoint.h:95
void deleteFitterInfo(const AbsTrackRep *rep)
Definition: TrackPoint.h:117
bool hasFitterInfo(const AbsTrackRep *rep) const
Definition: TrackPoint.h:103
TrackPoint & operator=(TrackPoint)
AbsMeasurement * getRawMeasurement(int i=0) const
Collects information needed and produced by a AbsKalmanFitter implementations and is specific to one ...
Matrix inversion tools.
Definition: AbsBField.h:29