Import Geant4 3.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:10:37 +02:00
parent 137e303ecc
commit 36c080dca6
3464 changed files with 119310 additions and 52696 deletions
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4ASCIITree.cc,v 1.5.2.1 2001/06/28 19:15:56 gunter Exp $
// GEANT4 tag $Name: $
//
//
// John Allison 5th April 2001
// A graphics system to dump geometry hierarchy.
#include "G4ASCIITree.hh"
#include "G4ASCIITreeSceneHandler.hh"
#include "G4ASCIITreeViewer.hh"
#include "G4ASCIITreeMessenger.hh"
G4ASCIITree::G4ASCIITree ():
G4VTree ("ASCIITree",
"ATree",
"A graphics system to dump geometry hierarchy"
"\n to standard output as an ASCII stream.",
G4VGraphicsSystem::nonEuclidian),
fVerbosity(0)
{
fpMessenger = new G4ASCIITreeMessenger(this);
}
G4ASCIITree::~G4ASCIITree () {
delete fpMessenger;
}
G4VSceneHandler* G4ASCIITree::CreateSceneHandler (const G4String& name) {
G4VSceneHandler* pScene = new G4ASCIITreeSceneHandler (*this, name);
G4cout << G4ASCIITreeSceneHandler::GetSceneCount ()
<< ' ' << fName << " scene handlers extanct." << G4endl;
return pScene;
}
G4VViewer* G4ASCIITree::CreateViewer (G4VSceneHandler& scene,
const G4String& name) {
G4VViewer* pView =
new G4ASCIITreeViewer ((G4ASCIITreeSceneHandler&) scene, name);
if (pView) {
if (pView -> GetViewId () < 0) {
G4cerr << "G4ASCIITree::CreateViewer: error flagged by negative"
" view id in G4ASCIITreeViewer creation."
"\n Destroying view and returning null pointer."
<< G4endl;
delete pView;
pView = 0;
}
}
else {
G4cerr << "G4ASCIITree::CreateViewer: null pointer on"
" new G4ASCIITreeViewer." << G4endl;
}
return pView;
}
@@ -0,0 +1,71 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4ASCIITreeMessenger.cc,v 1.4.2.1 2001/06/28 19:15:56 gunter Exp $
// GEANT4 tag $Name: $
//
//
// John Allison 5th April 2001
// A scene handler to dump geometry hierarchy.
// Based on a provisional G4ASCIITreeGraphicsScene (was in modeling).
#include "G4ASCIITreeMessenger.hh"
#include "G4ASCIITree.hh"
#include "G4UIcommand.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithAnInteger.hh"
G4ASCIITreeMessenger::G4ASCIITreeMessenger
(G4ASCIITree* ASCIITree):
fpASCIITree(ASCIITree) {
G4bool omitable, currentAsDefault;
fpDirectory = new G4UIdirectory ("/vis/ASCIITree/");
fpDirectory -> SetGuidance ("Commands for ASCIITree control.");
fpCommandVerbose = new G4UIcmdWithAnInteger ("/vis/ASCIITree/verbose", this);
fpCommandVerbose -> SetGuidance ("/vis/ASCIITree/verbose [<verbosity>]");
fpCommandVerbose -> SetGuidance
("0 (default) mimimum - 10 maximum printing.");
fpCommandVerbose -> SetParameterName ("verbosity",
omitable = true,
currentAsDefault = true);
}
G4ASCIITreeMessenger::~G4ASCIITreeMessenger() {
delete fpCommandVerbose;
delete fpDirectory;
}
G4String G4ASCIITreeMessenger::GetCurrentValue
(G4UIcommand* command) {
return "0";
}
void G4ASCIITreeMessenger::SetNewValue
(G4UIcommand* command, G4String newValue) {
fpASCIITree->SetVerbosity
(fpCommandVerbose->GetNewIntValue(newValue));
G4cout << "G4ASCIITree verbosity now "
<< fpASCIITree->GetVerbosity()
<< G4endl;
}
@@ -0,0 +1,145 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4ASCIITreeSceneHandler.cc,v 1.8.2.1 2001/06/28 19:15:56 gunter Exp $
// GEANT4 tag $Name: $
//
//
// John Allison 5th April 2001
// A scene handler to dump geometry hierarchy.
// Based on a provisional G4ASCIITreeGraphicsScene (was in modeling).
#include "G4ASCIITreeSceneHandler.hh"
#include "G4ASCIITree.hh"
#include "G4VSolid.hh"
#include "G4PhysicalVolumeModel.hh"
#include "G4VPhysicalVolume.hh"
#include "G4LogicalVolume.hh"
#include "G4VPVParameterisation.hh"
G4ASCIITreeSceneHandler::G4ASCIITreeSceneHandler(G4VGraphicsSystem& system,
const G4String& name):
G4VTreeSceneHandler(system, name) {}
G4ASCIITreeSceneHandler::~G4ASCIITreeSceneHandler () {}
void G4ASCIITreeSceneHandler::BeginModeling () {
G4VTreeSceneHandler::BeginModeling (); // To re-use "culling off" code.
const G4ASCIITree* pSystem = (G4ASCIITree*)GetGraphicsSystem();
const G4int verbosity = pSystem->GetVerbosity();
G4cout << "\nG4ASCIITreeSceneHandler::BeginModeling:"
"\n set verbosity with \"/vis/ASCIITree/verbose <verbosity>\":"
"\n < 10: - does not print daughters of repeated logical volumes."
"\n - does not repeat replicas."
"\n >= 10: prints all physical volumes."
"\n For level of detail add:"
"\n >= 0: prints physical volume name."
"\n >= 1: prints logical volume name."
"\n >= 2: prints solid name and type."
"\n Note: all culling, if any, is switched off so all volumes are seen."
"\n Now printing with verbosity " << verbosity << G4endl;
}
void G4ASCIITreeSceneHandler::EndModeling () {
fLVSet.clear();
fReplicaSet.clear();
G4cout << "G4ASCIITreeSceneHandler::EndModeling" << G4endl;
G4VTreeSceneHandler::EndModeling (); // To re-use "culling off" code.
}
void G4ASCIITreeSceneHandler::Dump (const G4VSolid& solid) {
const G4ASCIITree* pSystem = (G4ASCIITree*)GetGraphicsSystem();
const G4int verbosity = pSystem->GetVerbosity();
const G4int detail = verbosity % 10;
if (verbosity < 10 && fReplicaSet.find(fpCurrentPV) != fReplicaSet.end()) {
// Ignore if an already treated replica. (Assumes that the model
// which has invoked this function is a G4PhysicalVolumeModel - we
// check this by testing fpCurrentPV.)
if (fpCurrentPV) {
((G4PhysicalVolumeModel*)fpModel)->CurtailDescent();
return;
}
}
// Print indented text...
for (G4int i = 0; i < fCurrentDepth; i++ ) G4cout << " ";
G4cout << "\"" << fpCurrentPV->GetName()
<< "\", copy no. " << fpCurrentPV->GetCopyNo();
if (detail >= 1) {
G4cout << ", belongs to logical volume \""
<< fpCurrentLV->GetName() << "\"";
}
if (detail >= 2) {
G4cout << " and is composed of solid \""
<< fpCurrentLV->GetSolid()->GetName()
<< "\" of type \""
<< fpCurrentLV->GetSolid()->GetEntityType() << "\"";
}
if (fpCurrentPV->IsReplicated()) {
fReplicaSet.insert(fpCurrentPV); // Record new replica volume.
if (verbosity < 10) {
// Add printing for replicas (when replicas are ignored)...
EAxis axis;
G4int nReplicas;
G4double width;
G4double offset;
G4bool consuming;
fpCurrentPV->GetReplicationData(axis,nReplicas,width,offset,consuming);
G4VPVParameterisation* pP = fpCurrentPV->GetParameterisation();
G4cout << " (" << nReplicas;
if (pP) {
G4cout << " parametrised volumes)";
}
else {
G4cout << " replicas)";
}
}
}
else {
if (fLVSet.find(fpCurrentLV) != fLVSet.end()) {
if (verbosity < 10) {
// Add printing for repeated logical volume...
G4cout << " (repeated logical volume)";
// Ignore if an already treated logical volume.
if (fpCurrentPV) {
((G4PhysicalVolumeModel*)fpModel)->CurtailDescent();
G4cout << G4endl;
return;
}
}
}
}
if (fLVSet.find(fpCurrentLV) == fLVSet.end()) {
fLVSet.insert(fpCurrentLV); // Record new logical volume.
}
G4cout << G4endl;
return;
}
@@ -0,0 +1,36 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4ASCIITreeViewer.cc,v 1.3.2.1 2001/06/28 19:15:56 gunter Exp $
// GEANT4 tag $Name: $
#include "G4ASCIITreeViewer.hh"
#include "G4ios.hh"
#include "g4std/strstream"
G4ASCIITreeViewer::G4ASCIITreeViewer
(G4VSceneHandler& sceneHandler, const G4String& name):
G4VTreeViewer(sceneHandler, name) {}
G4ASCIITreeViewer::~G4ASCIITreeViewer() {}
@@ -0,0 +1,70 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// Satoshi Tanaka 31th May 2001
// A graphics system to dump geometry hierarchy to GAG.
#include "G4GAGTree.hh"
#include "G4GAGTreeSceneHandler.hh"
#include "G4GAGTreeViewer.hh"
#include "G4GAGTreeMessenger.hh"
G4GAGTree::G4GAGTree ():
G4VTree ("GAGTree",
"GAGTree",
"A graphics system to dump geometry hierarchy"
"\n to GAG.",
G4VGraphicsSystem::nonEuclidian) {
fpMessenger = new G4GAGTreeMessenger(this);
}
G4GAGTree::~G4GAGTree () {
delete fpMessenger;
}
G4VSceneHandler* G4GAGTree::CreateSceneHandler (const G4String& name) {
G4VSceneHandler* pScene = new G4GAGTreeSceneHandler (*this, name);
G4cout << G4GAGTreeSceneHandler::GetSceneCount ()
<< ' ' << fName << " scene handlers extanct." << G4endl;
return pScene;
}
G4VViewer* G4GAGTree::CreateViewer (G4VSceneHandler& scene,
const G4String& name) {
G4VViewer* pView =
new G4GAGTreeViewer ((G4GAGTreeSceneHandler&) scene, name);
if (pView) {
if (pView -> GetViewId () < 0) {
G4cerr << "G4GAGTree::CreateViewer: error flagged by negative"
" view id in G4GAGTreeViewer creation."
"\n Destroying view and returning null pointer."
<< G4endl;
delete pView;
pView = 0;
}
}
else {
G4cerr << "G4GAGTree::CreateViewer: null pointer on"
" new G4GAGTreeViewer." << G4endl;
}
return pView;
}
@@ -0,0 +1,66 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// Satoshi Tanaka 31th May 2001
//
// A messenger for G4GAGTree driver.
#include "G4GAGTreeMessenger.hh"
#include "G4GAGTree.hh"
#include "G4UIcommand.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithAnInteger.hh"
G4GAGTreeMessenger::G4GAGTreeMessenger
(G4GAGTree* GAGTree):
fpGAGTree(GAGTree) {
G4bool omitable, currentAsDefault;
fpDirectory = new G4UIdirectory ("/vis/GAGTree/");
fpDirectory -> SetGuidance ("Commands for GAGTree control.");
fpCommandVerbose = new G4UIcmdWithAnInteger ("/vis/GAGTree/verbose", this);
fpCommandVerbose -> SetGuidance ("/vis/GAGTree/verbose [<verbosity>]");
fpCommandVerbose -> SetGuidance
("0 (default) mimimum - 10 maximum printing.");
fpCommandVerbose -> SetParameterName ("verbosity",
omitable = true,
currentAsDefault = true);
}
G4GAGTreeMessenger::~G4GAGTreeMessenger() {
delete fpCommandVerbose;
delete fpDirectory;
}
G4String G4GAGTreeMessenger::GetCurrentValue
(G4UIcommand* command) {
return "0";
}
void G4GAGTreeMessenger::SetNewValue
(G4UIcommand* command, G4String newValue) {
fpGAGTree->SetVerbosity
(fpCommandVerbose->GetNewIntValue(newValue));
G4cout << "G4GAGTree verbosity now "
<< fpGAGTree->GetVerbosity()
<< G4endl;
}
@@ -0,0 +1,296 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// Satoshi Tanaka 31th May 2001
// A scene handler to dump geometry hierarchy to GAG.
#include "g4std/strstream"
#include "G4GAGTreeSceneHandler.hh"
#include "G4GAGTree.hh"
#include "G4VSolid.hh"
#include "G4PhysicalVolumeModel.hh"
#include "G4VPhysicalVolume.hh"
#include "G4LogicalVolume.hh"
#include "G4VPVParameterisation.hh"
// #define DEBUG_GAG_TREE
const G4String GAG_TREE_WORLD_VOLUME_NAME ( "WORLD" );
const G4String GAG_TREE_BEGIN_DTREE ( "@@DTREEBegin" );
const G4String GAG_TREE_END_DTREE ( "@@DTREEEnd" );
//-----
G4GAGTreeSceneHandler::G4GAGTreeSceneHandler(G4VGraphicsSystem& system,
const G4String& name):
G4VTreeSceneHandler(system, name)
{
ClearPVList();
}
//-----
G4GAGTreeSceneHandler::~G4GAGTreeSceneHandler ()
{
ClearPVList();
}
//-----
void G4GAGTreeSceneHandler::ClearPVList(void)
{
fPVNameList.Clear() ;
fPrevDepth = 0 ;
fPrevAbsPVName = "";
fPVCounter = 0 ;
}
//-----
void G4GAGTreeSceneHandler::InitializePVList(void)
{
fPVNameList.Clear();
fPVNameList.Push( GAG_TREE_WORLD_VOLUME_NAME );
fPrevDepth = 0 ;
fPrevAbsPVName = "";
fPVCounter = 0 ;
}
//-----
void G4GAGTreeSceneHandler::BeginModeling ()
{
// To re-use "culling off" code.
G4VTreeSceneHandler::BeginModeling ();
// Initialize the stack the the tree generation
InitializePVList();
// Get the current verbosity level
const G4GAGTree* pSystem = (G4GAGTree*)GetGraphicsSystem();
const G4int verbosity = pSystem->GetVerbosity();
// Beginning of the tree output
G4cout << "\nG4GAGTreeSceneHandler::BeginModeling:"
"\n set verbosity with \"/vis/GAGTree/verbose <verbosity>\":"
"\n < 10: - does not print daughters of repeated logical volumes."
"\n - does not repeat replicas."
"\n >= 10: prints all physical volumes."
"\n FORMAT: PV_name.copy_no.index"
"\n For level of detail add:"
"\n >= 0: prints physical volume name and copy number."
"\n FORMAT: PV_name.copy_no.index"
"\n >= 1: prints logical volume name."
"\n FORMAT: PV_name.copy_no.LV_name.index"
"\n >= 2: prints solid name and type."
"\n FORMAT: PV_name.copy_no.LV_name.solid_name.solid_type.index"
"\n Note: all culling, if any, is switched off so all volumes are seen."
"\n Now printing with verbosity " << verbosity << G4endl;
// Declare to start GAG tree
G4cout << GAG_TREE_BEGIN_DTREE << G4endl;
}
void G4GAGTreeSceneHandler::EndModeling ()
{
// Dump the last PV node
if( fPrevAbsPVName != "" ) { G4cout << fPrevAbsPVName << G4endl; }
// Declare to end GAG tree
G4cout << GAG_TREE_END_DTREE << G4endl;
G4cout << "G4GAGTreeSceneHandler::EndModeling" << G4endl;
// Clear the sets
fLVSet.clear();
fReplicaSet.clear();
// Clear the stack for the tree generation
ClearPVList();
// To re-use "culling off" code.
G4VTreeSceneHandler::EndModeling ();
}
void G4GAGTreeSceneHandler::Dump (const G4VSolid& solid)
{
//////////////////////////////
G4String cur_abs_pv_name ;
G4String pv_name_tmp ;
G4String cur_pv_name ( fpCurrentPV->GetName() ) ;
//////////////////////////////
const G4GAGTree* pSystem = (G4GAGTree*)GetGraphicsSystem();
const G4int verbosity = pSystem->GetVerbosity();
const G4int detail = verbosity % 10;
if (verbosity < 10 && fReplicaSet.find(fpCurrentPV) != fReplicaSet.end()) {
// Ignore if an already treated replica. (Assumes that the model
// which has invoked this function is a G4PhysicalVolumeModel - we
// check this by testing fpCurrentPV.)
if (fpCurrentPV) {
((G4PhysicalVolumeModel*)fpModel)->CurtailDescent();
return;
}
}
///////////////////////////////////////////////////////////
// Add the extension ".details.index" to the current PV node
// Step 1: Initialize the extension
const int CHAR_LENGTH = 1024;
char pv_ext [CHAR_LENGTH]; pv_ext[0] = '\0';
G4std::ostrstream ost (pv_ext, CHAR_LENGTH);
// Step 2: Generate the extension
// copy number
ost << "." << fpCurrentPV->GetCopyNo() ;
if (detail >= 1) {
// LV name
ost << "." << fpCurrentLV->GetName() ;
}
if (detail >= 2) {
// Solid info
ost << "." << fpCurrentLV->GetSolid()->GetName();
ost << "." << fpCurrentLV->GetSolid()->GetEntityType() ;
}
// Tree index (0 for the world)
ost << "." << fPVCounter << '\0' ;
// Step 3: Add the extention to the current PV name
cur_pv_name += pv_ext ;
// End of adding extension
// Search a mother PV node for the current PV
// in the direction to the root node.
// depth_mother = depth_current - 1
if( fCurrentDepth > fPrevDepth )
{
// Do nothing (The mother is the previous PV node)
} else {
while (1)
{
// Delete the head item of the list
fPVNameList.Pop();
// Is the right mother at the head of the list?
// Note: The mother of the world has depth -1.
// It happens when the current node is the world volume,
// and so the list becomes empty with the popping above.
G4int trial_mother_depth = fPVNameList.GetHeadIndex() ;
if ( fCurrentDepth > trial_mother_depth ) break ;
}
} // if-else
// Add the curent PV to the tree as a new node/leaf
fPVNameList.Push( cur_pv_name );
// Make the absolute path name
fPVNameList.ToTail() ;
while ( fPVNameList.GetItem ( pv_name_tmp ) ) {
cur_abs_pv_name += "/" ;
cur_abs_pv_name += pv_name_tmp ;
fPVNameList.Upward();
}
// Add "/" to the PREVIOUS PV node name if it is not a leaf.
if( fPrevAbsPVName != "" )
{
// Add "/"
if( fCurrentDepth > fPrevDepth ) {fPrevAbsPVName += "/" ;}
}
// Print the PREVIOUS node after node/leaf distiction
// is made clear by reading the current node.
if( fPrevAbsPVName != "" ) { G4cout << fPrevAbsPVName ; }
///////////////////////////////////////////////////////////
if (fpCurrentPV->IsReplicated()) {
fReplicaSet.insert(fpCurrentPV); // Record new replica volume.
if (verbosity < 10) {
// Add printing for replicas (when replicas are ignored)...
EAxis axis;
G4int nReplicas;
G4double width;
G4double offset;
G4bool consuming;
fpCurrentPV->GetReplicationData(axis,nReplicas,width,offset,consuming);
G4VPVParameterisation* pP = fpCurrentPV->GetParameterisation();
#if defined DEBUG_GAG_TREE
G4cout << "_(" << nReplicas;
#endif
if (pP) {
#if defined DEBUG_GAG_TREE
G4cout << " parametrised volumes)";
#endif
}
else {
#if defined DEBUG_GAG_TREE
G4cout << " replicas)";
#endif
}
}
}
else {
if (fLVSet.find(fpCurrentLV) != fLVSet.end()) {
if (verbosity < 10) {
// Add printing for repeated logical volume...
#if defined DEBUG_GAG_TREE
G4cout << " (repeated logical volume)";
#endif
// Ignore if an already treated logical volume.
if (fpCurrentPV) {
((G4PhysicalVolumeModel*)fpModel)->CurtailDescent();
G4cout << G4endl;
return;
}
}
}
}
if (fLVSet.find(fpCurrentLV) == fLVSet.end()) {
fLVSet.insert(fpCurrentLV); // Record new logical volume.
}
////////////////////////
// End of printing
if( fPrevAbsPVName != "" ) { G4cout << G4endl;}
// Prepare for the next call, i.e. the next PV.
fPrevDepth = fCurrentDepth ;
fPrevAbsPVName = cur_abs_pv_name ;
fPVCounter++ ;
////////////////////////
return;
}
@@ -0,0 +1,35 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// Satoshi Tanaka 31th May 2001
// A dummy viewer for GAGTreeSceneHandler.
#include "G4GAGTreeViewer.hh"
#include "G4ios.hh"
#include "g4std/strstream"
G4GAGTreeViewer::G4GAGTreeViewer
(G4VSceneHandler& sceneHandler, const G4String& name):
G4VTreeViewer(sceneHandler, name) {}
G4GAGTreeViewer::~G4GAGTreeViewer() {}
+44
View File
@@ -0,0 +1,44 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4VTree.cc,v 1.3.2.1 2001/06/28 19:15:57 gunter Exp $
// GEANT4 tag $Name: $
//
//
// John Allison 5th April 2001
// A graphics system to dump geometry hierarchy.
#include "G4VTree.hh"
#include "G4VTreeSceneHandler.hh"
#include "G4VTreeViewer.hh"
G4VTree::G4VTree (const G4String& name,
const G4String& nickname,
const G4String& description,
Functionality f):
G4VGraphicsSystem (name,
nickname,
description,
f) {}
G4VTree::~G4VTree () {}
@@ -0,0 +1,86 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4VTreeSceneHandler.cc,v 1.4.2.1 2001/06/28 19:15:57 gunter Exp $
// GEANT4 tag $Name: $
//
//
// John Allison 5th April 2001
// A base class for a scene handler to dump geometry hierarchy.
// Based on a provisional G4VTreeGraphicsScene (was in modeling).
#include "G4VTreeSceneHandler.hh"
#include "G4VSolid.hh"
#include "G4PhysicalVolumeModel.hh"
#include "G4VPhysicalVolume.hh"
#include "G4LogicalVolume.hh"
#include "G4ModelingParameters.hh"
G4int G4VTreeSceneHandler::fSceneIdCount = 0;
// Counter for Tree scene handlers.
G4int G4VTreeSceneHandler::fSceneCount = 0;
// No. of extanct scene handlers.
G4VTreeSceneHandler::G4VTreeSceneHandler(G4VGraphicsSystem& system,
const G4String& name):
G4VSceneHandler(system, fSceneIdCount++, name),
fCurrentDepth (0),
fpCurrentPV (0),
fpCurrentLV (0),
fpCurrentObjectTransformation (0)
{
fSceneCount++;
}
G4VTreeSceneHandler::~G4VTreeSceneHandler () {}
void G4VTreeSceneHandler::EstablishSpecials
(G4PhysicalVolumeModel& pvModel) {
pvModel.DefinePointersToWorkingSpace (&fCurrentDepth,
&fpCurrentPV,
&fpCurrentLV);
}
void G4VTreeSceneHandler::BeginModeling() {
G4VSceneHandler::BeginModeling(); // Required: see G4VSceneHandler.hh.
// Force culling off...
if (fpModel) {
fpOriginalMP = fpModel->GetModelingParameters();
if (fpOriginalMP) {
fpNonCullingMP = new G4ModelingParameters(*fpOriginalMP);
fpNonCullingMP->SetCulling(false);
((G4VModel*)fpModel)->SetModelingParameters(fpNonCullingMP);
// Note the deliberate casting away of const.
}
}
}
void G4VTreeSceneHandler::EndModeling() {
if (fpModel && fpOriginalMP) {
((G4VModel*)fpModel)->SetModelingParameters(fpOriginalMP);
delete fpNonCullingMP;
}
G4VSceneHandler::EndModeling(); // Required: see G4VSceneHandler.hh.
}
@@ -0,0 +1,47 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4VTreeViewer.cc,v 1.3.2.1 2001/06/28 19:15:57 gunter Exp $
// GEANT4 tag $Name: $
#include "G4VTreeViewer.hh"
#include "G4ios.hh"
#include "g4std/strstream"
#include "G4VSceneHandler.hh"
G4VTreeViewer::G4VTreeViewer
(G4VSceneHandler& sceneHandler, const G4String& name):
G4VViewer(sceneHandler, sceneHandler.IncrementViewCount(), name) {}
G4VTreeViewer::~G4VTreeViewer() {}
void G4VTreeViewer::SetView() {}
void G4VTreeViewer::ClearView() {}
void G4VTreeViewer::DrawView() {
NeedKernelVisit (); // Always need to visit G4 kernel.
ProcessView ();
}