ROOT logo
// @(#)root/gviz3d:$Id: TStructNode.cxx 29985 2009-08-31 16:05:21Z brun $
// Author: Tomasz Sosnicki   18/09/09

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

#include "TStructNode.h"
#include <TList.h>
#include <TGeoManager.h>

ClassImp(TStructNode);

//________________________________________________________________________
//////////////////////////////////////////////////////////////////////////
//
// TStructNode - class which represent a node. Node has all information 
// about some pointer. It keeps information such as name of object, type, 
// size of pointers class, size of node and daughter nodes, number of child 
// nodes. It is also used to store information needed to draw TGeoVolume.
// It is for example x, y and z coordinates.
// Condition fVisible tells us that node is visible and should be drawn.
// fCollapsed tells us that we can see daughter nodes.
// 
//////////////////////////////////////////////////////////////////////////

EScalingType TStructNode::fgScalBy = kMembers;

//________________________________________________________________________
TStructNode::TStructNode(TString name, TString typeName, void* pointer, TStructNode* parent, ULong_t size, ENodeType type)
{
   // Constructs node with name "name" of class "typeName" and given parent "parent" which represents pointer "pointer". 
   // Size of node is set to "size" and type is set to "type"

   fName = name;
   fTypeName = typeName;
   fTotalSize = fSize = size;
   fMembers = new TList();
   fMembersCount = fAllMembersCount = 1;
   fLevel = 1;
   fX = fY = fWidth = fHeight = 0;
   fParent = parent;
   if (parent) {
      fLevel = parent->GetLevel()+1;
      parent->fMembers->Add(this);
   }

   fNodeType = type;
   fPointer = pointer;
   fCollapsed = false;
   fVisible = false;
   fMaxLevel = 3;
   fMaxObjects = 100;
}

//________________________________________________________________________
TStructNode::~TStructNode()
{
   // Destructs list of nodes

   delete fMembers;
}

//________________________________________________________________________
Int_t TStructNode::Compare(const TObject* obj) const
{
   // Overrided method. Compare to objects of TStructNode class.

   TStructNode* node = (TStructNode*)obj;
   
   if (GetVolume() < node->GetVolume()) {
      return -1;
   }
   if(GetVolume() > node->GetVolume()) {
      return 1;
   }
   
   if (this > node) {
      return 1;
   }
   if (this < node) {
      return -1;
   }

   return 0;
}

//________________________________________________________________________
ULong_t TStructNode::GetAllMembersCount() const
{
   // Returns number of all members in node

   return fAllMembersCount;
}

//________________________________________________________________________
Float_t TStructNode::GetCenter() const
{
   // Returns center of outlining box on x-axis
   return (fX + fWidth /2);
}

//________________________________________________________________________
Float_t TStructNode::GetHeight() const
{
   // Returns height of outlining box

   return fHeight;
}

//________________________________________________________________________
UInt_t TStructNode::GetLevel() const
{
   // Returns actual level of node

   return fLevel;
}

//________________________________________________________________________
const char* TStructNode::GetName() const
{
   // Returns name of object
   return fName.Data();
}

//________________________________________________________________________
ENodeType TStructNode::GetNodeType() const
{
   // Returns type of node

   return fNodeType;
}

//________________________________________________________________________
UInt_t TStructNode::GetMaxLevel() const
{
   // Returns maximum number of leves displayed when the node is top node on scene

   return fMaxLevel;
}

//________________________________________________________________________
UInt_t TStructNode::GetMaxObjects() const
{
   // Returns maximum number of objects displayed when the node is top node on scene
   return fMaxObjects;
}

//________________________________________________________________________
TList* TStructNode::GetMembers() const
{
   // Returns list with pointers to daughter nodes.

   return fMembers;
}

//________________________________________________________________________
ULong_t TStructNode::GetMembersCount() const
{
   // Returns numbers of members of node

   return fMembersCount;
}

//________________________________________________________________________
Float_t TStructNode::GetMiddle() const
{
   // Returns center of outlining box on y-axis

   return (fY + fHeight/2);
}

//________________________________________________________________________
TStructNode* TStructNode::GetParent() const
{
   // Returns pointer to parent node

   return fParent;
}

//________________________________________________________________________
void* TStructNode::GetPointer() const
{
   // Returns main pointer
   return fPointer;
}

//________________________________________________________________________
ULong_t TStructNode::GetRelativeMembersCount() const
{
   // Returns relative numbers of members. If node is collapsed, then method returns number of all members, 
   // it's node and its daughters, otherwise it returns number of members of node

   if (fCollapsed) {
      return fAllMembersCount;
   }
   return fMembersCount;
}

//________________________________________________________________________
ULong_t TStructNode::GetRelativeSize() const
{
   // Returns relative size of node. If node is collapsed, then function returns size of node and dauthers, 
   // otherwise returns size of node only.

   if (fCollapsed) {
      return fTotalSize;
   }
   return fSize;
}

//________________________________________________________________________
ULong_t TStructNode::GetRelativeVolume() const
{
   // Returns size or number of members. If ScaleBy is set to kMembers and node is collapsed, then it 
   // returns all number of members. If node isn't collapsed it returns number of members.
   // If Scaleby is set to kSize and node is collapsed, then it returns total size of node and daughters,
   // else it returns size of node, otherwise it returns 0.

   if (fgScalBy == kMembers) {
      if (fCollapsed) {
         return GetAllMembersCount();
      } else {
         return GetMembersCount();
      }
   } else if (fgScalBy == kSize) {
      if (fCollapsed) {
         return GetTotalSize();
      } else {
         return GetSize();
      }
   } else {
      return 0;
   }
}

//________________________________________________________________________
Float_t TStructNode::GetRelativeVolumeRatio()
{
   // Returns ratio - relative volume to area taken by utlining box.

   return ((Float_t)(GetRelativeVolume())/(fWidth*fHeight));
}

//________________________________________________________________________
ULong_t TStructNode::GetSize() const
{
   // Returns size of node

   return fSize;
}

//________________________________________________________________________
ULong_t TStructNode::GetTotalSize() const
{
   // Returns total size of allocated memory in bytes

   return fTotalSize;
}

//________________________________________________________________________
TString TStructNode::GetTypeName() const
{
   // Returns name of class

   return fTypeName;
}

//________________________________________________________________________
ULong_t TStructNode::GetVolume() const
{
   // Returns size or number of members. If ScaleBy is set to kMembers it returns all number of members.
   // If Scaleby is set to kSize then it returns total size of node and daughters, otherwise it returns 0.

   if (fgScalBy == kMembers) {
      return GetAllMembersCount();
   } else if (fgScalBy == kSize) {
      return GetTotalSize();
   } else {
      return 0;
   }

}

//________________________________________________________________________
Float_t TStructNode::GetVolumeRatio()
{
   // Returns ratio - volme of node to area taken by outlining box

   return ((Float_t)(GetVolume())/(fWidth*fHeight));
}

//________________________________________________________________________
Float_t TStructNode::GetWidth() const
{
   // Returns width of outlining box

   return fWidth;
}

//________________________________________________________________________
Float_t TStructNode::GetX() const
{
   // Returns X coordinate

   return fX;
}

//________________________________________________________________________
Float_t TStructNode::GetY() const
{
   // Returns Y coordinate

   return fY;
}

//________________________________________________________________________
Bool_t TStructNode::IsCollapsed() const
{
   // Returns true if node is colllapsed

   return fCollapsed;
}

//________________________________________________________________________
Bool_t TStructNode::IsSortable() const
{
   // Returns true, because we have overrided method Compare

   return kTRUE;
}

//________________________________________________________________________
bool TStructNode::IsVisible() const
{
   // Returns true if node is visible

   return fVisible;
}

//________________________________________________________________________
void TStructNode::SetAllMembersCount(ULong_t number)
{
   // Sets numbers of all members to "number"

   fAllMembersCount = number;
}

//________________________________________________________________________
void TStructNode::SetCollapsed(Bool_t collapse)
{
   // Sets collapsing of node to "collapse"

   fCollapsed = collapse;
}

//________________________________________________________________________
void TStructNode::SetHeight(Float_t val)
{
   // Sets width of outlining box to "w"

   fHeight = val;
}

//________________________________________________________________________
void TStructNode::SetMaxLevel(UInt_t level)
{
   // Sets maximum number of leves displayed when the node is top node on scene

   fMaxLevel = level;
}

//________________________________________________________________________
void TStructNode::SetMaxObjects(UInt_t max)
{
   // Sets maximum number of objects displayed when the node is top node on scene

   fMaxObjects = max;
}

//________________________________________________________________________
void TStructNode::SetMembers(TList* list)
{
   // Sets list of dauther nodes to "list"

   fMembers = list;
}

//________________________________________________________________________
void TStructNode::SetMembersCount(ULong_t number)
{
   // Sets number of members to "number"
   fMembersCount = number;
}

//________________________________________________________________________
void TStructNode::SetNodeType(ENodeType type)
{
   // Sets type of node to "type"

   fNodeType = type;
}

//________________________________________________________________________
void TStructNode::SetPointer(void* pointer)
{
   // Sets main pointer to "pointer"

   fPointer = pointer;
}

//________________________________________________________________________
void TStructNode::SetScaleBy(EScalingType type)
{
   // Sets scaling by to "type"

   fgScalBy = type;
}

//________________________________________________________________________
void TStructNode::SetSize(ULong_t size)
{
   // Sets size of node to "size"

   fSize = size;
}

//________________________________________________________________________
void TStructNode::SetTotalSize(ULong_t size)
{
   // Sets total size  of allocated memory in bytes to value "size"

   fTotalSize = size;
}

//________________________________________________________________________
void TStructNode::SetVisible(bool visible)
{
   // Sets visibility of node to "visible"

   fVisible = visible;
}

//________________________________________________________________________
void TStructNode::SetWidth(Float_t w)
{
   // Sets width of outlining box to "w"

   fWidth = w;
}

//________________________________________________________________________
void TStructNode::SetX(Float_t x)
{
   // Sets X coordinate to "x"

   fX = x;
}

//________________________________________________________________________
void TStructNode::SetY(Float_t y)
{
   // Sets Y coordinate to "y"

   fY = y;
}
 TStructNode.cxx:1
 TStructNode.cxx:2
 TStructNode.cxx:3
 TStructNode.cxx:4
 TStructNode.cxx:5
 TStructNode.cxx:6
 TStructNode.cxx:7
 TStructNode.cxx:8
 TStructNode.cxx:9
 TStructNode.cxx:10
 TStructNode.cxx:11
 TStructNode.cxx:12
 TStructNode.cxx:13
 TStructNode.cxx:14
 TStructNode.cxx:15
 TStructNode.cxx:16
 TStructNode.cxx:17
 TStructNode.cxx:18
 TStructNode.cxx:19
 TStructNode.cxx:20
 TStructNode.cxx:21
 TStructNode.cxx:22
 TStructNode.cxx:23
 TStructNode.cxx:24
 TStructNode.cxx:25
 TStructNode.cxx:26
 TStructNode.cxx:27
 TStructNode.cxx:28
 TStructNode.cxx:29
 TStructNode.cxx:30
 TStructNode.cxx:31
 TStructNode.cxx:32
 TStructNode.cxx:33
 TStructNode.cxx:34
 TStructNode.cxx:35
 TStructNode.cxx:36
 TStructNode.cxx:37
 TStructNode.cxx:38
 TStructNode.cxx:39
 TStructNode.cxx:40
 TStructNode.cxx:41
 TStructNode.cxx:42
 TStructNode.cxx:43
 TStructNode.cxx:44
 TStructNode.cxx:45
 TStructNode.cxx:46
 TStructNode.cxx:47
 TStructNode.cxx:48
 TStructNode.cxx:49
 TStructNode.cxx:50
 TStructNode.cxx:51
 TStructNode.cxx:52
 TStructNode.cxx:53
 TStructNode.cxx:54
 TStructNode.cxx:55
 TStructNode.cxx:56
 TStructNode.cxx:57
 TStructNode.cxx:58
 TStructNode.cxx:59
 TStructNode.cxx:60
 TStructNode.cxx:61
 TStructNode.cxx:62
 TStructNode.cxx:63
 TStructNode.cxx:64
 TStructNode.cxx:65
 TStructNode.cxx:66
 TStructNode.cxx:67
 TStructNode.cxx:68
 TStructNode.cxx:69
 TStructNode.cxx:70
 TStructNode.cxx:71
 TStructNode.cxx:72
 TStructNode.cxx:73
 TStructNode.cxx:74
 TStructNode.cxx:75
 TStructNode.cxx:76
 TStructNode.cxx:77
 TStructNode.cxx:78
 TStructNode.cxx:79
 TStructNode.cxx:80
 TStructNode.cxx:81
 TStructNode.cxx:82
 TStructNode.cxx:83
 TStructNode.cxx:84
 TStructNode.cxx:85
 TStructNode.cxx:86
 TStructNode.cxx:87
 TStructNode.cxx:88
 TStructNode.cxx:89
 TStructNode.cxx:90
 TStructNode.cxx:91
 TStructNode.cxx:92
 TStructNode.cxx:93
 TStructNode.cxx:94
 TStructNode.cxx:95
 TStructNode.cxx:96
 TStructNode.cxx:97
 TStructNode.cxx:98
 TStructNode.cxx:99
 TStructNode.cxx:100
 TStructNode.cxx:101
 TStructNode.cxx:102
 TStructNode.cxx:103
 TStructNode.cxx:104
 TStructNode.cxx:105
 TStructNode.cxx:106
 TStructNode.cxx:107
 TStructNode.cxx:108
 TStructNode.cxx:109
 TStructNode.cxx:110
 TStructNode.cxx:111
 TStructNode.cxx:112
 TStructNode.cxx:113
 TStructNode.cxx:114
 TStructNode.cxx:115
 TStructNode.cxx:116
 TStructNode.cxx:117
 TStructNode.cxx:118
 TStructNode.cxx:119
 TStructNode.cxx:120
 TStructNode.cxx:121
 TStructNode.cxx:122
 TStructNode.cxx:123
 TStructNode.cxx:124
 TStructNode.cxx:125
 TStructNode.cxx:126
 TStructNode.cxx:127
 TStructNode.cxx:128
 TStructNode.cxx:129
 TStructNode.cxx:130
 TStructNode.cxx:131
 TStructNode.cxx:132
 TStructNode.cxx:133
 TStructNode.cxx:134
 TStructNode.cxx:135
 TStructNode.cxx:136
 TStructNode.cxx:137
 TStructNode.cxx:138
 TStructNode.cxx:139
 TStructNode.cxx:140
 TStructNode.cxx:141
 TStructNode.cxx:142
 TStructNode.cxx:143
 TStructNode.cxx:144
 TStructNode.cxx:145
 TStructNode.cxx:146
 TStructNode.cxx:147
 TStructNode.cxx:148
 TStructNode.cxx:149
 TStructNode.cxx:150
 TStructNode.cxx:151
 TStructNode.cxx:152
 TStructNode.cxx:153
 TStructNode.cxx:154
 TStructNode.cxx:155
 TStructNode.cxx:156
 TStructNode.cxx:157
 TStructNode.cxx:158
 TStructNode.cxx:159
 TStructNode.cxx:160
 TStructNode.cxx:161
 TStructNode.cxx:162
 TStructNode.cxx:163
 TStructNode.cxx:164
 TStructNode.cxx:165
 TStructNode.cxx:166
 TStructNode.cxx:167
 TStructNode.cxx:168
 TStructNode.cxx:169
 TStructNode.cxx:170
 TStructNode.cxx:171
 TStructNode.cxx:172
 TStructNode.cxx:173
 TStructNode.cxx:174
 TStructNode.cxx:175
 TStructNode.cxx:176
 TStructNode.cxx:177
 TStructNode.cxx:178
 TStructNode.cxx:179
 TStructNode.cxx:180
 TStructNode.cxx:181
 TStructNode.cxx:182
 TStructNode.cxx:183
 TStructNode.cxx:184
 TStructNode.cxx:185
 TStructNode.cxx:186
 TStructNode.cxx:187
 TStructNode.cxx:188
 TStructNode.cxx:189
 TStructNode.cxx:190
 TStructNode.cxx:191
 TStructNode.cxx:192
 TStructNode.cxx:193
 TStructNode.cxx:194
 TStructNode.cxx:195
 TStructNode.cxx:196
 TStructNode.cxx:197
 TStructNode.cxx:198
 TStructNode.cxx:199
 TStructNode.cxx:200
 TStructNode.cxx:201
 TStructNode.cxx:202
 TStructNode.cxx:203
 TStructNode.cxx:204
 TStructNode.cxx:205
 TStructNode.cxx:206
 TStructNode.cxx:207
 TStructNode.cxx:208
 TStructNode.cxx:209
 TStructNode.cxx:210
 TStructNode.cxx:211
 TStructNode.cxx:212
 TStructNode.cxx:213
 TStructNode.cxx:214
 TStructNode.cxx:215
 TStructNode.cxx:216
 TStructNode.cxx:217
 TStructNode.cxx:218
 TStructNode.cxx:219
 TStructNode.cxx:220
 TStructNode.cxx:221
 TStructNode.cxx:222
 TStructNode.cxx:223
 TStructNode.cxx:224
 TStructNode.cxx:225
 TStructNode.cxx:226
 TStructNode.cxx:227
 TStructNode.cxx:228
 TStructNode.cxx:229
 TStructNode.cxx:230
 TStructNode.cxx:231
 TStructNode.cxx:232
 TStructNode.cxx:233
 TStructNode.cxx:234
 TStructNode.cxx:235
 TStructNode.cxx:236
 TStructNode.cxx:237
 TStructNode.cxx:238
 TStructNode.cxx:239
 TStructNode.cxx:240
 TStructNode.cxx:241
 TStructNode.cxx:242
 TStructNode.cxx:243
 TStructNode.cxx:244
 TStructNode.cxx:245
 TStructNode.cxx:246
 TStructNode.cxx:247
 TStructNode.cxx:248
 TStructNode.cxx:249
 TStructNode.cxx:250
 TStructNode.cxx:251
 TStructNode.cxx:252
 TStructNode.cxx:253
 TStructNode.cxx:254
 TStructNode.cxx:255
 TStructNode.cxx:256
 TStructNode.cxx:257
 TStructNode.cxx:258
 TStructNode.cxx:259
 TStructNode.cxx:260
 TStructNode.cxx:261
 TStructNode.cxx:262
 TStructNode.cxx:263
 TStructNode.cxx:264
 TStructNode.cxx:265
 TStructNode.cxx:266
 TStructNode.cxx:267
 TStructNode.cxx:268
 TStructNode.cxx:269
 TStructNode.cxx:270
 TStructNode.cxx:271
 TStructNode.cxx:272
 TStructNode.cxx:273
 TStructNode.cxx:274
 TStructNode.cxx:275
 TStructNode.cxx:276
 TStructNode.cxx:277
 TStructNode.cxx:278
 TStructNode.cxx:279
 TStructNode.cxx:280
 TStructNode.cxx:281
 TStructNode.cxx:282
 TStructNode.cxx:283
 TStructNode.cxx:284
 TStructNode.cxx:285
 TStructNode.cxx:286
 TStructNode.cxx:287
 TStructNode.cxx:288
 TStructNode.cxx:289
 TStructNode.cxx:290
 TStructNode.cxx:291
 TStructNode.cxx:292
 TStructNode.cxx:293
 TStructNode.cxx:294
 TStructNode.cxx:295
 TStructNode.cxx:296
 TStructNode.cxx:297
 TStructNode.cxx:298
 TStructNode.cxx:299
 TStructNode.cxx:300
 TStructNode.cxx:301
 TStructNode.cxx:302
 TStructNode.cxx:303
 TStructNode.cxx:304
 TStructNode.cxx:305
 TStructNode.cxx:306
 TStructNode.cxx:307
 TStructNode.cxx:308
 TStructNode.cxx:309
 TStructNode.cxx:310
 TStructNode.cxx:311
 TStructNode.cxx:312
 TStructNode.cxx:313
 TStructNode.cxx:314
 TStructNode.cxx:315
 TStructNode.cxx:316
 TStructNode.cxx:317
 TStructNode.cxx:318
 TStructNode.cxx:319
 TStructNode.cxx:320
 TStructNode.cxx:321
 TStructNode.cxx:322
 TStructNode.cxx:323
 TStructNode.cxx:324
 TStructNode.cxx:325
 TStructNode.cxx:326
 TStructNode.cxx:327
 TStructNode.cxx:328
 TStructNode.cxx:329
 TStructNode.cxx:330
 TStructNode.cxx:331
 TStructNode.cxx:332
 TStructNode.cxx:333
 TStructNode.cxx:334
 TStructNode.cxx:335
 TStructNode.cxx:336
 TStructNode.cxx:337
 TStructNode.cxx:338
 TStructNode.cxx:339
 TStructNode.cxx:340
 TStructNode.cxx:341
 TStructNode.cxx:342
 TStructNode.cxx:343
 TStructNode.cxx:344
 TStructNode.cxx:345
 TStructNode.cxx:346
 TStructNode.cxx:347
 TStructNode.cxx:348
 TStructNode.cxx:349
 TStructNode.cxx:350
 TStructNode.cxx:351
 TStructNode.cxx:352
 TStructNode.cxx:353
 TStructNode.cxx:354
 TStructNode.cxx:355
 TStructNode.cxx:356
 TStructNode.cxx:357
 TStructNode.cxx:358
 TStructNode.cxx:359
 TStructNode.cxx:360
 TStructNode.cxx:361
 TStructNode.cxx:362
 TStructNode.cxx:363
 TStructNode.cxx:364
 TStructNode.cxx:365
 TStructNode.cxx:366
 TStructNode.cxx:367
 TStructNode.cxx:368
 TStructNode.cxx:369
 TStructNode.cxx:370
 TStructNode.cxx:371
 TStructNode.cxx:372
 TStructNode.cxx:373
 TStructNode.cxx:374
 TStructNode.cxx:375
 TStructNode.cxx:376
 TStructNode.cxx:377
 TStructNode.cxx:378
 TStructNode.cxx:379
 TStructNode.cxx:380
 TStructNode.cxx:381
 TStructNode.cxx:382
 TStructNode.cxx:383
 TStructNode.cxx:384
 TStructNode.cxx:385
 TStructNode.cxx:386
 TStructNode.cxx:387
 TStructNode.cxx:388
 TStructNode.cxx:389
 TStructNode.cxx:390
 TStructNode.cxx:391
 TStructNode.cxx:392
 TStructNode.cxx:393
 TStructNode.cxx:394
 TStructNode.cxx:395
 TStructNode.cxx:396
 TStructNode.cxx:397
 TStructNode.cxx:398
 TStructNode.cxx:399
 TStructNode.cxx:400
 TStructNode.cxx:401
 TStructNode.cxx:402
 TStructNode.cxx:403
 TStructNode.cxx:404
 TStructNode.cxx:405
 TStructNode.cxx:406
 TStructNode.cxx:407
 TStructNode.cxx:408
 TStructNode.cxx:409
 TStructNode.cxx:410
 TStructNode.cxx:411
 TStructNode.cxx:412
 TStructNode.cxx:413
 TStructNode.cxx:414
 TStructNode.cxx:415
 TStructNode.cxx:416
 TStructNode.cxx:417
 TStructNode.cxx:418
 TStructNode.cxx:419
 TStructNode.cxx:420
 TStructNode.cxx:421
 TStructNode.cxx:422
 TStructNode.cxx:423
 TStructNode.cxx:424
 TStructNode.cxx:425
 TStructNode.cxx:426
 TStructNode.cxx:427
 TStructNode.cxx:428
 TStructNode.cxx:429
 TStructNode.cxx:430
 TStructNode.cxx:431
 TStructNode.cxx:432
 TStructNode.cxx:433
 TStructNode.cxx:434
 TStructNode.cxx:435
 TStructNode.cxx:436
 TStructNode.cxx:437
 TStructNode.cxx:438
 TStructNode.cxx:439
 TStructNode.cxx:440
 TStructNode.cxx:441
 TStructNode.cxx:442
 TStructNode.cxx:443
 TStructNode.cxx:444
 TStructNode.cxx:445
 TStructNode.cxx:446
 TStructNode.cxx:447
 TStructNode.cxx:448
 TStructNode.cxx:449
 TStructNode.cxx:450
 TStructNode.cxx:451
 TStructNode.cxx:452
 TStructNode.cxx:453
 TStructNode.cxx:454
 TStructNode.cxx:455
 TStructNode.cxx:456
 TStructNode.cxx:457
 TStructNode.cxx:458
 TStructNode.cxx:459
 TStructNode.cxx:460
 TStructNode.cxx:461
 TStructNode.cxx:462
 TStructNode.cxx:463
 TStructNode.cxx:464
 TStructNode.cxx:465
 TStructNode.cxx:466
 TStructNode.cxx:467
 TStructNode.cxx:468
 TStructNode.cxx:469
 TStructNode.cxx:470