File indexing completed on 2025-08-05 08:18:21
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #ifndef genfit_TrackPoint_h
0024 #define genfit_TrackPoint_h
0025
0026 #include "AbsMeasurement.h"
0027 #include "AbsFitterInfo.h"
0028 #include "ThinScatterer.h"
0029
0030 #include <TObject.h>
0031
0032 #include <map>
0033 #include <vector>
0034 #include <memory>
0035
0036
0037 namespace genfit {
0038
0039 class Track;
0040 class KalmanFitterInfo;
0041
0042
0043
0044
0045
0046 class TrackPoint : public TObject {
0047
0048 public:
0049
0050 TrackPoint();
0051 explicit TrackPoint(Track* track);
0052
0053
0054
0055
0056
0057
0058
0059 TrackPoint(const std::vector< genfit::AbsMeasurement* >& rawMeasurements, Track* track);
0060
0061
0062
0063
0064
0065
0066
0067 TrackPoint(genfit::AbsMeasurement* rawMeasurement, Track* track);
0068
0069 TrackPoint(const TrackPoint&);
0070 TrackPoint& operator=(TrackPoint);
0071 void swap(TrackPoint& other);
0072
0073
0074
0075
0076
0077 TrackPoint(const TrackPoint& rhs,
0078 const std::map<const genfit::AbsTrackRep*, genfit::AbsTrackRep*>& map,
0079 const std::vector<const genfit::AbsTrackRep*> * repsToIgnore = nullptr);
0080
0081 virtual ~TrackPoint();
0082
0083
0084 double getSortingParameter() const {return sortingParameter_;}
0085
0086 Track* getTrack() const {return track_;}
0087 void setTrack(Track* track) {track_ = track;}
0088
0089 const std::vector< genfit::AbsMeasurement* >& getRawMeasurements() const {return rawMeasurements_;}
0090 AbsMeasurement* getRawMeasurement(int i = 0) const;
0091 unsigned int getNumRawMeasurements() const {return rawMeasurements_.size();}
0092 bool hasRawMeasurements() const {return (rawMeasurements_.size() != 0);}
0093
0094 std::vector< genfit::AbsFitterInfo* > getFitterInfos() const;
0095
0096 AbsFitterInfo* getFitterInfo(const AbsTrackRep* rep = nullptr) const;
0097
0098 KalmanFitterInfo* getKalmanFitterInfo(const AbsTrackRep* rep = nullptr) const;
0099 bool hasFitterInfo(const AbsTrackRep* rep) const {
0100 return (fitterInfos_.find(rep) != fitterInfos_.end());
0101 }
0102
0103 ThinScatterer* getMaterialInfo() const {return thinScatterer_.get();}
0104 bool hasThinScatterer() const {return thinScatterer_.get() != nullptr;}
0105
0106
0107 void setSortingParameter(double sortingParameter) {sortingParameter_ = sortingParameter;}
0108
0109 void addRawMeasurement(genfit::AbsMeasurement* rawMeasurement) {assert(rawMeasurement!=nullptr); rawMeasurement->setTrackPoint(this); rawMeasurements_.push_back(rawMeasurement);}
0110 void deleteRawMeasurements();
0111
0112 void setFitterInfo(genfit::AbsFitterInfo* fitterInfo);
0113 void deleteFitterInfo(const AbsTrackRep* rep) {delete fitterInfos_[rep]; fitterInfos_.erase(rep);}
0114
0115 void setScatterer(ThinScatterer* scatterer) {thinScatterer_.reset(scatterer);}
0116
0117 void Print(const Option_t* = "") const;
0118
0119
0120
0121
0122
0123
0124
0125
0126 void fixupRepsForReading();
0127
0128 private:
0129 double sortingParameter_;
0130
0131
0132 Track* track_;
0133
0134
0135 std::vector<AbsMeasurement*> rawMeasurements_;
0136
0137 std::map< const AbsTrackRep*, AbsFitterInfo* > fitterInfos_;
0138
0139
0140
0141
0142
0143
0144
0145 std::map<unsigned int, AbsFitterInfo*> vFitterInfos_;
0146
0147 std::unique_ptr<ThinScatterer> thinScatterer_;
0148
0149 public:
0150
0151 ClassDef(TrackPoint,1)
0152
0153 };
0154
0155 }
0156
0157
0158 #endif