Import Geant4 0.0.0 source tree
This commit is contained in:
@@ -0,0 +1,307 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4VisManagerRegisterMessengers.cc,v 2.10 1998/12/09 23:55:57 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// G4VisManager::RegisterMessengers - John Allison 30/July/1998.
|
||||
|
||||
#include "G4VisManager.hh"
|
||||
#include "G4VVisCommand.hh"
|
||||
#include "G4VisCommandsScene.hh"
|
||||
#include "G4VisCommandsSceneAdd.hh"
|
||||
#include "G4VisCommandsSceneInclude.hh"
|
||||
#include "G4VisCommandsSceneHandler.hh"
|
||||
#include "G4VisCommandsViewer.hh"
|
||||
|
||||
// OLD STYLE!!
|
||||
#include "G4VisManMessenger.hh"
|
||||
#include "G4VisCommandTemplates.hh"
|
||||
#include "G4VisCommandsCamera.hh"
|
||||
#include "G4VisCommandsClear.hh"
|
||||
#include "G4VisCommandsCopy.hh"
|
||||
#include "G4VisCommandsCreateScene.hh"
|
||||
#include "G4VisCommandsCreateView.hh"
|
||||
#include "G4VisCommandsDelete.hh"
|
||||
#include "G4VisCommandsDraw.hh"
|
||||
#include "G4VisCommandsLights.hh"
|
||||
#include "G4VisCommandsPrint.hh"
|
||||
#include "G4VisCommandsRefresh.hh"
|
||||
#include "G4VisCommandsSet.hh"
|
||||
#include "G4VisCommandsShow.hh"
|
||||
|
||||
#include "G4ios.hh"
|
||||
#include <assert.h>
|
||||
|
||||
void G4VisManager::RegisterMessengers () {
|
||||
|
||||
/******************************************************************
|
||||
|
||||
(Extract for working note.)
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
This note defines the concepts of scene, scene handler and viewers.
|
||||
For reasons which are lost in history they correspond to confusingly
|
||||
differently named objects in Geant4. What we would like to call a
|
||||
scene is a G4SceneData object and a G4VScene object is a scene
|
||||
handler. Similarly a viewer is represented by a G4VView object.
|
||||
However, this is historical, and changing C++ names is a pain. I dont
|
||||
plan to change names right now!!
|
||||
|
||||
The situation ca be summarised as follows:
|
||||
|
||||
Working Concept (Terms Used Below) Geant4 C++ Object
|
||||
---------------------------------- -----------------
|
||||
scene G4SceneData
|
||||
scene handler Sub-class of G4VScene
|
||||
viewer Sub-class of G4VView
|
||||
|
||||
Scenes
|
||||
======
|
||||
|
||||
We introduce the concept of a graphics-system-independent scene, which
|
||||
is a list of visualizable objects, such as detector components
|
||||
(G4PhysicalVolumeModels), hits, trajectories. The G4VisManager
|
||||
manages a list of scenes.
|
||||
|
||||
* means "not implemented yet".
|
||||
|
||||
/vis/scene/create [<scene-name>]
|
||||
/vis/scene/list [-l] [<scene-name>]
|
||||
/vis/scene/select [<scene-name>]
|
||||
* /vis/scene/edit
|
||||
/vis/scene/remove <scene-name>
|
||||
/vis/scene/add/volume [<physical-volume-name>] [<copy-no>] [<depth>]
|
||||
/vis/scene/add/ghosts [<particle>]
|
||||
* /vis/scene/add/ghost [<particle>] [<physical-volume-name>]
|
||||
[<copy-no>] [<depth>]
|
||||
/vis/scene/include/hits [<sensitive-volume-name>] (argument not impl'd yet.)
|
||||
/vis/scene/include/trajectories [<sensitive-volume-name>] (do.)
|
||||
* /vis/scene/include/transientObjects
|
||||
* /vis/scene/set/hitOption accumulate|byEvent
|
||||
* /vis/scene/set/notifyOption immediate|delayed
|
||||
* /vis/scene/set/modelingStyle [<modeling-style>]
|
||||
* /vis/scene/notifyHandlers
|
||||
|
||||
|
||||
Scene Handlers
|
||||
==============
|
||||
|
||||
A scene handler is a graphics-system-specific thing that turns a scene
|
||||
into something that the graphics system can understand.
|
||||
|
||||
The commands would look something like:
|
||||
|
||||
/vis/sceneHandler/create <graphics-system> [<scene-handler-name>]
|
||||
/vis/sceneHandler/attach [<scene-name>]
|
||||
/vis/sceneHandler/list
|
||||
/vis/sceneHandler/select [<scene-handler-name>]
|
||||
/vis/sceneHandler/remove <scene-handler-name>
|
||||
* /vis/sceneHandler/processScene
|
||||
* /vis/sceneHandler/notifyEndOfProcessiing
|
||||
|
||||
|
||||
Viewers
|
||||
=======
|
||||
|
||||
A viewer opens windows and draws to the screen, hardcopy, etc. It can
|
||||
be dumb (a non-interactive window) or intelligent (respond to mouse
|
||||
clicks, spawn other windows, change viewpoint, etc.).
|
||||
|
||||
/vis/viewer/create [<scene-handler>] [<viewer-name>]
|
||||
/vis/viewer/list
|
||||
/vis/viewer/select [<viewer-name>]
|
||||
/vis/viewer/remove <viewer-name>
|
||||
* /vis/viewer/set/style wireframe|surface|logical
|
||||
* /vis/viewer/set/viewpoint
|
||||
* /vis/viewer/set/notifyOption immediate|delayed
|
||||
* /vis/viewer/notifyHandler
|
||||
* /vis/viewer/clone
|
||||
* /vis/viewer/update
|
||||
|
||||
|
||||
Global Commands
|
||||
===============
|
||||
|
||||
* /vis/copy/sceneAndView <from-viewer-name> <to-viewer-name>
|
||||
|
||||
|
||||
Compound Commands
|
||||
=================
|
||||
|
||||
* /vis/create/view OGLSXM
|
||||
|
||||
would be
|
||||
|
||||
/vis/scene/create
|
||||
/vis/sceneHandler/create $1
|
||||
/vis/sceneHandler/attach
|
||||
/vis/viewer/create
|
||||
|
||||
and
|
||||
|
||||
* /vis/draw Calorimiter
|
||||
|
||||
would be
|
||||
|
||||
/vis/scene/add/volume $1
|
||||
/vis/sceneHandler/processScene
|
||||
/vis/sceneHandler/notifyEndOfProcessiing
|
||||
/vis/viewer/update
|
||||
|
||||
or some such.
|
||||
|
||||
******************************************************************/
|
||||
|
||||
// Instantiate individual messengers/commands (usually one command
|
||||
// per messenger).
|
||||
|
||||
//A The GEANT4 commands available with the GEANT4 Visualization
|
||||
//A System.
|
||||
|
||||
// Introduction
|
||||
|
||||
//I The GEANT4 Visualization System consists of a Visualization
|
||||
//I Manager and a Visualization Interface. The problem is to design
|
||||
//I a set of commands which offer the GEANT4 user good functionality
|
||||
//I and, at the same time, maximally exploit the power of modern
|
||||
//I graphics systems. The chief concept is the scene, a
|
||||
//I graphics-system-independent list of visualizable GEANT4 objects,
|
||||
//I which can be rendered to any graphics system in a variety of
|
||||
//I ways. If the graphics system has its own graphical database,
|
||||
//I this is used.
|
||||
|
||||
G4VVisCommand::SetVisManager (this);
|
||||
|
||||
G4UIcommand* command;
|
||||
command = new G4UIdirectory ("/vis/");
|
||||
command -> SetGuidance ("Visualization commands.");
|
||||
|
||||
//S \subsection {Scenes}
|
||||
//S
|
||||
//S A GEANT4 scene is a set of visualizable objects which can be created,
|
||||
//S edited and copied independent of any graphics system.
|
||||
|
||||
command = new G4UIdirectory ("/vis/scene/");
|
||||
command -> SetGuidance ("Operations on Geant4 scenes.");
|
||||
fMessengerList.append (new G4VisCommandSceneCreate);
|
||||
fMessengerList.append (new G4VisCommandSceneList);
|
||||
// fMessengerList.append (new G4VisCommandSceneNotifyHandlers); (Not ready!)
|
||||
fMessengerList.append (new G4VisCommandSceneSelect);
|
||||
fMessengerList.append (new G4VisCommandSceneRemove);
|
||||
command = new G4UIdirectory ("/vis/scene/add/");
|
||||
command -> SetGuidance ("Add model to current scene.");
|
||||
fMessengerList.append (new G4VisCommandSceneAddVolume);
|
||||
fMessengerList.append (new G4VisCommandSceneAddGhosts);
|
||||
command = new G4UIdirectory ("/vis/scene/include/");
|
||||
command -> SetGuidance ("Include drawing option in current scene.");
|
||||
fMessengerList.append (new G4VisCommandSceneIncludeHits);
|
||||
fMessengerList.append (new G4VisCommandSceneIncludeTrajectories);
|
||||
command = new G4UIdirectory ("/vis/sceneHandler/");
|
||||
command -> SetGuidance ("Operations on Geant4 scene handlers.");
|
||||
fMessengerList.append (new G4VisCommandSceneHandlerAttach);
|
||||
fMessengerList.append (new G4VisCommandSceneHandlerCreate);
|
||||
fMessengerList.append (new G4VisCommandSceneHandlerList);
|
||||
fMessengerList.append (new G4VisCommandSceneHandlerSelect);
|
||||
fMessengerList.append (new G4VisCommandSceneHandlerRemove);
|
||||
command = new G4UIdirectory ("/vis/viewer/");
|
||||
command -> SetGuidance ("Operations on Geant4 viewers.");
|
||||
fMessengerList.append (new G4VisCommandViewerCreate);
|
||||
fMessengerList.append (new G4VisCommandViewerList);
|
||||
fMessengerList.append (new G4VisCommandViewerSelect);
|
||||
fMessengerList.append (new G4VisCommandViewerRemove);
|
||||
|
||||
// Camera - OLD STYLE!!
|
||||
fMessengerList.append
|
||||
(new G4VisCommandDirectoryMessenger <G4VisCommandCamera>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandCameraReset>);
|
||||
|
||||
// Clear - OLD STYLE!!
|
||||
fMessengerList.append
|
||||
(new G4VisCommandDirectoryMessenger <G4VisCommandClear>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandClearScene>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandClearView>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandClearViewAndScene>);
|
||||
|
||||
// Copy - OLD STYLE!!
|
||||
fMessengerList.append
|
||||
(new G4VisCommandDirectoryMessenger <G4VisCommandCopy>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandCopyAll>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandCopyScene>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandCopyView>);
|
||||
|
||||
// Create Scene - OLD STYLE!!
|
||||
fMessengerList.append
|
||||
(new G4VisCommandDirectoryMessenger <G4VisCommandCreateScene>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandCreateSceneClear>);
|
||||
|
||||
// Create View - OLD STYLE!!
|
||||
fMessengerList.append
|
||||
(new G4VisCommandDirectoryMessenger <G4VisCommandCreateView>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandCreateViewNewScene>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandCreateViewNewView>);
|
||||
|
||||
// Delete - OLD STYLE!!
|
||||
fMessengerList.append
|
||||
(new G4VisCommandDirectoryMessenger <G4VisCommandDelete>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandDeleteScene>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandDeleteView>);
|
||||
|
||||
// Draw - OLD STYLE!!
|
||||
fMessengerList.append
|
||||
(new G4VisCommandDirectoryMessenger <G4VisCommandDraw>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandDrawCurrent>);
|
||||
|
||||
// Lights - OLD STYLE!!
|
||||
fMessengerList.append
|
||||
(new G4VisCommandDirectoryMessenger <G4VisCommandLights>);
|
||||
fMessengerList.append
|
||||
(new G4VisButtonCommandMessenger <G4VisCommandLightsMoveWithCamera>);
|
||||
|
||||
// Print - OLD STYLE!!
|
||||
fMessengerList.append
|
||||
(new G4VisCommandDirectoryMessenger <G4VisCommandPrint>);
|
||||
|
||||
// Refresh - OLD STYLE!!
|
||||
fMessengerList.append
|
||||
(new G4VisCommandDirectoryMessenger <G4VisCommandRefresh>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandRefreshView>);
|
||||
|
||||
// Set - OLD STYLE!!
|
||||
fMessengerList.append
|
||||
(new G4VisCommandDirectoryMessenger <G4VisCommandSet>);
|
||||
fMessengerList.append
|
||||
(new G4VisButtonCommandMessenger <G4VisCommandSetCulling>);
|
||||
fMessengerList.append
|
||||
(new G4VisButtonCommandMessenger <G4VisCommandSetCullCoveredDaughters>);
|
||||
fMessengerList.append
|
||||
(new G4VisButtonCommandMessenger <G4VisCommandSetCullInvisible>);
|
||||
|
||||
// Show - OLD STYLE!!
|
||||
fMessengerList.append
|
||||
(new G4VisCommandDirectoryMessenger <G4VisCommandShow>);
|
||||
fMessengerList.append
|
||||
(new G4VisSimpleCommandMessenger <G4VisCommandShowView>);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user