StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StiLocalTrackSeedFinder.h
1 #ifndef StiLocalTrackSeedFinder_HH
4 #define StiLocalTrackSeedFinder_HH
5 #include "Stiostream.h"
6 using std::ostream;
7 #include <vector>
8 using std::vector;
9 #include "Sti/Base/EditableParameters.h"
10 //VP#include "Sti/StiHelixCalculator.h"
11 //VP#include "Sti/StiHelixFitter.h"
12 #include "Sti/StiTrackFinder.h"
13 #include "Sti/StiSortedHitIterator.h"
14 #include "Sti/StiMasterDetectorBuilder.h"
15 #include "StDetectorDbMaker/StiLocalTrackSeedFinderParameters.h"
16 #include "Sti/StiDefaultTrackFilter.h"
17 #include "StDetectorDbMaker/StiLocalTrackSeedFinderParameters.h"
18 
19 class StiDetector;
20 
30 {
31 public:
32  StiLocalTrackSeedFinder(const string& name,
33  const string& description,
34  Factory<StiKalmanTrack> * trackFactory,
35  StiHitContainer * hitContainer,
36  StiDetectorContainer * detectorContainer);
37  virtual ~StiLocalTrackSeedFinder();
38  StiTrack* findTrack(double rMin=0);
39  virtual void clear(){reset();};
40  virtual void initialize(){};
41  virtual void print() const;
43  virtual void reset();
44  virtual void unset(){;}
45  bool isReset();
46 
47  void findTracks(){};
48  bool find(StiTrack *track, int direction,double rmin=0){return false;};
49 
50  friend ostream& operator<<(ostream& os, const StiLocalTrackSeedFinder & f);
51 
52 protected:
55  bool extendHit(StiHit & hit);
57  bool extrapolate();
59  //Perform helix fit, Perform helix calculation (doesn't assume any vertex)
60  bool fit(StiKalmanTrack*);
61 
62  bool _reset;
63  Factory<StiKalmanTrack> * _trackFactory;
64  StiHitContainer * _hitContainer;
65  StiDetectorContainer * _detectorContainer;
66 
67  StiSortedHitIterator _hitIter;
68  vector<StiHit*> _seedHits;
69  StiDefaultTrackFilter _trackFilter;
70  double fRxyMin;
71  private:
72  //The following are not implemented, as they are non-trivial
73  //and the default compiler generated versions will be wrong.
77  //Count how many hits we've skipped in extrapolation
78  int _skipped;
79 };
80 
81 
83 {
84 // cout <<"StiLocalTrackSeedFinder::reset() -I- Started"<<endl;
85  _reset = true;
86 // cout <<"StiLocalTrackSeedFinder::reset() -I- Done"<<endl;
87 }
88 
89 inline bool StiLocalTrackSeedFinder::isReset()
90 {
91  bool state = _reset;
92  if (_reset) _reset = false;
93  return state;
94 }
95 
97 {
98  return &_trackFilter;
99 }
100 
101 #endif
Definition of Kalman Track.
Abstract definition of a Track.
Definition: StiTrack.h:59
StiKalmanTrack * initializeTrack(StiKalmanTrack *)
Definition: StiHit.h:51
StiKalmanTrack * makeTrack(StiHit *hit)
virtual void reset()
Reset the tracker.
Filter< StiTrack > * getTrackFilter()
Get the track filter currently used by the tracker.
StiTrack * findTrack(double rMin=0)
bool extendHit(StiHit &hit)
Extend hit looking for closest neighbor in z.
virtual void clear()
Reset the tracker.
virtual void initialize()
Initialize the finder.
bool find(StiTrack *track, int direction, double rmin=0)
Find/extend the given track, in the given direction.
An abstract class defining the interface to the track finder.
void findTracks()
Find all tracks of the currently loaded event.
bool extrapolate()
Extrapolate to next layer using straight line, add hit closest in z.