// @(#)root/geom:$Id$
// Author: Andrei Gheata   01/11/01

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//_____________________________________________________________________________
//   TGeoAtt - visualization and tracking attributes for volumes and nodes
// ==========
// The TGeoAtt class is a utility for volume/node visibility and tracking
// activity. By default the attributes are set to visible/active
//_____________________________________________________________________________

#include "TGeoManager.h"
#include "TGeoAtt.h"

ClassImp(TGeoAtt)

//-----------------------------------------------------------------------------
TGeoAtt::TGeoAtt()
{
// Default constructor
   fGeoAtt = 0;
   if (!gGeoManager) return;
   SetActivity(kTRUE);
   SetActiveDaughters(kTRUE);
   SetVisibility(kTRUE);
   SetVisDaughters(kTRUE);
   SetVisStreamed(kFALSE);
   SetVisTouched(kFALSE);
   SetVisLeaves();
}
//-----------------------------------------------------------------------------
TGeoAtt::TGeoAtt(Option_t * /*vis_opt*/, Option_t * /*activity_opt*/, Option_t * /*optimization_opt*/)
{
// Constructor
   fGeoAtt = 0;
   SetActivity(kTRUE);
   SetActiveDaughters(kTRUE);
   SetVisibility(kTRUE);
   SetVisDaughters(kTRUE);
   SetVisStreamed(kFALSE);
   SetVisTouched(kFALSE);
   SetVisLeaves();
}
//-----------------------------------------------------------------------------
TGeoAtt::~TGeoAtt()
{
// Destructor
}

//-----------------------------------------------------------------------------
void TGeoAtt::SetVisBranch()
{
// Set branch type visibility.
   SetAttBit(kVisBranch, kTRUE);
   SetAttBit(kVisContainers, kFALSE);
   SetAttBit(kVisOnly, kFALSE);
}

//-----------------------------------------------------------------------------
void TGeoAtt::SetVisContainers(Bool_t flag)
{
// Set branch type visibility.
   SetVisLeaves(!flag);
}

//-----------------------------------------------------------------------------
void TGeoAtt::SetVisLeaves(Bool_t flag)
{
// Set branch type visibility.
   SetAttBit(kVisBranch, kFALSE);
   SetAttBit(kVisContainers, !flag);
   SetAttBit(kVisOnly, kFALSE);
}

//-----------------------------------------------------------------------------
void TGeoAtt::SetVisOnly(Bool_t flag)
{
// Set branch type visibility.
   SetAttBit(kVisBranch, kFALSE);
   SetAttBit(kVisContainers, kFALSE);
   SetAttBit(kVisOnly, flag);
}

//-----------------------------------------------------------------------------
void TGeoAtt::SetVisibility(Bool_t vis)
{
// Set visibility for this object
   if (vis)  SetAttBit(kVisThis);
   else      ResetAttBit(kVisThis);
   if (gGeoManager && gGeoManager->IsClosed()) SetVisTouched(kTRUE);
}
//-----------------------------------------------------------------------------
void TGeoAtt::SetVisDaughters(Bool_t vis)
{
// Set visibility for the daughters.
   if (vis)  SetAttBit(kVisDaughters);
   else      ResetAttBit(kVisDaughters);
   if (gGeoManager && gGeoManager->IsClosed()) SetVisTouched(kTRUE);
}
//-----------------------------------------------------------------------------
void TGeoAtt::SetVisStreamed(Bool_t vis)
{
// Mark attributes as "streamed to file".
   if (vis)  SetAttBit(kVisStreamed);
   else      ResetAttBit(kVisStreamed);
}
//-----------------------------------------------------------------------------
void TGeoAtt::SetVisTouched(Bool_t vis)
{
// Mark visualization attributes as "modified".
   if (vis)  SetAttBit(kVisTouched);
   else      ResetAttBit(kVisTouched);
}
//-----------------------------------------------------------------------------
void TGeoAtt::SetOptimization(Option_t * /*option*/)
{
// Set optimization flags.
}

 TGeoAtt.cxx:1
 TGeoAtt.cxx:2
 TGeoAtt.cxx:3
 TGeoAtt.cxx:4
 TGeoAtt.cxx:5
 TGeoAtt.cxx:6
 TGeoAtt.cxx:7
 TGeoAtt.cxx:8
 TGeoAtt.cxx:9
 TGeoAtt.cxx:10
 TGeoAtt.cxx:11
 TGeoAtt.cxx:12
 TGeoAtt.cxx:13
 TGeoAtt.cxx:14
 TGeoAtt.cxx:15
 TGeoAtt.cxx:16
 TGeoAtt.cxx:17
 TGeoAtt.cxx:18
 TGeoAtt.cxx:19
 TGeoAtt.cxx:20
 TGeoAtt.cxx:21
 TGeoAtt.cxx:22
 TGeoAtt.cxx:23
 TGeoAtt.cxx:24
 TGeoAtt.cxx:25
 TGeoAtt.cxx:26
 TGeoAtt.cxx:27
 TGeoAtt.cxx:28
 TGeoAtt.cxx:29
 TGeoAtt.cxx:30
 TGeoAtt.cxx:31
 TGeoAtt.cxx:32
 TGeoAtt.cxx:33
 TGeoAtt.cxx:34
 TGeoAtt.cxx:35
 TGeoAtt.cxx:36
 TGeoAtt.cxx:37
 TGeoAtt.cxx:38
 TGeoAtt.cxx:39
 TGeoAtt.cxx:40
 TGeoAtt.cxx:41
 TGeoAtt.cxx:42
 TGeoAtt.cxx:43
 TGeoAtt.cxx:44
 TGeoAtt.cxx:45
 TGeoAtt.cxx:46
 TGeoAtt.cxx:47
 TGeoAtt.cxx:48
 TGeoAtt.cxx:49
 TGeoAtt.cxx:50
 TGeoAtt.cxx:51
 TGeoAtt.cxx:52
 TGeoAtt.cxx:53
 TGeoAtt.cxx:54
 TGeoAtt.cxx:55
 TGeoAtt.cxx:56
 TGeoAtt.cxx:57
 TGeoAtt.cxx:58
 TGeoAtt.cxx:59
 TGeoAtt.cxx:60
 TGeoAtt.cxx:61
 TGeoAtt.cxx:62
 TGeoAtt.cxx:63
 TGeoAtt.cxx:64
 TGeoAtt.cxx:65
 TGeoAtt.cxx:66
 TGeoAtt.cxx:67
 TGeoAtt.cxx:68
 TGeoAtt.cxx:69
 TGeoAtt.cxx:70
 TGeoAtt.cxx:71
 TGeoAtt.cxx:72
 TGeoAtt.cxx:73
 TGeoAtt.cxx:74
 TGeoAtt.cxx:75
 TGeoAtt.cxx:76
 TGeoAtt.cxx:77
 TGeoAtt.cxx:78
 TGeoAtt.cxx:79
 TGeoAtt.cxx:80
 TGeoAtt.cxx:81
 TGeoAtt.cxx:82
 TGeoAtt.cxx:83
 TGeoAtt.cxx:84
 TGeoAtt.cxx:85
 TGeoAtt.cxx:86
 TGeoAtt.cxx:87
 TGeoAtt.cxx:88
 TGeoAtt.cxx:89
 TGeoAtt.cxx:90
 TGeoAtt.cxx:91
 TGeoAtt.cxx:92
 TGeoAtt.cxx:93
 TGeoAtt.cxx:94
 TGeoAtt.cxx:95
 TGeoAtt.cxx:96
 TGeoAtt.cxx:97
 TGeoAtt.cxx:98
 TGeoAtt.cxx:99
 TGeoAtt.cxx:100
 TGeoAtt.cxx:101
 TGeoAtt.cxx:102
 TGeoAtt.cxx:103
 TGeoAtt.cxx:104
 TGeoAtt.cxx:105
 TGeoAtt.cxx:106
 TGeoAtt.cxx:107
 TGeoAtt.cxx:108
 TGeoAtt.cxx:109
 TGeoAtt.cxx:110
 TGeoAtt.cxx:111
 TGeoAtt.cxx:112
 TGeoAtt.cxx:113
 TGeoAtt.cxx:114
 TGeoAtt.cxx:115
 TGeoAtt.cxx:116
 TGeoAtt.cxx:117
 TGeoAtt.cxx:118
 TGeoAtt.cxx:119
 TGeoAtt.cxx:120
 TGeoAtt.cxx:121
 TGeoAtt.cxx:122
 TGeoAtt.cxx:123
 TGeoAtt.cxx:124
 TGeoAtt.cxx:125
 TGeoAtt.cxx:126