00001 #ifndef STAR_StuDraw3DMuEvent
00002 #define STAR_StuDraw3DMuEvent
00003
00004
00005
00006
00007 #include "StDraw3D.h"
00008 #include "StEnumerations.h"
00009
00010
00011 class StMuTrack;
00012 class StMuDst;
00013 class EEmcGeomSimple;
00014 class StMuEmcCollection;
00015
00018 enum EStuDraw3DMuEvent {
00019 kUnusedHitsOnly=-1
00020 ,kUsedHits=0
00021 ,kUsedHitsTracks=1
00022 ,kTracksOnly=2
00023 };
00024
00025 class StEmcTowerColor {
00026 private:
00027 StDraw3DStyle fStyle;
00028 StEmcTowerColor();
00029
00030
00031 public:
00032 StEmcTowerColor(float energy);
00033 virtual ~StEmcTowerColor() {}
00034 virtual const StDraw3DStyle& operator()() const { return fStyle;}
00035 };
00036
00037
00040
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 class StuDraw3DMuEvent : public virtual StDraw3D
00073 {
00074 private:
00075 EEmcGeomSimple *fEndcapGeom;
00076
00077 StuDraw3DMuEvent(const StuDraw3DMuEvent&):StDraw3D(){;}
00078 void operator=(const StuDraw3DMuEvent&){;}
00079
00080 static StuDraw3DMuEvent *gMuEventDisplay;
00081 protected:
00082 EEmcGeomSimple *EndcapGeom();
00083
00084 public:
00085 StuDraw3DMuEvent(const char *detectorName="TPC",TVirtualPad *pad = 0);
00086 virtual ~StuDraw3DMuEvent();
00087 static StuDraw3DMuEvent *Display();
00088 virtual void Tracks(StTrackType type=global);
00089 virtual TObject *Track(const StMuTrack &track
00090 , Color_t col
00091 , Style_t sty= Style_t(-1)
00092 , Size_t siz = Size_t (-1));
00093 virtual TObject *Track(const StMuTrack &track, EDraw3DStyle sty=kPrimaryTrack);
00094 virtual TObject *TrackInOut(const StMuTrack &track, Bool_t in
00095 , Color_t col= Color_t(-1)
00096 , Style_t sty= Style_t(-1)
00097 , Size_t siz = Size_t (-1));
00098 virtual TObject *TrackInOut(const StMuTrack &track, EDraw3DStyle sty=kUsedHit, Bool_t in=kTRUE);
00099 virtual void Endcaps(Style_t sty=0);
00100 virtual void Endcaps(const StMuEmcCollection &e, Style_t sty=0);
00101 virtual TObject *EmcHit(Int_t emcHitsSoftId, Color_t col,Style_t sty,Size_t siz, const char *detIdt="bemc");
00102 virtual TObject *EmcHit(Int_t emcHitsSoftId, float energy, const char *detIdt="bemc");
00103 template <class Predicate>
00104 TObject *EmcHit(Int_t emcHitsSoftId, const Predicate &sty, const char *detIdt="bemc");
00105 ClassDef(StuDraw3DMuEvent,0);
00106 };
00107
00108
00109 template <class Predicate>
00110 TObject *StuDraw3DMuEvent::EmcHit(Int_t emcHitsSoftId, const Predicate &sty, const char *detIdt)
00111 {
00112 return EmcHit(emcHitsSoftId, sty().Col(),sty().Sty(), sty().Siz(), detIdt);
00113 }
00114
00115
00116 #endif