GFTrack.h
Go to the documentation of this file.
1 /* Copyright 2008-2010, Technische Universitaet Muenchen,
2  Authors: Christian Hoeppner & Sebastian Neubert
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 /** @addtogroup genfit
20  * @{
21  */
22 
23 
24 #ifndef GFTRACK_H
25 #define GFTRACK_H
26 
27 #include <vector>
28 
31 
32 #include "TObjArray.h"
33 
37 
38 class TVirtualGeoTrack;
39 
40 namespace genf { class GFAbsRecoHit; }
41 
42 /** @brief Track object for genfit. genfit algorithms work on these objects.
43  *
44  * @author Christian H&ouml;ppner (Technische Universit&auml;t M&uuml;nchen, original author)
45  * @author Sebastian Neubert (Technische Universit&auml;t M&uuml;nchen, original author)
46  *
47  * Can be used as transient (only in memory) or
48  * persistent (written to ROOT-file) object.
49  *
50  * A GFTrack contains a collection of RecoHits plus a collection of
51  * track representations. The GFTrackCand member is a helper object to store the
52  * indices of the hits in the GFTrack.
53  *
54  * For a GFTrack one so called "cardinal representation" can be defined. It is
55  * that track representation that is used to access the fit results. Usually
56  * one will after the fit choose the best fitting representation to be
57  * the cardinal rep.
58  *
59  * The GFTrack takes ownership over the GFAbsRecoHit pointers it holds.
60  */
61 
62 namespace genf {
63 
64 class GFTrack : public TObject {
65 private:
66 
67 
68  /** @brief Collection of track representations
69  *
70  * this array is only to be added to in the addTrackRep method
71  * because the synchronized construction of bookkeeping objects
72  * and repAtHit array is ensured there. NEVER delete elements from
73  * this array!
74  * If this functionality will be need, it has to be done synchronized
75  * with bookkeeping!!
76  */
77  TObjArray* fTrackReps; //->
78 
79  /** @brief Collection of RecoHits
80  */
81  std::vector<GFAbsRecoHit*> fHits;
82  //!
83 
84  /** @brief Collection of Bookeeping objects for failed hits
85  * in every trackrep
86  */
87  std::vector< GFBookkeeping* > fBookkeeping;
88 
89  /** @brief repAtHit keeps track of at which hit index which rep
90  * is currently defined, to avoid null extrapolations
91  */
92  std::vector<int> fRepAtHit;
93 
94  /** @brief Helper to store the indices of the hits in the track.
95  * See GFTrackCand for details.
96  */
97  GFTrackCand fCand; // list of hits
98  // Cov and Updates at each step (on last iteration!) as calculated
99  // in GFKalman.cxx.
100  std::vector < TMatrixT<Double_t> > fHitMeasCov;
101  std::vector < TMatrixT<Double_t> > fHitUpdate;
102  std::vector < TMatrixT<Double_t> > fHitState;
103  std::vector < Double_t > fHitChi2;
104  std::vector < TMatrixT<Double_t> > fHitCov7x7;
105  std::vector < TMatrixT<Double_t> > fHitCov;
106  std::vector < TVector3 > fHitPlaneXYZ;
107  std::vector < TVector3 > fHitPlaneUxUyUz;
108  std::vector < TVector3 > fHitPlaneU;
109  std::vector < TVector3 > fHitPlaneV;
110 
111  int fPDG;
112 
113  static const int fDefNumTrackReps = 10; //!
114  unsigned int fCardinal_rep; // THE selected rep, default=0;
115 
116  unsigned int fNextHitToFit;
117 
118 public:
119 
120  /** @brief Default constructor -- needed for compatibility with ROOT */
121  GFTrack();
122 
123  /** @brief Copy constructor */
124  GFTrack(const GFTrack&);
125 
126  /** @brief assignement operator */
127  GFTrack& operator=(const GFTrack&);
128 
129  /** @brief Initializing constructor
130  *
131  * A track needs at least one track representation to be useable.
132  * The given track representation has to contain starting values for the fit!
133  */
135 
136  virtual ~GFTrack();
137 
138  // -----------------------
139  // Accessors
140  // -----------------------
141 
142  /** @brief Resets the GFTrack -- deletes RecoHits!
143  */
144  void reset(); // deletes the RecoHits!
145 
146  /** @brief return the number of failed Hits in track fit
147  * repId == -1 will use cardinal rep
148  */
149  int getFailedHits(int repId=-1){
150  int theRep;
151  if(repId==-1) theRep=fCardinal_rep;
152  else theRep = repId;
153  return fBookkeeping.at(theRep)->getNumFailed();
154  }
155 
156  std::vector<GFAbsRecoHit*> getHits() {return fHits;}
157 
158  const GFTrackCand& getCand() const {return fCand;}
159 
160  GFAbsRecoHit* getHit(int id) const {
161  return fHits.at(id);
162  }
163 
164  unsigned int getNumHits() const {
165  return fHits.size();
166  }
167 
168  /** @brief Merge two GFTracks. Only hits will be merged.
169  *
170  * All hits from trk will be merged into this GFTrack.
171  * trk will be empty afterwards.
172  *
173  * Kalman::continueTrack can be used to include the newly added hits
174  * in the fit.
175  *
176  * Note that the new hits are inserted at the end of the present track!
177  */
178  void mergeHits(GFTrack* trk);
179 
180  /** @brief Clear hit vector. Note that hits will not be deleted!
181  *
182  * Be carefull not to create memory leaks here.
183  */
184  void releaseHits(){fHits.clear();}
185 
186  /** @brief Accessor for fNextHitToFit
187  */
188  unsigned int getNextHitToFit() const {return fNextHitToFit;}
189 
190  /** @brief Set next hit to be used in a fit
191  */
192  void setNextHitToFit(unsigned int i) {fNextHitToFit=i;}
193 
194  /** @brief Accessor for track representations
195  */
196  GFAbsTrackRep* getTrackRep(int id) const {
197  return reinterpret_cast<GFAbsTrackRep*>(fTrackReps->At(id));
198  }
199 
200  /** @brief Get number of track represenatations
201  */
202  unsigned int getNumReps() const {
203  return fTrackReps->GetEntriesFast();
204  }
205 
206  /** @brief Get cardinal track representation
207  *
208  * The user has to choose which track rep should be considered the
209  * best one after the fit. Usually the track representation giving the
210  * smallest chi2 is choosen. By default the first in the list is returned.
211  */
212  GFAbsTrackRep* getCardinalRep() const {return ((GFAbsTrackRep*)fTrackReps->At(fCardinal_rep));}
213 
214 
215  /** @brief Get momentum at the present position
216  *
217  * Cardinal representation is used.
218  */
219  TVector3 getMom() const {return getCardinalRep()->getMom();}
220 
221  /** @brief Get momentum at GFDetPlane
222  *
223  * The track will be extrapolated to GFDetPlane to get the momentum there.
224  * The track will not be modified. Cardinal representation is used.
225  */
226  TVector3 getMom(const GFDetPlane& pl) const {return getCardinalRep()->getMom(pl);}
227 
228  /** @brief Get present position
229  *
230  * Cardinal representation is used.
231  */
232  TVector3 getPos() const {return getCardinalRep()->getPos();}
233 
234  /** @brief Get position at GFDetPlane
235  *
236  * The track will be extrapolated to GFDetPlane to get the position there.
237  * The track will not be modified. Cardinal representation is used.
238  */
239  TVector3 getPos(const GFDetPlane& pl) const {return getCardinalRep()->getPos(pl);}
240 
241  /** @brief Get position, momentum, and 6x6 covariance at current position
242  *
243  * Cardinal representation is used.
244  */
245  void getPosMomCov(TVector3& pos,TVector3& mom,TMatrixT<Double_t>& cov){
246  getCardinalRep()->getPosMomCov(pos,mom,cov);
247  }
248 
249  /** @brief Get position, momentum, and 6x6 covariance at GFDetPlane
250  *
251  * The track will be extrapolated to GFDetPlane to get everything there.
252  * The track will not be modified. Cardinal representation is used.
253  */
254  void getPosMomCov(const GFDetPlane& pl,TVector3& pos,TVector3& mom,TMatrixT<Double_t>& cov){
255  getCardinalRep()->getPosMomCov(pl,pos,mom,cov);
256  }
257 
258  /** @brief Get chi2
259  *
260  * Cardinal representation is used.
261  */
262  double getChiSqu() const {return getCardinalRep()->getChiSqu();}
263 
264  /** @brief Get NDF
265  *
266  * Cardinal representation is used.
267  */
268  unsigned int getNDF() const {return getCardinalRep()->getNDF();}
269 
270  /** @brief Get chi2/NDF
271  *
272  * Cardinal representation is used.
273  */
274  double getRedChiSqu() const {return getCardinalRep()->getRedChiSqu();}
275 
276  /** @brief Get charge from fit
277  *
278  * Cardinal representation is used.
279  */
280  double getCharge() const {return getCardinalRep()->getCharge();}
281 
282  /** @brief Fill TVirtualGeoTrack object Cardinal representation is used.
283  */
284  void fillGeoTrack(TVirtualGeoTrack* tr) const {fillGeoTrack(tr,fCardinal_rep);}
285 
286  /** @brief Fill TVirtualGeoTrack object with data from specified track rep
287  */
288  void fillGeoTrack(TVirtualGeoTrack* tr,unsigned int repid) const;
289 
290  // ---------------------
291  // Modifiers
292  // ---------------------
293 
294  void addFailedHit(unsigned int irep,unsigned int id){
295  fBookkeeping.at(irep)->addFailedHit(id);
296  }
297 
298  /** @brief deprecated!
299  */
300  inline void addHit(GFAbsRecoHit* theHit) {
301  fHits.push_back(theHit);
302  }
303 
304  /** @brief Add single hit. Updates the GFTrackCand
305  */
306  void addHit(GFAbsRecoHit* theHit,
307  unsigned int detId,
308  unsigned int hitId,
309  double rho=0.,
310  unsigned int planeId=0){
311  fHits.push_back(theHit);
312  fCand.addHit(detId,hitId,rho,planeId);
313  }
314 
315  /** @brief Add collection of hits
316  *
317  * This is the standard way to fill the track with hit data
318  */
319  void addHitVector(std::vector<GFAbsRecoHit*> hits) {
320  fHits = hits;
321  }
322 
323  /** @brief Add track represenation
324  *
325  * The given track representation has to contain starting values for fit!
326  */
327  void addTrackRep(GFAbsTrackRep* theTrackRep) {
328  if(fTrackReps==NULL)fTrackReps=new TObjArray(fDefNumTrackReps);
329  fTrackReps->Add(theTrackRep);
330  fBookkeeping.push_back( new GFBookkeeping() );
331  fRepAtHit.push_back(-1);
332  }
333 
334  //! get GFBookKeeping object for particular track rep (default is cardinal rep)
336  if(index==-1) return fBookkeeping.at(fCardinal_rep);
337  if ((unsigned int)index >= getNumReps())
338  throw GFException("genf::GFTrack::getBK(): index out of range", __LINE__, __FILE__).setFatal();
339  return fBookkeeping.at(index);
340  }
341 
342  //! set track candidate
343  void setCandidate(const GFTrackCand& cand, bool doreset=false);
344 
345  /** @brief Choose cardinal track represenatation
346  *
347  * @sa getCardinalRep
348  */
349  void setCardinalRep(unsigned int r){if((int)r<fTrackReps->GetEntriesFast())fCardinal_rep=r;}
350 
351  void setHitMeasuredCov(TMatrixT<Double_t> mat) {fHitMeasCov.push_back(mat);}
352  void setHitUpdate(TMatrixT<Double_t> mat) {fHitUpdate.push_back(mat);}
353  void setHitChi2(Double_t mat) {fHitChi2.push_back(mat);}
354  void setHitState(TMatrixT<Double_t> mat) {fHitState.push_back(mat);}
355  void setHitCov(TMatrixT<Double_t> mat) {fHitCov.push_back(mat);}
356  void setHitCov7x7(TMatrixT<Double_t> mat) {fHitCov7x7.push_back(mat);}
357  void setHitPlaneXYZ(TVector3 pl) { fHitPlaneXYZ.push_back(pl);}
358  void setHitPlaneUxUyUz(TVector3 pl) { fHitPlaneUxUyUz.push_back(pl);}
359  void setHitPlaneU(TVector3 pl) { fHitPlaneU.push_back(pl);}
360  void setHitPlaneV(TVector3 pl) { fHitPlaneV.push_back(pl);}
361  void setPDG(int pdgt) {fPDG = pdgt;}
362  std::vector < TMatrixT<Double_t> > getHitMeasuredCov() {return fHitMeasCov;}
363  std::vector < TMatrixT<Double_t> > getHitUpdate() {return fHitUpdate;}
364  std::vector < Double_t > getHitChi2() {return fHitChi2;}
365  std::vector < TMatrixT<Double_t> > getHitState() {return fHitState;}
366  std::vector < TMatrixT<Double_t> > getHitCov() {return fHitCov;}
367  std::vector < TMatrixT<Double_t> > getHitCov7x7() {return fHitCov;}
368  std::vector < TVector3 > getHitPlaneXYZ() {return fHitPlaneXYZ;}
369  std::vector < TVector3 > getHitPlaneUxUyUz() {return fHitPlaneUxUyUz;}
370  std::vector < TVector3 > getHitPlaneU() {return fHitPlaneU;}
371  std::vector < TVector3 > getHitPlaneV() {return fHitPlaneV;}
372 
373  int getPDG() {return fPDG;}
374  /** @brief Get residuals
375  *
376  * @param detId which detector?
377  * @param dim = index of coordinate to choose from resiudal vector
378  * @param rep which track representation?
379  * @param result results are written to this vector
380  */
381  void getResiduals(unsigned int detId, // which detector?
382  unsigned int dim, // which projection?
383  unsigned int rep, // which trackrep ?
384  std::vector<double>& result);
385 
386 
387  /** @brief set the hit index at which plane,state&cov of rep irep is defined
388  */
389  void setRepAtHit(unsigned int irep,int ihit){
390  if (irep >= getNumReps())
391  throw GFException("genf::GFTrack::setRepAtHit(): index out of range", __LINE__, __FILE__).setFatal();
392  fRepAtHit.at(irep) = ihit;
393  }
394 
395  /** @brief get the hit index at which plane,state&cov of rep irep is defined
396  */
397  int getRepAtHit(unsigned int irep){
398  if (irep >= getNumReps())
399  throw GFException("genf::GFTrack::getRepAtHit(): index out of range", __LINE__, __FILE__).setFatal();
400  return fRepAtHit.at(irep);
401  }
402 
403  /** @brief clear the hit indices at which plane,state&cov of reps are defined
404  */
406  for(unsigned int i=0;i<getNumReps();++i){
407  fRepAtHit.at(i)=-1;
408  }
409  }
410 
411  /** @brief print bookkeeping
412  */
413  void printBookkeeping(std::ostream& out = std::cout) const;
414 
415  void Print(std::ostream& out = std::cout) const;
416 
418  for(unsigned int i=0;i<getNumReps();++i){
419  fBookkeeping.at(i)->clearAll();
420  }
421  }
422 
424  for(unsigned int i=0;i<getNumReps();++i){
425  fBookkeeping.at(i)->clearFailedHits();
426  }
427  }
428 
429  //! use planeId information of GFTrackCand and return by ref groups of hit ids which
430  //! are in the same planes.
431  void getHitsByPlane(std::vector<std::vector<int>*>& retVal);
432 
433 
434 private:
435  virtual void Print(Option_t*) const
436  { throw std::logic_error(std::string(__func__) + "::Print(Option_t*) not available"); }
437 
438  //public:
439  //ClassDef(GFTrack,1)
440 };
441 } // namespace genf
442 
443 #endif
444 
445 /** @} */
void clearRepAtHit()
clear the hit indices at which plane,state&cov of reps are defined
Definition: GFTrack.h:405
unsigned int getNDF() const
std::vector< TVector3 > getHitPlaneUxUyUz()
Definition: GFTrack.h:369
std::vector< TMatrixT< Double_t > > getHitUpdate()
Definition: GFTrack.h:363
std::vector< Double_t > fHitChi2
Definition: GFTrack.h:103
void printBookkeeping(std::ostream &out=std::cout) const
print bookkeeping
Definition: GFTrack.cxx:201
static QCString result
GFTrack & operator=(const GFTrack &)
assignement operator
Definition: GFTrack.cxx:72
std::string string
Definition: nybbler.cc:12
std::vector< TMatrixT< Double_t > > getHitState()
Definition: GFTrack.h:365
void setNextHitToFit(unsigned int i)
Set next hit to be used in a fit.
Definition: GFTrack.h:192
TObjArray * fTrackReps
Collection of track representations.
Definition: GFTrack.h:77
void setRepAtHit(unsigned int irep, int ihit)
set the hit index at which plane,state&cov of rep irep is defined
Definition: GFTrack.h:389
Generic Interface to magnetic fields in GENFIT.
Definition: GFAbsBField.h:35
TVector3 getPos(const GFDetPlane &pl) const
Get position at GFDetPlane.
Definition: GFTrack.h:239
virtual TVector3 getPos(const GFDetPlane &pl)=0
struct vector vector
GFAbsTrackRep * getTrackRep(int id) const
Accessor for track representations.
Definition: GFTrack.h:196
std::vector< TVector3 > getHitPlaneXYZ()
Definition: GFTrack.h:368
std::vector< TMatrixT< Double_t > > fHitUpdate
Definition: GFTrack.h:101
std::vector< TMatrixT< Double_t > > getHitCov()
Definition: GFTrack.h:366
std::vector< TMatrixT< Double_t > > fHitState
Definition: GFTrack.h:102
virtual void getPosMomCov(const GFDetPlane &pl, TVector3 &pos, TVector3 &mom, TMatrixT< Double_t > &cov)
method which gets position, momentum and 6x6 covariance matrix
unsigned int fNextHitToFit
Definition: GFTrack.h:116
std::vector< int > fRepAtHit
repAtHit keeps track of at which hit index which rep is currently defined, to avoid null extrapolatio...
Definition: GFTrack.h:92
std::vector< TMatrixT< Double_t > > fHitCov7x7
Definition: GFTrack.h:104
Base Class for genfit track representations. Defines interface for track parameterizations.
Definition: GFAbsTrackRep.h:83
std::vector< TVector3 > fHitPlaneV
Definition: GFTrack.h:109
void fillGeoTrack(TVirtualGeoTrack *tr) const
Fill TVirtualGeoTrack object Cardinal representation is used.
Definition: GFTrack.h:284
void setCardinalRep(unsigned int r)
Choose cardinal track represenatation.
Definition: GFTrack.h:349
void setHitState(TMatrixT< Double_t > mat)
Definition: GFTrack.h:354
TVector3 getPos() const
Get present position.
Definition: GFTrack.h:232
GFAbsTrackRep * getCardinalRep() const
Get cardinal track representation.
Definition: GFTrack.h:212
GFTrackCand fCand
Helper to store the indices of the hits in the track. See GFTrackCand for details.
Definition: GFTrack.h:97
std::vector< TVector3 > getHitPlaneV()
Definition: GFTrack.h:371
virtual TVector3 getMom(const GFDetPlane &pl)=0
std::vector< Double_t > getHitChi2()
Definition: GFTrack.h:364
unsigned int getNumReps() const
Get number of track represenatations.
Definition: GFTrack.h:202
void setHitMeasuredCov(TMatrixT< Double_t > mat)
Definition: GFTrack.h:351
void addFailedHit(unsigned int irep, unsigned int id)
Definition: GFTrack.h:294
GFTrack()
Default constructor – needed for compatibility with ROOT.
Definition: GFTrack.cxx:31
virtual ~GFTrack()
Definition: GFTrack.cxx:37
void setPDG(int pdgt)
Definition: GFTrack.h:361
GFAbsRecoHit * getHit(int id) const
Definition: GFTrack.h:160
int getRepAtHit(unsigned int irep)
get the hit index at which plane,state&cov of rep irep is defined
Definition: GFTrack.h:397
void setHitPlaneV(TVector3 pl)
Definition: GFTrack.h:360
void releaseHits()
Clear hit vector. Note that hits will not be deleted!
Definition: GFTrack.h:184
int getFailedHits(int repId=-1)
return the number of failed Hits in track fit repId == -1 will use cardinal rep
Definition: GFTrack.h:149
unsigned int fCardinal_rep
Definition: GFTrack.h:114
void setHitPlaneUxUyUz(TVector3 pl)
Definition: GFTrack.h:358
void getPosMomCov(const GFDetPlane &pl, TVector3 &pos, TVector3 &mom, TMatrixT< Double_t > &cov)
Get position, momentum, and 6x6 covariance at GFDetPlane.
Definition: GFTrack.h:254
double getChiSqu() const
Get chi2.
Definition: GFTrack.h:262
void setHitChi2(Double_t mat)
Definition: GFTrack.h:353
double getRedChiSqu() const
Get chi2/NDF.
Definition: GFTrack.h:274
void Print(std::ostream &out=std::cout) const
Definition: GFTrack.cxx:210
std::vector< GFAbsRecoHit * > getHits()
Definition: GFTrack.h:156
virtual double getCharge() const =0
void getResiduals(unsigned int detId, unsigned int dim, unsigned int rep, std::vector< double > &result)
Get residuals.
Definition: GFTrack.cxx:169
GFBookkeeping * getBK(int index=-1)
get GFBookKeeping object for particular track rep (default is cardinal rep)
Definition: GFTrack.h:335
std::vector< TVector3 > getHitPlaneU()
Definition: GFTrack.h:370
void setHitCov7x7(TMatrixT< Double_t > mat)
Definition: GFTrack.h:356
void getPosMomCov(TVector3 &pos, TVector3 &mom, TMatrixT< Double_t > &cov)
Get position, momentum, and 6x6 covariance at current position.
Definition: GFTrack.h:245
void mergeHits(GFTrack *trk)
Merge two GFTracks. Only hits will be merged.
Definition: GFTrack.cxx:126
std::vector< TMatrixT< Double_t > > fHitCov
Definition: GFTrack.h:105
unsigned int getNumHits() const
Definition: GFTrack.h:164
std::vector< TMatrixT< Double_t > > getHitCov7x7()
Definition: GFTrack.h:367
std::vector< TMatrixT< Double_t > > fHitMeasCov
Definition: GFTrack.h:100
std::vector< TVector3 > fHitPlaneXYZ
Definition: GFTrack.h:106
void addHitVector(std::vector< GFAbsRecoHit * > hits)
Add collection of hits.
Definition: GFTrack.h:319
void clearFailedHits()
Definition: GFTrack.h:423
unsigned int getNDF() const
Get NDF.
Definition: GFTrack.h:268
std::vector< TVector3 > fHitPlaneU
Definition: GFTrack.h:108
void setHitCov(TMatrixT< Double_t > mat)
Definition: GFTrack.h:355
void reset()
Resets the GFTrack – deletes RecoHits!
Definition: GFTrack.cxx:111
std::vector< GFAbsRecoHit * > fHits
Collection of RecoHits.
Definition: GFTrack.h:81
Exception class for error handling in GENFIT (provides storage for diagnostic information) ...
Definition: GFException.h:48
TVector3 getMom(const GFDetPlane &pl) const
Get momentum at GFDetPlane.
Definition: GFTrack.h:226
void setHitUpdate(TMatrixT< Double_t > mat)
Definition: GFTrack.h:352
virtual void Print(Option_t *) const
Definition: GFTrack.h:435
GFException & setFatal(bool b=true)
set fatal flag. if this is true, the fit stops for this current track repr.
Definition: GFException.h:78
void addHit(unsigned int detId, unsigned int hitId, double rho=0., unsigned int planeId=0)
Definition: GFTrackCand.cxx:49
void getHitsByPlane(std::vector< std::vector< int > * > &retVal)
Definition: GFTrack.cxx:220
const GFTrackCand & getCand() const
Definition: GFTrack.h:158
double getChiSqu() const
void addHit(GFAbsRecoHit *theHit)
deprecated!
Definition: GFTrack.h:300
double getCharge() const
Get charge from fit.
Definition: GFTrack.h:280
std::vector< TVector3 > fHitPlaneUxUyUz
Definition: GFTrack.h:107
void setHitPlaneXYZ(TVector3 pl)
Definition: GFTrack.h:357
void addHit(GFAbsRecoHit *theHit, unsigned int detId, unsigned int hitId, double rho=0., unsigned int planeId=0)
Add single hit. Updates the GFTrackCand.
Definition: GFTrack.h:306
int getPDG()
Definition: GFTrack.h:373
std::vector< GFBookkeeping * > fBookkeeping
Collection of Bookeeping objects for failed hits in every trackrep.
Definition: GFTrack.h:87
unsigned int getNextHitToFit() const
Accessor for fNextHitToFit.
Definition: GFTrack.h:188
static const int fDefNumTrackReps
Definition: GFTrack.h:113
void addTrackRep(GFAbsTrackRep *theTrackRep)
Add track represenation.
Definition: GFTrack.h:327
void setHitPlaneU(TVector3 pl)
Definition: GFTrack.h:359
double getRedChiSqu() const
returns chi2/ndf
void clearBookkeeping()
Definition: GFTrack.h:417
void setCandidate(const GFTrackCand &cand, bool doreset=false)
set track candidate
Definition: GFTrack.cxx:140
std::vector< TMatrixT< Double_t > > getHitMeasuredCov()
Definition: GFTrack.h:362
TVector3 getMom() const
Get momentum at the present position.
Definition: GFTrack.h:219