#ifndef ROOT_TGeoAtt
#define ROOT_TGeoAtt
#ifndef ROOT_TObject
#include "TObject.h"
#endif
class TGeoAtt
{
public:
enum {
kBitMask = 0x00ffffff
};
enum EGeoVisibilityAtt {
kVisOverride = BIT(0),
kVisNone = BIT(1),
kVisThis = BIT(2),
kVisDaughters = BIT(3),
kVisOneLevel = BIT(4),
kVisStreamed = BIT(5),
kVisTouched = BIT(6),
kVisOnScreen = BIT(7),
kVisContainers = BIT(12),
kVisOnly = BIT(13),
kVisBranch = BIT(14),
kVisRaytrace = BIT(15)
};
enum EGeoActivityAtt {
kActOverride = BIT(8),
kActNone = BIT(9),
kActThis = BIT(10),
kActDaughters = BIT(11)
};
enum EGeoOptimizationAtt {
kUseBoundingBox = BIT(16),
kUseVoxels = BIT(17),
kUseGsord = BIT(18)
};
enum EGeoSavePrimitiveAtt {
kSavePrimitiveAtt = BIT(19),
kSaveNodesAtt = BIT(20)
};
protected :
UInt_t fGeoAtt;
public:
TGeoAtt();
TGeoAtt(Option_t *vis_opt, Option_t *activity_opt="", Option_t *optimization_opt="");
virtual ~TGeoAtt();
void SetAttBit(UInt_t f) {fGeoAtt |= f & kBitMask;}
void SetAttBit(UInt_t f, Bool_t set) {(set)?SetAttBit(f):ResetAttBit(f);};
void ResetAttBit(UInt_t f) {fGeoAtt &= ~(f & kBitMask);}
Bool_t TestAttBit(UInt_t f) const {return (Bool_t)((fGeoAtt & f) != 0);}
void SetVisRaytrace(Bool_t flag=kTRUE) {SetAttBit(kVisRaytrace, flag);}
void SetVisBranch();
virtual void SetVisContainers(Bool_t flag=kTRUE);
virtual void SetVisLeaves(Bool_t flag=kTRUE);
virtual void SetVisOnly(Bool_t flag=kTRUE);
virtual void SetVisibility(Bool_t vis=kTRUE);
void SetVisDaughters(Bool_t vis=kTRUE);
void SetVisStreamed(Bool_t vis=kTRUE);
void SetVisTouched(Bool_t vis=kTRUE);
void SetActivity(Bool_t flag=kTRUE) {SetAttBit(kActThis, flag);}
void SetActiveDaughters(Bool_t flag=kTRUE) {SetAttBit(kActDaughters,flag);}
void SetOptimization(Option_t *option);
Bool_t IsActive() const {return TestAttBit(kActThis);}
Bool_t IsActiveDaughters() const {return TestAttBit(kActDaughters);}
Bool_t IsVisRaytrace() const {return TestAttBit(kVisRaytrace);}
Bool_t IsVisible() const {return TestAttBit(kVisThis);}
Bool_t IsVisDaughters() const {return TestAttBit(kVisDaughters);}
Bool_t IsVisBranch() const {return TestAttBit(kVisBranch);}
Bool_t IsVisContainers() const {return TestAttBit(kVisContainers);}
Bool_t IsVisLeaves() const {return !TestAttBit(kVisContainers | kVisOnly | kVisBranch);}
Bool_t IsVisOnly() const {return TestAttBit(kVisOnly);}
Bool_t IsVisStreamed() const {return TestAttBit(kVisStreamed);}
Bool_t IsVisTouched() const {return TestAttBit(kVisTouched);}
ClassDef(TGeoAtt, 1)
};
#endif