00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TGeoAtt
00013 #define ROOT_TGeoAtt
00014
00015 #ifndef ROOT_TObject
00016 #include "TObject.h"
00017 #endif
00018
00019
00020
00021
00022
00023
00024
00025 class TGeoAtt
00026 {
00027 public:
00028 enum {
00029 kBitMask = 0x00ffffff
00030 };
00031
00032 enum EGeoVisibilityAtt {
00033 kVisOverride = BIT(0),
00034 kVisNone = BIT(1),
00035 kVisThis = BIT(2),
00036 kVisDaughters = BIT(3),
00037 kVisOneLevel = BIT(4),
00038 kVisStreamed = BIT(5),
00039 kVisTouched = BIT(6),
00040 kVisOnScreen = BIT(7),
00041 kVisContainers = BIT(12),
00042 kVisOnly = BIT(13),
00043 kVisBranch = BIT(14),
00044 kVisRaytrace = BIT(15)
00045 };
00046
00047 enum EGeoActivityAtt {
00048 kActOverride = BIT(8),
00049 kActNone = BIT(9),
00050 kActThis = BIT(10),
00051 kActDaughters = BIT(11)
00052 };
00053
00054 enum EGeoOptimizationAtt {
00055 kUseBoundingBox = BIT(16),
00056 kUseVoxels = BIT(17),
00057 kUseGsord = BIT(18)
00058 };
00059 enum EGeoSavePrimitiveAtt {
00060 kSavePrimitiveAtt = BIT(19),
00061 kSaveNodesAtt = BIT(20)
00062 };
00063 protected :
00064
00065 UInt_t fGeoAtt;
00066 public:
00067
00068 TGeoAtt();
00069 TGeoAtt(Option_t *vis_opt, Option_t *activity_opt="", Option_t *optimization_opt="");
00070
00071 virtual ~TGeoAtt();
00072
00073 void SetAttBit(UInt_t f) {fGeoAtt |= f & kBitMask;}
00074 void SetAttBit(UInt_t f, Bool_t set) {(set)?SetAttBit(f):ResetAttBit(f);};
00075 void ResetAttBit(UInt_t f) {fGeoAtt &= ~(f & kBitMask);}
00076 Bool_t TestAttBit(UInt_t f) const {return (Bool_t)((fGeoAtt & f) != 0);}
00077
00078 void SetVisRaytrace(Bool_t flag=kTRUE) {SetAttBit(kVisRaytrace, flag);}
00079 void SetVisBranch();
00080 virtual void SetVisContainers(Bool_t flag=kTRUE);
00081 virtual void SetVisLeaves(Bool_t flag=kTRUE);
00082 virtual void SetVisOnly(Bool_t flag=kTRUE);
00083 virtual void SetVisibility(Bool_t vis=kTRUE);
00084 void SetVisDaughters(Bool_t vis=kTRUE);
00085 void SetVisStreamed(Bool_t vis=kTRUE);
00086 void SetVisTouched(Bool_t vis=kTRUE);
00087 void SetActivity(Bool_t flag=kTRUE) {SetAttBit(kActThis, flag);}
00088 void SetActiveDaughters(Bool_t flag=kTRUE) {SetAttBit(kActDaughters,flag);}
00089
00090 void SetOptimization(Option_t *option);
00091
00092
00093 Bool_t IsActive() const {return TestAttBit(kActThis);}
00094 Bool_t IsActiveDaughters() const {return TestAttBit(kActDaughters);}
00095 Bool_t IsVisRaytrace() const {return TestAttBit(kVisRaytrace);}
00096 Bool_t IsVisible() const {return TestAttBit(kVisThis);}
00097 Bool_t IsVisDaughters() const {return TestAttBit(kVisDaughters);}
00098 Bool_t IsVisBranch() const {return TestAttBit(kVisBranch);}
00099 Bool_t IsVisContainers() const {return TestAttBit(kVisContainers);}
00100 Bool_t IsVisLeaves() const {return !TestAttBit(kVisContainers | kVisOnly | kVisBranch);}
00101 Bool_t IsVisOnly() const {return TestAttBit(kVisOnly);}
00102
00103 Bool_t IsVisStreamed() const {return TestAttBit(kVisStreamed);}
00104 Bool_t IsVisTouched() const {return TestAttBit(kVisTouched);}
00105
00106 ClassDef(TGeoAtt, 1)
00107 };
00108
00109 #endif
00110