00001
00016 #ifndef StiToolkit_H
00017 #define StiToolkit_H 1
00018
00019 class StEvent;
00020 class StiDetector;
00021 class StiTrack;
00022 class StiKalmanTrack;
00023 class StiKalmanTrackNode;
00024 class StiNodeExt;
00025 class StiNodeInf;
00026 class StiHit;
00027 class StiDetectorBuilder;
00028 class StiMasterDetectorBuilder;
00029
00030 template<class Event> class StiDetectorGroup;
00031
00032 class StiDetectorGroups;
00033
00034 template<class Factorized> class Factory;
00035 template<class Filtered> class EditableFilter;
00036 template<class Filtered> class Filter;
00037 template<class T> class StiCompositeTreeNode;
00038 template<class X,class y> class StiHitLoader;
00039 template<class X,class y> class StiMasterHitLoader;
00040
00041
00042
00043
00044 class StiDetectorContainer;
00045 class StiHitContainer;
00046 class StiTrackContainer;
00047
00048 class StiTrackFinder;
00049 class StiTrackFinder;
00050 class StiTrackFitter;
00051 class StiTrackMerger;
00052 class StiVertexFinder;
00053
00054 class EditableParameter;
00055
00060 class StiToolkit
00061 {
00062 public:
00063 StiToolkit();
00064 virtual Factory<StiHit> * getHitFactory()=0;
00065 virtual Factory<StiKalmanTrack> * getTrackFactory()=0;
00066 virtual Factory<StiKalmanTrackNode> * getTrackNodeFactory()=0;
00067 virtual Factory<StiNodeExt> * getTrackNodeExtFactory()=0;
00068 virtual Factory<StiNodeInf> * getTrackNodeInfFactory()=0;
00069 virtual Factory<StiDetector> * getDetectorFactory()=0;
00070 virtual Factory<StiCompositeTreeNode<StiDetector> > * getDetectorNodeFactory()=0;
00071 virtual Factory<EditableParameter> * getParameterFactory()=0;
00072 virtual Factory< Filter<StiTrack> > * getTrackFilterFactory()=0;
00073
00074
00075 virtual StiMasterDetectorBuilder * getDetectorBuilder()=0;
00076 virtual StiDetectorContainer * getDetectorContainer()=0;
00077 virtual StiDetectorGroups * getDetectorGroups()=0;
00078 virtual StiHitContainer * getHitContainer()=0;
00079 virtual StiTrackContainer * getTrackContainer()=0;
00080
00081
00082 virtual StiTrackFinder * getTrackSeedFinder()=0;
00083 virtual StiTrackFinder * getTrackFinder()=0;
00084 virtual StiTrackFitter * getTrackFitter()=0;
00085 virtual StiTrackMerger * getTrackMerger()=0;
00086 virtual StiVertexFinder * getVertexFinder()=0;
00087
00088
00089 virtual StiHitLoader<StEvent,StiDetectorBuilder> * getHitLoader()=0;
00090
00091
00092
00093 virtual void add(StiDetectorGroup<StEvent>* detectorGroup)=0;
00094
00095 virtual void setEvaluatorEnabled(bool)=0;
00096 virtual bool isEvaluatorEnabled() const=0;
00097
00098 virtual EditableFilter<StiHit> * getLoaderHitFilter()=0;
00099 virtual EditableFilter<StiTrack> * getLoaderTrackFilter()=0;
00100 virtual EditableFilter<StiTrack> * getFinderTrackFilter()=0;
00101 virtual void setLoaderHitFilter(EditableFilter<StiHit> *)=0;
00102 virtual void setLoaderTrackFilter(EditableFilter<StiTrack> *)=0;
00103 virtual void setFinderTrackFilter(EditableFilter<StiTrack> *)=0;
00104
00105 virtual int getTruth(const StiHit *hit)=0;
00106
00107 static void setToolkit(StiToolkit*toolkit);
00108 static StiToolkit *instance();
00109 static void kill();
00110
00111 protected:
00112
00113 static StiToolkit * _instance;
00114 };
00115
00116 #endif
00117