/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* *
* Author: The ALICE Off-line Project. *
* Contributors are mentioned in the code where appropriate. *
* *
* Permission to use, copy, modify and distribute this software and its *
* documentation strictly for non-commercial purposes is hereby granted *
* without fee, provided that the above copyright notice appears in all *
* copies and that both the copyright notice and this permission notice *
* appear in the supporting documentation. The authors make no claims *
* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
// $Id$
//
/// \ingroup macros
/// \file MUONGeometryViewingHelper.C
/// \brief Macro providing methods helping in viewing geometry
///
/// To be run from aliroot:
/// <pre>
/// root[0] .x MUONGeometryViewingHelper.C
/// root[0] buildGeometry();
/// </pre>
///
/// \author: I. Hrivnacova, IPN Orsay
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <TObjArray.h>
#include <TBrowser.h>
#include <TGeoManager.h>
#include <TGeoVolume.h>
#endif
void visibilityOff()
{
/// Set all volumes invisible
TObjArray* volumes = gGeoManager->GetListOfVolumes();
for (Int_t i=0; i<volumes->GetEntriesFast(); i++) {
if ( !((TGeoVolume*)volumes->At(i))->IsAssembly() )
((TGeoVolume*)volumes->At(i))->SetVisibility(kFALSE);
}
}
void setVisibility(const TString& volumeName, Bool_t visibility= kTRUE)
{
/// Set visibility to the volume specified by name
TGeoVolume* volume = gGeoManager->FindVolumeFast(volumeName.Data());
if ( ! volume ) {
cerr << "Volume " << volumeName.Data() << " not found." << endl;
return;
}
volume->SetVisibility(visibility);
}
void setDaughtersVisibility(const TString& volumeName, Bool_t visibility= kTRUE)
{
/// Set visibility to daughter of the volume specified by name.
/// If the daughter volume is an assembly the visibility setting
/// is propagated to its real volumes daughters.
TGeoVolume* volume = gGeoManager->FindVolumeFast(volumeName.Data());
if ( ! volume ) {
cerr << "Volume " << volumeName.Data() << " not found." << endl;
return;
}
//for ( Int_t i=0; i<10; i++ ) {
Int_t colourNo = 1;
for ( Int_t i=0; i<volume->GetNdaughters(); i++ ) {
TGeoVolume* dvolume = volume->GetNode(i)->GetVolume();
if ( dvolume->IsAssembly() ) {
// Do no set visibility to assembly but to its daughters
setDaughtersVisibility(dvolume->GetName(), visibility);
}
else {
cout << "Setting visibility to " << dvolume->GetName() << endl;
dvolume->SetVisibility(visibility);
// change colors
++colourNo;
if ( colourNo > 9 ) colourNo = 1;
dvolume->SetLineColor(colourNo);
}
}
}
void buildGeometry(Bool_t allVisible = kFALSE )
{
/// Load geometry from the file, make all volumes invisible
TGeoManager::Import("geometry.root");
new TBrowser();
if ( ! allVisible ) visibilityOff();
gGeoManager->SetVisLevel(10);
gGeoManager->GetTopVolume()->SetVisContainers(kTRUE);
gGeoManager->GetTopVolume()->Draw("ogl");
cout << endl;
cout << "You can now add volumes in the scene: " << endl;
cout << " setVisibility(\"MyVolume\") " << endl;
cout << " setDaughtersVisibility(\"MyVolume\") " << endl;;
cout << "or remove them from the scene: " << endl;
cout << " setVisibility(\"MyVolume\", kFALSE);" << endl;
cout << " setDaughtersVisibility(\"MyVolume\", kFALSE);" << endl;
cout << endl;
}
MUONGeometryViewingHelper.C:1 MUONGeometryViewingHelper.C:2 MUONGeometryViewingHelper.C:3 MUONGeometryViewingHelper.C:4 MUONGeometryViewingHelper.C:5 MUONGeometryViewingHelper.C:6 MUONGeometryViewingHelper.C:7 MUONGeometryViewingHelper.C:8 MUONGeometryViewingHelper.C:9 MUONGeometryViewingHelper.C:10 MUONGeometryViewingHelper.C:11 MUONGeometryViewingHelper.C:12 MUONGeometryViewingHelper.C:13 MUONGeometryViewingHelper.C:14 MUONGeometryViewingHelper.C:15 MUONGeometryViewingHelper.C:16 MUONGeometryViewingHelper.C:17 MUONGeometryViewingHelper.C:18 MUONGeometryViewingHelper.C:19 MUONGeometryViewingHelper.C:20 MUONGeometryViewingHelper.C:21 MUONGeometryViewingHelper.C:22 MUONGeometryViewingHelper.C:23 MUONGeometryViewingHelper.C:24 MUONGeometryViewingHelper.C:25 MUONGeometryViewingHelper.C:26 MUONGeometryViewingHelper.C:27 MUONGeometryViewingHelper.C:28 MUONGeometryViewingHelper.C:29 MUONGeometryViewingHelper.C:30 MUONGeometryViewingHelper.C:31 MUONGeometryViewingHelper.C:32 MUONGeometryViewingHelper.C:33 MUONGeometryViewingHelper.C:34 MUONGeometryViewingHelper.C:35 MUONGeometryViewingHelper.C:36 MUONGeometryViewingHelper.C:37 MUONGeometryViewingHelper.C:38 MUONGeometryViewingHelper.C:39 MUONGeometryViewingHelper.C:40 MUONGeometryViewingHelper.C:41 MUONGeometryViewingHelper.C:42 MUONGeometryViewingHelper.C:43 MUONGeometryViewingHelper.C:44 MUONGeometryViewingHelper.C:45 MUONGeometryViewingHelper.C:46 MUONGeometryViewingHelper.C:47 MUONGeometryViewingHelper.C:48 MUONGeometryViewingHelper.C:49 MUONGeometryViewingHelper.C:50 MUONGeometryViewingHelper.C:51 MUONGeometryViewingHelper.C:52 MUONGeometryViewingHelper.C:53 MUONGeometryViewingHelper.C:54 MUONGeometryViewingHelper.C:55 MUONGeometryViewingHelper.C:56 MUONGeometryViewingHelper.C:57 MUONGeometryViewingHelper.C:58 MUONGeometryViewingHelper.C:59 MUONGeometryViewingHelper.C:60 MUONGeometryViewingHelper.C:61 MUONGeometryViewingHelper.C:62 MUONGeometryViewingHelper.C:63 MUONGeometryViewingHelper.C:64 MUONGeometryViewingHelper.C:65 MUONGeometryViewingHelper.C:66 MUONGeometryViewingHelper.C:67 MUONGeometryViewingHelper.C:68 MUONGeometryViewingHelper.C:69 MUONGeometryViewingHelper.C:70 MUONGeometryViewingHelper.C:71 MUONGeometryViewingHelper.C:72 MUONGeometryViewingHelper.C:73 MUONGeometryViewingHelper.C:74 MUONGeometryViewingHelper.C:75 MUONGeometryViewingHelper.C:76 MUONGeometryViewingHelper.C:77 MUONGeometryViewingHelper.C:78 MUONGeometryViewingHelper.C:79 MUONGeometryViewingHelper.C:80 MUONGeometryViewingHelper.C:81 MUONGeometryViewingHelper.C:82 MUONGeometryViewingHelper.C:83 MUONGeometryViewingHelper.C:84 MUONGeometryViewingHelper.C:85 MUONGeometryViewingHelper.C:86 MUONGeometryViewingHelper.C:87 MUONGeometryViewingHelper.C:88 MUONGeometryViewingHelper.C:89 MUONGeometryViewingHelper.C:90 MUONGeometryViewingHelper.C:91 MUONGeometryViewingHelper.C:92 MUONGeometryViewingHelper.C:93 MUONGeometryViewingHelper.C:94 MUONGeometryViewingHelper.C:95 MUONGeometryViewingHelper.C:96 MUONGeometryViewingHelper.C:97 MUONGeometryViewingHelper.C:98 MUONGeometryViewingHelper.C:99 MUONGeometryViewingHelper.C:100 MUONGeometryViewingHelper.C:101 MUONGeometryViewingHelper.C:102 MUONGeometryViewingHelper.C:103 MUONGeometryViewingHelper.C:104 MUONGeometryViewingHelper.C:105 MUONGeometryViewingHelper.C:106 MUONGeometryViewingHelper.C:107 MUONGeometryViewingHelper.C:108 MUONGeometryViewingHelper.C:109 MUONGeometryViewingHelper.C:110 MUONGeometryViewingHelper.C:111 MUONGeometryViewingHelper.C:112 MUONGeometryViewingHelper.C:113 MUONGeometryViewingHelper.C:114 MUONGeometryViewingHelper.C:115 MUONGeometryViewingHelper.C:116 MUONGeometryViewingHelper.C:117 MUONGeometryViewingHelper.C:118 MUONGeometryViewingHelper.C:119 MUONGeometryViewingHelper.C:120 MUONGeometryViewingHelper.C:121 MUONGeometryViewingHelper.C:122 MUONGeometryViewingHelper.C:123 MUONGeometryViewingHelper.C:124 MUONGeometryViewingHelper.C:125