PandaRoot
TrackPoint.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 /* Copyright 2008-2010, Technische Universitaet Muenchen,
14  Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch
15 
16  This file is part of GENFIT.
17 
18  GENFIT is free software: you can redistribute it and/or modify
19  it under the terms of the GNU Lesser General Public License as published
20  by the Free Software Foundation, either version 3 of the License, or
21  (at your option) any later version.
22 
23  GENFIT is distributed in the hope that it will be useful,
24  but WITHOUT ANY WARRANTY; without even the implied warranty of
25  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26  GNU Lesser General Public License for more details.
27 
28  You should have received a copy of the GNU Lesser General Public License
29  along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
30 */
35 #ifndef genfit_TrackPoint_h
36 #define genfit_TrackPoint_h
37 
38 #include "AbsMeasurement.h"
39 #include "AbsFitterInfo.h"
40 #include "ThinScatterer.h"
41 
42 #include <TObject.h>
43 
44 #include <map>
45 #include <vector>
46 #include <memory>
47 
48 #ifndef __CINT__
49 #include <boost/scoped_ptr.hpp>
50 #endif
51 
52 namespace genfit {
53 
54 class Track;
55 class KalmanFitterInfo;
56 
61 class TrackPoint : public TObject {
62 
63  public:
64  TrackPoint();
65  TrackPoint(Track *track);
66 
73  TrackPoint(const std::vector<genfit::AbsMeasurement *> &rawMeasurements, Track *track);
74 
81  TrackPoint(genfit::AbsMeasurement *rawMeasurement, Track *track);
82 
83  TrackPoint(const TrackPoint &); // copy constructor
84  TrackPoint &operator=(TrackPoint); // assignment operator
85  void swap(TrackPoint &other);
86 
91  TrackPoint(const TrackPoint &rhs, const std::map<const genfit::AbsTrackRep *, genfit::AbsTrackRep *> &map,
92  const std::vector<const genfit::AbsTrackRep *> *repsToIgnore = nullptr);
93 
94  virtual ~TrackPoint();
95 
96  double getSortingParameter() const { return sortingParameter_; }
97 
98  Track *getTrack() const { return track_; }
99  void setTrack(Track *track) { track_ = track; }
100 
101  const std::vector<genfit::AbsMeasurement *> &getRawMeasurements() const { return rawMeasurements_; }
102  AbsMeasurement *getRawMeasurement(int i = 0) const;
103  unsigned int getNumRawMeasurements() const { return rawMeasurements_.size(); }
104  bool hasRawMeasurements() const { return (rawMeasurements_.size() != 0); }
106  std::vector<genfit::AbsFitterInfo *> getFitterInfos() const;
108  AbsFitterInfo *getFitterInfo(const AbsTrackRep *rep = nullptr) const;
110  KalmanFitterInfo *getKalmanFitterInfo(const AbsTrackRep *rep = nullptr) const;
111  bool hasFitterInfo(const AbsTrackRep *rep) const { return (fitterInfos_.find(rep) != fitterInfos_.end()); }
112 
113  ThinScatterer *getMaterialInfo() const { return thinScatterer_.get(); }
114  bool hasThinScatterer() const { return thinScatterer_.get() != nullptr; }
115 
116  void setSortingParameter(double sortingParameter) { sortingParameter_ = sortingParameter; }
119  {
120  assert(rawMeasurement != nullptr);
121  rawMeasurement->setTrackPoint(this);
122  rawMeasurements_.push_back(rawMeasurement);
123  }
124  void deleteRawMeasurements();
126  void setFitterInfo(genfit::AbsFitterInfo *fitterInfo);
127  void deleteFitterInfo(const AbsTrackRep *rep)
128  {
129  delete fitterInfos_[rep];
130  fitterInfos_.erase(rep);
131  }
132 
133  void setScatterer(ThinScatterer *scatterer) { thinScatterer_.reset(scatterer); }
134 
135  void Print(const Option_t * = "") const;
136 
144  void fixupRepsForReading();
145 
146  private:
147  double sortingParameter_;
148 
150  Track *track_;
151 
153  std::vector<AbsMeasurement *> rawMeasurements_; // Ownership
154 
155  std::map<const AbsTrackRep *, AbsFitterInfo *> fitterInfos_;
156 
163  std::vector<AbsFitterInfo *> vFitterInfos_;
164 
165 #ifndef __CINT__
166  boost::scoped_ptr<ThinScatterer> thinScatterer_; // Ownership
167 #else
168  class ThinScatterer *thinScatterer_;
169 #endif
170 
171  public:
172  ClassDef(TrackPoint, 1)
173 };
174 
175 } /* End of namespace genfit */
178 #endif // genfit_TrackPoint_h
void setTrack(Track *track)
Definition: TrackPoint.h:99
bool hasThinScatterer() const
Definition: TrackPoint.h:114
Collection of TrackPoint objects, AbsTrackRep objects and FitStatus objects.
Definition: Track.h:79
double getSortingParameter() const
Definition: TrackPoint.h:96
ThinScatterer * getMaterialInfo() const
Definition: TrackPoint.h:113
KalmanFitterInfo * getKalmanFitterInfo(const AbsTrackRep *rep=nullptr) const
Helper to avoid casting.
Abstract base class for a track representation.
Definition: AbsTrackRep.h:74
Thin or thick scatterer.
Definition: ThinScatterer.h:49
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:53
bool hasFitterInfo(const AbsTrackRep *rep) const
Definition: TrackPoint.h:111
void Print(const Option_t *="") const
unsigned int i
Definition: P4_F32vec4.h:33
void setSortingParameter(double sortingParameter)
Definition: TrackPoint.h:116
void addRawMeasurement(genfit::AbsMeasurement *rawMeasurement)
Takes ownership and sets this as measurement&#39;s trackPoint.
Definition: TrackPoint.h:118
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:61
Track * getTrack() const
Definition: TrackPoint.h:98
const std::vector< genfit::AbsMeasurement * > & getRawMeasurements() const
Definition: TrackPoint.h:101
void setScatterer(ThinScatterer *scatterer)
Definition: TrackPoint.h:133
unsigned int getNumRawMeasurements() const
Definition: TrackPoint.h:103
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:127
TrackPoint & operator=(TrackPoint)
bool hasRawMeasurements() const
Definition: TrackPoint.h:104
Collects information needed and produced by a AbsKalmanFitter implementations and is specific to one ...
Matrix inversion tools.
Definition: AbsBField.h:40