00001 #ifndef __StG2TrackVertexMap_h__
00002 #define __StG2TrackVertexMap_h__
00003 #include <map>
00004 #include "Rtypes.h"
00005 #include "tables/St_g2t_track_Table.h"
00006 #include "tables/St_g2t_vertex_Table.h"
00007 class StG2TrackVertexMap {
00008 public:
00009 static StG2TrackVertexMap* instance(St_g2t_track *track=0, St_g2t_vertex *vertex = 0);
00010 void Reset(St_g2t_track *track, St_g2t_vertex *vertex);
00011 virtual ~StG2TrackVertexMap() {fgInstance = 0;}
00012 Int_t IdVertex(Int_t IdTrack) {return fTrack2Vertex.empty() ? -1 : fTrack2Vertex.find(IdTrack)->second;}
00013 Int_t IdParentTrack(Int_t IdVertex) {return fVertex2ParentTrack.empty() ? -1 : fVertex2ParentTrack.find(IdVertex)->second;}
00014 private:
00015 StG2TrackVertexMap(St_g2t_track *track=0, St_g2t_vertex *vertex = 0) : fTrack(track), fVertex(vertex) {Reset(track,vertex);}
00016 St_g2t_track *fTrack;
00017 St_g2t_vertex *fVertex;
00018 std::map<Int_t,Int_t> fTrack2Vertex;
00019 std::map<Int_t,Int_t> fVertex2ParentTrack;
00020 static StG2TrackVertexMap* fgInstance;
00021 };
00022 #endif