00001 #ifndef STAR_StuDraw3DEvent
00002 #define STAR_StuDraw3DEvent
00003
00004
00005
00006
00007 #include "StDraw3D.h"
00008 #include "StThreeVector.hh"
00009 #include "StEnumerations.h"
00010
00011
00012 class StTrack;
00013 class StMeasuredPoint;
00014 class StEvent;
00015 class StEventHitIter;
00016 class StTpcHitCollection;
00017 class StSPtrVecTrackNode;
00018 class StEmcRawHit;
00019
00022 enum EStuDraw3DEvent {kUnusedHitsOnly=-1
00023 ,kUsedHits=0
00024 ,kUsedHitsTracks=1
00025 ,kTracksOnly=2
00026 };
00027
00030
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056 class StuDraw3DEvent : public virtual StDraw3D
00057 {
00058 private:
00059 StuDraw3DEvent(const StuDraw3DEvent&):StDraw3D(){;}
00060 void operator=(const StuDraw3DEvent&){;}
00061
00062 public:
00063 StuDraw3DEvent(const char *detectorName="TPC",TVirtualPad *pad = 0);
00064 virtual ~StuDraw3DEvent();
00065 static StuDraw3DEvent *Display();
00066 virtual void Tracks(const StEvent* event, StTrackType type=global);
00067 virtual void Tracks(const StSPtrVecTrackNode &tracks, StTrackType type=global);
00068 virtual TObject *Track(const StTrack &track
00069 , Color_t col
00070 , Style_t sty= Style_t(-1)
00071 , Size_t siz = Size_t (-1));
00072 virtual TObject *Track(const StTrack &track, EDraw3DStyle sty=kPrimaryTrack);
00073 virtual TObject *Hit(const StMeasuredPoint &hit
00074 , Color_t col
00075 , Style_t sty= Style_t(-1)
00076 , Size_t siz = Size_t (-1));
00077 virtual void Hits(const StEvent* event, EStuDraw3DEvent trackHitsOnly=kUsedHits, StTrackType type=global);
00078 virtual void Hits(StEventHitIter &iter);
00079 virtual void FtpcHits(const StEvent* event, EStuDraw3DEvent trackHitsOnly=kUsedHits, StTrackType type=global);
00080 virtual void Hits(const StTrack &track, EDraw3DStyle sty);
00081 virtual void Hits(const StTrack &track);
00082 virtual void Hits(const StTrack &track
00083 , Color_t col
00084 , Style_t sty= Style_t(-1)
00085 , Size_t siz = Size_t (-1));
00086 virtual TObject *Hit(const StMeasuredPoint &hit, EDraw3DStyle sty=kUsedHit);
00087 virtual TObject *Vertex(const StMeasuredPoint &hit
00088 , Color_t col
00089 , Style_t sty= Style_t(-1)
00090 , Size_t siz = Size_t (-1));
00091 virtual TObject *Vertex(const StMeasuredPoint &hit, EDraw3DStyle sty=kVtx);
00092 virtual TObject *TrackInOut(const StTrack &track, Bool_t in
00093 , Color_t col= Color_t(-1)
00094 , Style_t sty= Style_t(-1)
00095 , Size_t siz = Size_t (-1));
00096 virtual TObject *TrackInOut(const StTrack &track, EDraw3DStyle sty=kUsedHit, Bool_t in=kTRUE);
00097 template <class T> TObject *Vector(const StThreeVector<T> &vector
00098 , Color_t col
00099 , Style_t sty= Style_t(-1)
00100 , Size_t siz = Size_t (-1));
00101 virtual void EmcHits(const StEvent* event, const char *det="bemc");
00102 virtual TObject *EmcHit(Int_t emcHitsSoftId, Color_t col,Style_t sty,Size_t siz, const char *det="bemc" );
00103 virtual TObject *EmcHit(const StEmcRawHit &emcHit, Color_t col,Style_t sty,Size_t siz,const char *det="bemc");
00104 static void Wait();
00105 template <class T> TObject *Vector(const StThreeVector<T> &vector, EDraw3DStyle sty=kVtx);
00106 ClassDef(StuDraw3DEvent,0);
00107 };
00108
00109 extern StuDraw3DEvent *gEventDisplay;
00110
00111
00112 template<class T> TObject *StuDraw3DEvent::Vector(const StThreeVector<T> &vector
00113 , Color_t col, Style_t sty, Size_t siz)
00114 { return Point(vector.x(),vector.y(),vector.z(),col,sty,siz); }
00115
00116
00117 template <class T> TObject *StuDraw3DEvent::Vector(const StThreeVector<T> &vector, EDraw3DStyle sty)
00118 {
00119 const StDraw3DStyle &style = Style(sty);
00120 return Vector(vector.x(),vector.y(),vector.z(),style.Col(),style.Sty(),style.Siz());
00121 }
00122 #endif