TGeoAtt.h

Go to the documentation of this file.
00001 // @(#)root/geom:$Id: TGeoAtt.h 21425 2007-12-17 15:59:27Z brun $
00002 // Author: Andrei Gheata   01/11/01
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
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 // TGeoAtt - visualization and tracking attributes for volumes and nodes  //
00022 //                                                                        //
00023 ////////////////////////////////////////////////////////////////////////////
00024 
00025 class TGeoAtt
00026 {
00027 public:
00028   enum {
00029       kBitMask          = 0x00ffffff        // bit mask
00030    };
00031 
00032    enum EGeoVisibilityAtt {
00033       kVisOverride      = BIT(0),           // volume's vis. attributes are overidden
00034       kVisNone          = BIT(1),           // the volume/node is invisible, as well as daughters
00035       kVisThis          = BIT(2),           // this volume/node is visible
00036       kVisDaughters     = BIT(3),           // all leaves are visible
00037       kVisOneLevel      = BIT(4),           // first level daughters are visible
00038       kVisStreamed      = BIT(5),           // true if attributes have been streamed
00039       kVisTouched       = BIT(6),           // true if attributes are changed after closing geom
00040       kVisOnScreen      = BIT(7),           // true if volume is visible on screen
00041       kVisContainers    = BIT(12),          // all containers visible
00042       kVisOnly          = BIT(13),          // just this visible
00043       kVisBranch        = BIT(14),          // only a given branch visible
00044       kVisRaytrace      = BIT(15)           // raytracing flag
00045    };                          // visibility attributes
00046 
00047    enum EGeoActivityAtt   {
00048       kActOverride      = BIT(8),           // volume's activity attributes are overidden
00049       kActNone          = BIT(9),           // the volume/node is ignored by tracking, as well as daughters
00050       kActThis          = BIT(10),           // this volume/node is active for tracking
00051       kActDaughters     = BIT(11)            // all leaves are active
00052    };                          // activity flags
00053 
00054    enum EGeoOptimizationAtt {
00055       kUseBoundingBox   = BIT(16),           // use bounding box for tracking
00056       kUseVoxels        = BIT(17),           // compute and use voxels
00057       kUseGsord         = BIT(18)            // use slicing in G3 style     
00058    };                          // tracking optimization attributes
00059    enum EGeoSavePrimitiveAtt {
00060       kSavePrimitiveAtt = BIT(19),
00061       kSaveNodesAtt     = BIT(20)
00062    };                          // save primitive bits                          
00063 protected :
00064 // data members
00065    UInt_t                fGeoAtt;            // option flags
00066 public:
00067    // constructors
00068    TGeoAtt();
00069    TGeoAtt(Option_t *vis_opt, Option_t *activity_opt="", Option_t *optimization_opt="");
00070    // destructor
00071    virtual ~TGeoAtt();
00072    // methods
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)         // class for visibility, activity and optimization attributes for volumes/nodes
00107 };
00108 
00109 #endif
00110 

Generated on Tue Jul 5 14:12:11 2011 for ROOT_528-00b_version by  doxygen 1.5.1