Import Geant4 7.0.0 source tree
This commit is contained in:
+13
-1
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.10 2003/12/09 08:09:58 gcosmo Exp $
|
||||
$Id: History,v 1.13 2004/11/27 04:10:32 hajime Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -18,6 +18,18 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
envs-V06-02-00 27 November 2004 Hajime Yoshida
|
||||
-old depricated files
|
||||
-new tag number
|
||||
|
||||
envs-V06-01-02 26 Nov 2004 Hajime Yoshida
|
||||
- MOMO.jar finally tuned
|
||||
- added new example in MomoHome
|
||||
- removed obsolete files
|
||||
|
||||
envs-V06-01-01 25 Nov 2004 Hajime Yoshida
|
||||
- new version of MOMO integrating GAG and Gain
|
||||
|
||||
envs-V05-02-03 09 December 2003 Gabriele Cosmo
|
||||
- New version of MOMO with XML import/export abilities.
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.4 2004/01/05 07:41:56 yhajime Exp $
|
||||
$Id: History,v 1.6 2004/11/26 04:53:21 hajime Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -18,6 +18,16 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
2004 November 26 Hajime Yoshida
|
||||
- replaced MOMO.jar with minor changes
|
||||
- added some example files and README
|
||||
|
||||
2004 November 25 hajime Yoshida
|
||||
- replaced MOMO.jar, a new one integratig GAG and Gain.
|
||||
- removed GAG.jar and gain.jar
|
||||
- updated docs
|
||||
- deleted old files
|
||||
|
||||
2004 January 05 Hajime Yoshida
|
||||
- replaced MOMO.jar with the debugged one
|
||||
(MOMO.jar of 2003 December 8 had a bug in GPE)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,86 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//##### MOMO Main program #####
|
||||
//# ----------------------------------------------------------
|
||||
//# Automatic creation of the main program for Momo environment.
|
||||
// 2002 February, updated for geant4.4.0
|
||||
// --------------------------------------------------------------
|
||||
// MomoN02Test.cc generated by Geant4 Momo
|
||||
// at Thu Mar 14 22:07:54 JST 2002
|
||||
|
||||
|
||||
// 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.
|
||||
//
|
||||
//
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4UImanager.hh"
|
||||
// Your choice of User Interface driver
|
||||
#include "G4UIGAG.hh"
|
||||
// Detector geometry generated by Momo's GGE
|
||||
#include "MomoN02MyDetector.hh"
|
||||
// Physics List generated by Momo's GPE
|
||||
#include "MomoN02PhysicsList.hh"
|
||||
// Momo's default PrimaryGeneratorAction
|
||||
#include "MomoPrimaryGeneratorAction.hh"
|
||||
#include "MomoRunAction.hh"
|
||||
#include "MomoEventAction.hh"
|
||||
#ifdef G4VIS_USE
|
||||
#include "MomoVisManager.hh"
|
||||
#endif
|
||||
int main()
|
||||
{
|
||||
// Construct the default run manager
|
||||
G4RunManager* runManager = new G4RunManager;
|
||||
// set mandatory initialization classes
|
||||
runManager->SetUserInitialization(new MomoN02MyDetector);
|
||||
runManager->SetUserInitialization(new MomoN02PhysicsList);
|
||||
#ifdef G4VIS_USE
|
||||
// visualization manager
|
||||
G4VisManager* visManager = new MomoVisManager;
|
||||
visManager->Initialize();
|
||||
#endif
|
||||
// set mandatory user action class
|
||||
runManager->SetUserAction(new MomoPrimaryGeneratorAction);
|
||||
// set user action classes to visualise trajectories
|
||||
runManager->SetUserAction(new MomoRunAction);
|
||||
runManager->SetUserAction(new MomoEventAction);
|
||||
// Initialize G4 kernel
|
||||
runManager->Initialize();
|
||||
// get the pointer to the User Interface manager
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
G4UIsession * session = new G4UIGAG;
|
||||
session->SessionStart();
|
||||
delete session;
|
||||
// job termination
|
||||
#ifdef G4VIS_USE
|
||||
delete visManager;
|
||||
#endif
|
||||
delete runManager;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//##### MOMO Main program #####
|
||||
//# ----------------------------------------------------------
|
||||
//# Automatic creation of the main program for Momo environment.
|
||||
// 2002 February, updated for geant4.4.0
|
||||
// --------------------------------------------------------------
|
||||
// MomoTest.cc generated by Geant4 Momo
|
||||
// at Thu Mar 14 21:53:59 JST 2002
|
||||
|
||||
|
||||
// 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.
|
||||
//
|
||||
//
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4UImanager.hh"
|
||||
// Your choice of User Interface driver
|
||||
#include "G4UIGAG.hh"
|
||||
// Detector geometry generated by Momo's GGE
|
||||
#include "MomoN02MyDetector.hh"
|
||||
// Physics List generated by Momo's GPE
|
||||
#include "MomoN02PhysicsList.hh"
|
||||
// Momo's default PrimaryGeneratorAction
|
||||
#include "MomoPrimaryGeneratorAction.hh"
|
||||
#include "MomoRunAction.hh"
|
||||
#include "MomoEventAction.hh"
|
||||
#ifdef G4VIS_USE
|
||||
#include "MomoVisManager.hh"
|
||||
#endif
|
||||
int main()
|
||||
{
|
||||
// Construct the default run manager
|
||||
G4RunManager* runManager = new G4RunManager;
|
||||
// set mandatory initialization classes
|
||||
runManager->SetUserInitialization(new MomoN02MyDetector);
|
||||
runManager->SetUserInitialization(new MomoN02PhysicsList);
|
||||
#ifdef G4VIS_USE
|
||||
// visualization manager
|
||||
G4VisManager* visManager = new MomoVisManager;
|
||||
visManager->Initialize();
|
||||
#endif
|
||||
// set mandatory user action class
|
||||
runManager->SetUserAction(new MomoPrimaryGeneratorAction);
|
||||
// set user action classes to visualise trajectories
|
||||
runManager->SetUserAction(new MomoRunAction);
|
||||
runManager->SetUserAction(new MomoEventAction);
|
||||
// Initialize G4 kernel
|
||||
runManager->Initialize();
|
||||
// get the pointer to the User Interface manager
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
G4UIsession * session = new G4UIGAG;
|
||||
session->SessionStart();
|
||||
delete session;
|
||||
// job termination
|
||||
#ifdef G4VIS_USE
|
||||
delete visManager;
|
||||
#endif
|
||||
delete runManager;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# with users selection of G4TARGET, UI and VIS variables
|
||||
# Momo is the name of legendary samurai who conquered bad geants. ---- H. Yoshida.
|
||||
|
||||
name := MomoN02Test
|
||||
name := linac
|
||||
G4TARGET := $(name)
|
||||
G4EXLIB := true
|
||||
|
||||
@@ -14,9 +14,8 @@ G4EXLIB := true
|
||||
G4VIS_USE_DAWN := 1
|
||||
G4VIS_USE_DAWNFILE := 1
|
||||
G4VIS_USE_OPENGLX := 1
|
||||
G4VIS_USE_VRML := 1
|
||||
G4VIS_USE_VRMLFILE := 1
|
||||
G4UI_USE_GAG := 1
|
||||
G4UI_USE_TERMINAL := 1
|
||||
# Vis/GUI built
|
||||
G4VIS_BUILD_DAWN_DRIVER := 1
|
||||
G4VIS_BUILD_DAWNFILE_DRIVER := 1
|
||||
@@ -26,11 +25,15 @@ G4VIS_BUILD_VRMLFILE_DRIVER := 1
|
||||
|
||||
# General Envs defined
|
||||
G4SYSTEM:=Linux-g++
|
||||
G4INSTALL:=/home/yoshidah/geant4.4.0-ref02
|
||||
G4BINDIR:=/home/yoshidah/geant4.4.0-ref02/bin/Linux-g++
|
||||
G4INSTALL:=/home/yoshidah/geant4
|
||||
G4WORKDIR:=/home/yoshidah/geant4
|
||||
G4BINDIR:=/home/yoshidah/geant4/bin/Linux-g++
|
||||
G4USE_STL:=1
|
||||
G4LIB_BUILD_SHARED:=1
|
||||
G4LEVELGAMMADATA:=/home/yoshidah/geant4.2s/g4.2ref03/data/PhotonEvaporation
|
||||
G4LIB_BUILD_STATIC:=1
|
||||
NeutronHPCrossSections:=/home/yoshidah/G4data/G4NDL3.7
|
||||
G4LEDATA:=/home/yoshidah/G4data/G4EMLOW2.3
|
||||
G4LEVELGAMMADATA:=/home/yoshidah/G4data/PhotonEvaporation
|
||||
G4RADIOACTIVEDATA:=/home/yoshidah/G4data/RadiativeDecay
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
|
||||
@@ -1,3 +1,49 @@
|
||||
2004 NOvember 26
|
||||
|
||||
A) How to use MOMO.
|
||||
|
||||
1) cd here where src/ and include/ are located
|
||||
2) "java -version" and check that your java virtual machine is version 1.4
|
||||
(1.5 works with some malfuctionning)
|
||||
3) "java -jar ../MOMO.jar" and MOMO starts
|
||||
4) check that "set G4WORKDIR" displays this directory. If you change this,
|
||||
you will have faster access to files in that directory.
|
||||
|
||||
B) How to use the example of a flattening filter
|
||||
|
||||
1) relevant files of this example are
|
||||
./linac.cc
|
||||
./Momomake.gmk
|
||||
./flat.his (a macro file)
|
||||
./src/flatteningFilter.cc
|
||||
./include/flatteningFilter.hh
|
||||
All these files are generated automatically by MOMO, including the history macro file.
|
||||
|
||||
2) fill the tables from the persistent files
|
||||
a) GPE -> load file -> MomoN02PhysicsList.g4ph
|
||||
-> make C++ file -> save in src/
|
||||
-> make header file -> save in include/
|
||||
b) GGE -> load file -> flatteningFilter.g4dt
|
||||
-> make C++ file -> save in src/
|
||||
-> make header file -> savle in include/
|
||||
c) type i the name of the main program in the top field of MOMO panel
|
||||
|
||||
3) Project menu
|
||||
a) make main program -> save here
|
||||
b) make Makefile -> save here
|
||||
c) compile
|
||||
If some errors are found, correct them
|
||||
4) run
|
||||
GAG -> Geant4 -> Start -> file chooser
|
||||
mouse click /control/execute -> file chooser -> flat.his -> OK
|
||||
and you will have OpenGL event display:
|
||||
e- 10MeV, entering the flattenig filter (same as the examples/extended/linac),
|
||||
changing the incident angles
|
||||
|
||||
Enjoy!
|
||||
|
||||
--------------------------------------------------------------------
|
||||
|
||||
2002 March
|
||||
|
||||
Momo's default home directory in which the default src and include
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
#Command History List
|
||||
/control/execute vis.mac
|
||||
/gun/particle e-
|
||||
/gun/direction 0 0 -1
|
||||
/gun/energy 0.01 GeV
|
||||
/gun/position 0 0 110 cm
|
||||
|
||||
/run/beamOn 10 ***NULL*** -1
|
||||
/vis/viewer/zoom 5
|
||||
/vis/viewer/pan 0.1 0 m
|
||||
/vis/viewer/pan 0.1 0 m
|
||||
/vis/viewer/pan 0.1 0 m
|
||||
/vis/viewer/pan 0.1 0 m
|
||||
/vis/viewer/pan 0.1 0 m
|
||||
/vis/viewer/pan 0.1 0 m
|
||||
/vis/viewer/pan 0.1 0 m
|
||||
/vis/viewer/pan 0.1 0 m
|
||||
/vis/viewer/pan 0.1 0 m
|
||||
/vis/viewer/zoom 4
|
||||
/vis/viewer/pan 0.1 0 m
|
||||
/vis/viewer/pan 0.1 0 m
|
||||
/run/beamOn 100 ***NULL*** -1
|
||||
/gun/direction 0.0 0.01 -1
|
||||
/run/beamOn 100 ***NULL*** -1
|
||||
/gun/direction 0.0 0.03 -1
|
||||
/run/beamOn 100 ***NULL*** -1
|
||||
/gun/direction 0.0 0.05 -1
|
||||
/run/beamOn 100 ***NULL*** -1
|
||||
/gun/direction 0.0 0.08 -1
|
||||
/run/beamOn 100 ***NULL*** -1
|
||||
/gun/direction 0.0 0.1 -1
|
||||
/run/beamOn 100 ***NULL*** -1
|
||||
/gun/direction 0.0 0.0 -1
|
||||
/run/beamOn 100 ***NULL*** -1
|
||||
/run/beamOn 100 ***NULL*** -1
|
||||
/run/beamOn 100 ***NULL*** -1
|
||||
Binary file not shown.
@@ -22,7 +22,7 @@
|
||||
//
|
||||
// Taken from
|
||||
// $Id: MomoEventAction.hh,v 1.1 2003/11/04 09:02:26 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
//
|
||||
|
||||
#ifndef MomoEventAction_h
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
// Taken after
|
||||
// $Id: MomoRunAction.hh,v 1.1 2003/11/04 09:02:27 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
//
|
||||
|
||||
#ifndef MomoRunAction_h
|
||||
|
||||
+6
-6
@@ -22,18 +22,18 @@
|
||||
//
|
||||
|
||||
// Geometry Header File
|
||||
// MomoN02MyDetector.hh generated by Geant4 Geometry Editor at Thu Mar 14 10:39:13 JST 2002
|
||||
// flatteningFilter.hh generated by Geant4 Geometry Editor at Thu Nov 25 21:17:02 JST 2004
|
||||
|
||||
|
||||
#ifndef MomoN02MyDetector_h
|
||||
#define MomoN02MyDetector_h 1
|
||||
#ifndef flatteningFilter_h
|
||||
#define flatteningFilter_h 1
|
||||
|
||||
class G4VPhysicalVolume;
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
class MomoN02MyDetector: public G4VUserDetectorConstruction
|
||||
class flatteningFilter: public G4VUserDetectorConstruction
|
||||
{ public:
|
||||
MomoN02MyDetector();
|
||||
~MomoN02MyDetector();
|
||||
flatteningFilter();
|
||||
~flatteningFilter();
|
||||
|
||||
public:
|
||||
G4VPhysicalVolume* Construct();
|
||||
@@ -23,10 +23,10 @@
|
||||
//##### MOMO Main program #####
|
||||
//# ----------------------------------------------------------
|
||||
//# Automatic creation of the main program for Momo environment.
|
||||
// 2002 February, updated for geant4.4.0
|
||||
// 2003 December, updated for geant4.6.0
|
||||
// --------------------------------------------------------------
|
||||
// MomoN02.cc generated by Geant4 Momo
|
||||
// at Thu Mar 14 10:43:11 JST 2002
|
||||
// linac.cc generated by Geant4 Momo
|
||||
// at Sat Nov 27 12:16:36 JST 2004
|
||||
|
||||
|
||||
// This code implementation is the intellectual property of
|
||||
@@ -42,7 +42,7 @@
|
||||
// Your choice of User Interface driver
|
||||
#include "G4UIGAG.hh"
|
||||
// Detector geometry generated by Momo's GGE
|
||||
#include "MomoN02MyDetector.hh"
|
||||
#include "flatteningFilter.hh"
|
||||
// Physics List generated by Momo's GPE
|
||||
#include "MomoN02PhysicsList.hh"
|
||||
// Momo's default PrimaryGeneratorAction
|
||||
@@ -57,7 +57,7 @@ int main()
|
||||
// Construct the default run manager
|
||||
G4RunManager* runManager = new G4RunManager;
|
||||
// set mandatory initialization classes
|
||||
runManager->SetUserInitialization(new MomoN02MyDetector);
|
||||
runManager->SetUserInitialization(new flatteningFilter);
|
||||
runManager->SetUserInitialization(new MomoN02PhysicsList);
|
||||
#ifdef G4VIS_USE
|
||||
// visualization manager
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
// Taken from
|
||||
// $Id: MomoEventAction.cc,v 1.1 2003/11/04 09:02:27 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
//
|
||||
|
||||
|
||||
|
||||
@@ -1,142 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//***** Generated by Geant4 Geometry Editor at Thu Mar 14 10:39:13 JST 2002 *****
|
||||
|
||||
//------HeaderFile-
|
||||
#include "MomoN02MyDetector.hh"
|
||||
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4MaterialTable.hh"
|
||||
#include "G4Element.hh"
|
||||
#include "G4ElementTable.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4PVReplica.hh"
|
||||
#include "G4SDManager.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4Colour.hh"
|
||||
|
||||
MomoN02MyDetector::MomoN02MyDetector()
|
||||
{ ; }
|
||||
MomoN02MyDetector::~MomoN02MyDetector()
|
||||
{ ; }
|
||||
G4VPhysicalVolume* MomoN02MyDetector::Construct( )
|
||||
{
|
||||
// Elements
|
||||
G4Element* elementH = new G4Element( "Hydrogen", "H", 1. , 1.00794*g/mole );
|
||||
G4Element* elementO = new G4Element( "Oxygen", "O", 8. , 15.9994*g/mole );
|
||||
G4Element* elementN = new G4Element( "Nitrogen", "N", 7. , 14.00674*g/mole );
|
||||
|
||||
// Materials from Combination
|
||||
|
||||
G4Material* water = new G4Material("water", 1.0*g/cm3, 2, kStateUndefined, 273.15*kelvin, 1.0*atmosphere );
|
||||
water->AddElement( elementH, 2 );
|
||||
water->AddElement( elementO, 1 );
|
||||
G4Material* Air = new G4Material("Air", 0.0010*g/cm3, 2, kStateUndefined, 273.15*kelvin, 1.0*atmosphere );
|
||||
Air->AddElement( elementN, 0.8 );
|
||||
Air->AddElement( elementO, 0.2 );
|
||||
|
||||
// Materials from Scratch
|
||||
|
||||
|
||||
// Visualization attributes
|
||||
|
||||
|
||||
G4VisAttributes * gray= new G4VisAttributes( G4Colour(204/255. ,204/255. ,204/255. ));
|
||||
|
||||
G4VisAttributes * blue= new G4VisAttributes( G4Colour(51/255. ,255/255. ,255/255. ));
|
||||
|
||||
// Logical Volumes
|
||||
|
||||
G4Box *solidworld= new G4Box("solidworld", 5000.0*mm, 5000.0*mm, 5000.0*mm );
|
||||
G4LogicalVolume * logicalworld = new G4LogicalVolume(solidworld, //its solid
|
||||
Air, //its material
|
||||
"logicalworld" , //its name
|
||||
0,0,0);
|
||||
|
||||
logicalworld->SetVisAttributes(gray);
|
||||
|
||||
G4Tubs *solidwatertank= new G4Tubs("solidwatertank", 0.0*mm, 1500.0*mm, 1500.0*mm, 0.0*deg, 360.0*deg );
|
||||
G4LogicalVolume * logicalwatertank = new G4LogicalVolume(solidwatertank, //its solid
|
||||
water, //its material
|
||||
"logicalwatertank" , //its name
|
||||
0,0,0);
|
||||
|
||||
logicalwatertank->SetVisAttributes(blue);
|
||||
|
||||
|
||||
// Physical Volumes ---- Single Positioned Placement, Repeated Placement, Slicing ---------------------------
|
||||
|
||||
|
||||
// Single Positioned Placement
|
||||
|
||||
G4RotationMatrix rotMatrixworld; // unit rotation matrix
|
||||
G4double angleworld = 0.0*deg; // rotational angle
|
||||
rotMatrixworld.rotateX(angleworld); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * physicalworld= new G4PVPlacement(G4Transform3D(rotMatrixworld, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 0.0*mm)),
|
||||
"physicalworld", //its name (2nd constructor)
|
||||
logicalworld, //its logical volume
|
||||
NULL, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixwatertank; // unit rotation matrix
|
||||
G4double anglewatertank = 0.0*deg; // rotational angle
|
||||
rotMatrixwatertank.rotateX(anglewatertank); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * physicalwatertank= new G4PVPlacement(G4Transform3D(rotMatrixwatertank, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 0.0*mm)),
|
||||
"physicalwatertank", //its name (2nd constructor)
|
||||
logicalwatertank, //its logical volume
|
||||
physicalworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
|
||||
// Repeated Placement Translation
|
||||
|
||||
|
||||
// Repeated Placement AxialSymmetoric
|
||||
|
||||
|
||||
// Slicing Translation
|
||||
|
||||
|
||||
// Slicing AxialSymmetric
|
||||
|
||||
|
||||
// return the physical World
|
||||
|
||||
|
||||
return physicalworld;
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
// MomoN02PhysicsList.cc
|
||||
|
||||
// generated by Geant4 Physics Editor at Thu Mar 14 10:39:12 JST 2002
|
||||
// generated by Geant4 Physics Editor at Thu Nov 25 13:06:26 JST 2004
|
||||
|
||||
#include "MomoN02PhysicsList.hh"
|
||||
|
||||
@@ -89,10 +89,9 @@ void MomoN02PhysicsList::ConstructMesons()
|
||||
G4Eta::EtaDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
G4KaonZero::KaonZeroDefinition();
|
||||
G4AntiKaonZero::AntiKaonZeroDefinition();
|
||||
G4KaonZeroLong::KaonZeroLongDefinition();
|
||||
G4KaonZeroShort::KaonZeroShortDefinition();
|
||||
G4KaonZero::KaonZeroDefinition();
|
||||
}
|
||||
void MomoN02PhysicsList::ConstructBaryons()
|
||||
{
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
// Taken from
|
||||
// $Id: MomoRunAction.cc,v 1.1 2003/11/04 09:02:27 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
//
|
||||
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ void MomoVisManager::RegisterGraphicsSystems () {
|
||||
if (fVerbose > 0) {
|
||||
G4cout <<
|
||||
"\nYou have successfully chosen to use the following graphics systems."
|
||||
<< endl;
|
||||
<< G4endl;
|
||||
PrintAvailableGraphicsSystems ();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,624 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//***** Generated by Geant4 Geometry Editor at Fri Nov 26 11:51:46 JST 2004 *****
|
||||
|
||||
//------HeaderFile-
|
||||
#include "flatteningFilter.hh"
|
||||
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4MaterialTable.hh"
|
||||
#include "G4Element.hh"
|
||||
#include "G4ElementTable.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4Cons.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4PVReplica.hh"
|
||||
#include "G4SDManager.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4Colour.hh"
|
||||
|
||||
flatteningFilter::flatteningFilter()
|
||||
{ ; }
|
||||
flatteningFilter::~flatteningFilter()
|
||||
{ ; }
|
||||
G4VPhysicalVolume* flatteningFilter::Construct( )
|
||||
{
|
||||
// Elements
|
||||
G4Element* elementN = new G4Element( "Nitrogen", "N", 7. , 14.00674*g/mole );
|
||||
G4Element* elementO = new G4Element( "Oxygen", "O", 8. , 15.9994*g/mole );
|
||||
G4Element* elementH = new G4Element( "Hydrogen", "H", 1. , 1.00794*g/mole );
|
||||
|
||||
// Materials from Combination
|
||||
|
||||
G4Material* Air = new G4Material("Air", 1.205*mg/cm3, 2, kStateUndefined, 293.15*kelvin, 1.0*atmosphere );
|
||||
Air->AddElement( elementN, 1 );
|
||||
Air->AddElement( elementO, 0 );
|
||||
G4Material* H2O = new G4Material("H2O", 1.0*g/cm3, 2, kStateUndefined, 273.15*kelvin, 1.0*atmosphere );
|
||||
H2O->AddElement( elementH, 2 );
|
||||
H2O->AddElement( elementO, 1 );
|
||||
|
||||
// Materials from Scratch
|
||||
|
||||
G4Material* Aluminum = new G4Material("Aluminum", 13, 26.981539*g/mole, 2.7*g/cm3,kStateSolid, 273.15*kelvin, 1.0*atmosphere );
|
||||
|
||||
// Visualization attributes
|
||||
|
||||
|
||||
G4VisAttributes * b1= new G4VisAttributes( G4Colour(0/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b2= new G4VisAttributes( G4Colour(10/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b3= new G4VisAttributes( G4Colour(20/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b4= new G4VisAttributes( G4Colour(30/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b5= new G4VisAttributes( G4Colour(39/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b6= new G4VisAttributes( G4Colour(49/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b7= new G4VisAttributes( G4Colour(57/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b8= new G4VisAttributes( G4Colour(67/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b9= new G4VisAttributes( G4Colour(77/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b10= new G4VisAttributes( G4Colour(87/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b11= new G4VisAttributes( G4Colour(94/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b12= new G4VisAttributes( G4Colour(101/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b13= new G4VisAttributes( G4Colour(109/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b14= new G4VisAttributes( G4Colour(117/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b15= new G4VisAttributes( G4Colour(126/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b16= new G4VisAttributes( G4Colour(135/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b17= new G4VisAttributes( G4Colour(146/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * b18= new G4VisAttributes( G4Colour(156/255. ,238/255. ,238/255. ));
|
||||
|
||||
G4VisAttributes * g1= new G4VisAttributes( G4Colour(156/255. ,255/255. ,41/255. ));
|
||||
|
||||
G4VisAttributes * g2= new G4VisAttributes( G4Colour(156/255. ,255/255. ,64/255. ));
|
||||
|
||||
G4VisAttributes * g3= new G4VisAttributes( G4Colour(156/255. ,255/255. ,84/255. ));
|
||||
|
||||
G4VisAttributes * pink= new G4VisAttributes( G4Colour(255/255. ,153/255. ,153/255. ));
|
||||
|
||||
G4VisAttributes * b19= new G4VisAttributes( G4Colour(216/255. ,248/255. ,246/255. ));
|
||||
|
||||
// Logical Volumes
|
||||
|
||||
G4Box *solidworld= new G4Box("solidworld", 1000.0*mm, 1000.0*mm, 4000.0*mm );
|
||||
G4LogicalVolume * world = new G4LogicalVolume(solidworld, //its solid
|
||||
Air, //its material
|
||||
"world" , //its name
|
||||
0,0,0);
|
||||
|
||||
G4Box *solidwaterbox= new G4Box("solidwaterbox", 200.0*mm, 200.0*mm, 200.0*mm );
|
||||
G4LogicalVolume * waterbox = new G4LogicalVolume(solidwaterbox, //its solid
|
||||
H2O, //its material
|
||||
"waterbox" , //its name
|
||||
0,0,0);
|
||||
|
||||
waterbox->SetVisAttributes(pink);
|
||||
|
||||
G4Cons *solidcon1= new G4Cons("solidcon1", 0.0*mm, 1.0E-7*mm, 0.0*mm, 0.25*mm, 0.06*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con1 = new G4LogicalVolume(solidcon1, //its solid
|
||||
Aluminum, //its material
|
||||
"con1" , //its name
|
||||
0,0,0);
|
||||
|
||||
con1->SetVisAttributes(b1);
|
||||
|
||||
G4Cons *solidcon2= new G4Cons("solidcon2", 0.0*mm, 0.51*mm, 0.0*mm, 0.25*mm, 0.065*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con2 = new G4LogicalVolume(solidcon2, //its solid
|
||||
Aluminum, //its material
|
||||
"con2" , //its name
|
||||
0,0,0);
|
||||
|
||||
con2->SetVisAttributes(b2);
|
||||
|
||||
G4Cons *solidcon3= new G4Cons("solidcon3", 0.0*mm, 0.77*mm, 0.0*mm, 0.51*mm, 0.075*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con3 = new G4LogicalVolume(solidcon3, //its solid
|
||||
Aluminum, //its material
|
||||
"con3" , //its name
|
||||
0,0,0);
|
||||
|
||||
con3->SetVisAttributes(b3);
|
||||
|
||||
G4Cons *solidcon4= new G4Cons("solidcon4", 0.0*mm, 1.03*mm, 0.0*mm, 0.77*mm, 0.09*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con4 = new G4LogicalVolume(solidcon4, //its solid
|
||||
Aluminum, //its material
|
||||
"con4" , //its name
|
||||
0,0,0);
|
||||
|
||||
con4->SetVisAttributes(b4);
|
||||
|
||||
G4Cons *solidcon5= new G4Cons("solidcon5", 0.0*mm, 1.54*mm, 0.0*mm, 1.03*mm, 0.22*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con5 = new G4LogicalVolume(solidcon5, //its solid
|
||||
Aluminum, //its material
|
||||
"con5" , //its name
|
||||
0,0,0);
|
||||
|
||||
con5->SetVisAttributes(b5);
|
||||
|
||||
G4Cons *solidcon6= new G4Cons("solidcon6", 0.0*mm, 2.05*mm, 0.0*mm, 1.54*mm, 0.24*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con6 = new G4LogicalVolume(solidcon6, //its solid
|
||||
Aluminum, //its material
|
||||
"con6" , //its name
|
||||
0,0,0);
|
||||
|
||||
con6->SetVisAttributes(b6);
|
||||
|
||||
G4Cons *solidcon7= new G4Cons("solidcon7", 0.0*mm, 2.56*mm, 0.0*mm, 2.05*mm, 0.23*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con7 = new G4LogicalVolume(solidcon7, //its solid
|
||||
Aluminum, //its material
|
||||
"con7" , //its name
|
||||
0,0,0);
|
||||
|
||||
con7->SetVisAttributes(b7);
|
||||
|
||||
G4Cons *solidcon8= new G4Cons("solidcon8", 0.0*mm, 3.07*mm, 0.0*mm, 2.56*mm, 0.23*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con8 = new G4LogicalVolume(solidcon8, //its solid
|
||||
Aluminum, //its material
|
||||
"con8" , //its name
|
||||
0,0,0);
|
||||
|
||||
con8->SetVisAttributes(b8);
|
||||
|
||||
G4Cons *solidcon9= new G4Cons("solidcon9", 0.0*mm, 3.58*mm, 0.0*mm, 3.07*mm, 0.225*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con9 = new G4LogicalVolume(solidcon9, //its solid
|
||||
Aluminum, //its material
|
||||
"con9" , //its name
|
||||
0,0,0);
|
||||
|
||||
con9->SetVisAttributes(b9);
|
||||
|
||||
G4Cons *solidcon10= new G4Cons("solidcon10", 0.0*mm, 4.09*mm, 0.0*mm, 3.58*mm, 0.22*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con10 = new G4LogicalVolume(solidcon10, //its solid
|
||||
Aluminum, //its material
|
||||
"con10" , //its name
|
||||
0,0,0);
|
||||
|
||||
con10->SetVisAttributes(b10);
|
||||
|
||||
G4Cons *solidcon11= new G4Cons("solidcon11", 0.0*mm, 5.1*mm, 0.0*mm, 4.09*mm, 0.425*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con11 = new G4LogicalVolume(solidcon11, //its solid
|
||||
Aluminum, //its material
|
||||
"con11" , //its name
|
||||
0,0,0);
|
||||
|
||||
con11->SetVisAttributes(b11);
|
||||
|
||||
G4Cons *solidcon12= new G4Cons("solidcon12", 0.0*mm, 6.2*mm, 0.0*mm, 5.1*mm, 0.395*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con12 = new G4LogicalVolume(solidcon12, //its solid
|
||||
Aluminum, //its material
|
||||
"con12" , //its name
|
||||
0,0,0);
|
||||
|
||||
con12->SetVisAttributes(b12);
|
||||
|
||||
G4Cons *solidcon13= new G4Cons("solidcon13", 0.0*mm, 7.3*mm, 0.0*mm, 6.2*mm, 0.38*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con13 = new G4LogicalVolume(solidcon13, //its solid
|
||||
Aluminum, //its material
|
||||
"con13" , //its name
|
||||
0,0,0);
|
||||
|
||||
con13->SetVisAttributes(b13);
|
||||
|
||||
G4Cons *solidcon14= new G4Cons("solidcon14", 0.0*mm, 8.4*mm, 0.0*mm, 7.3*mm, 0.335*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con14 = new G4LogicalVolume(solidcon14, //its solid
|
||||
Aluminum, //its material
|
||||
"con14" , //its name
|
||||
0,0,0);
|
||||
|
||||
con14->SetVisAttributes(b14);
|
||||
|
||||
G4Cons *solidcon15= new G4Cons("solidcon15", 0.0*mm, 9.5*mm, 0.0*mm, 8.4*mm, 0.325*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con15 = new G4LogicalVolume(solidcon15, //its solid
|
||||
Aluminum, //its material
|
||||
"con15" , //its name
|
||||
0,0,0);
|
||||
|
||||
con15->SetVisAttributes(b15);
|
||||
|
||||
G4Cons *solidcon16= new G4Cons("solidcon16", 0.0*mm, 10.5*mm, 0.0*mm, 9.5*mm, 0.28*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con16 = new G4LogicalVolume(solidcon16, //its solid
|
||||
Aluminum, //its material
|
||||
"con16" , //its name
|
||||
0,0,0);
|
||||
|
||||
con16->SetVisAttributes(b16);
|
||||
|
||||
G4Cons *solidcon17= new G4Cons("solidcon17", 0.0*mm, 11.5*mm, 0.0*mm, 10.5*mm, 0.275*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con17 = new G4LogicalVolume(solidcon17, //its solid
|
||||
Aluminum, //its material
|
||||
"con17" , //its name
|
||||
0,0,0);
|
||||
|
||||
con17->SetVisAttributes(b17);
|
||||
|
||||
G4Cons *solidcon18= new G4Cons("solidcon18", 0.0*mm, 12.15*mm, 0.0*mm, 11.5*mm, 0.19*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * con18 = new G4LogicalVolume(solidcon18, //its solid
|
||||
Aluminum, //its material
|
||||
"con18" , //its name
|
||||
0,0,0);
|
||||
|
||||
con18->SetVisAttributes(b18);
|
||||
|
||||
G4Cons *solidcons19= new G4Cons("solidcons19", 0.0*mm, 13.01*mm, 0.0*mm, 13.35*mm, 0.225*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * cons19 = new G4LogicalVolume(solidcons19, //its solid
|
||||
Aluminum, //its material
|
||||
"cons19" , //its name
|
||||
0,0,0);
|
||||
|
||||
cons19->SetVisAttributes(b19);
|
||||
|
||||
G4Tubs *solidtub1= new G4Tubs("solidtub1", 0.0*mm, 13.35*mm, 0.4*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * tub1 = new G4LogicalVolume(solidtub1, //its solid
|
||||
Aluminum, //its material
|
||||
"tub1" , //its name
|
||||
0,0,0);
|
||||
|
||||
tub1->SetVisAttributes(g1);
|
||||
|
||||
G4Tubs *solidtub2= new G4Tubs("solidtub2", 13.0*mm, 13.35*mm, 0.225*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * tub2 = new G4LogicalVolume(solidtub2, //its solid
|
||||
Aluminum, //its material
|
||||
"tub2" , //its name
|
||||
0,0,0);
|
||||
|
||||
tub2->SetVisAttributes(g2);
|
||||
|
||||
G4Tubs *solidtub3= new G4Tubs("solidtub3", 13.35*mm, 16.0*mm, 0.625*mm, 0.0*rad, 360.0*deg );
|
||||
G4LogicalVolume * tub3 = new G4LogicalVolume(solidtub3, //its solid
|
||||
Aluminum, //its material
|
||||
"tub3" , //its name
|
||||
0,0,0);
|
||||
|
||||
tub3->SetVisAttributes(g3);
|
||||
|
||||
|
||||
// Physical Volumes ---- Single Positioned Placement, Repeated Placement, Slicing ---------------------------
|
||||
|
||||
|
||||
// Single Positioned Placement
|
||||
|
||||
G4RotationMatrix rotMatrixpworld; // unit rotation matrix
|
||||
G4double anglepworld = 0.0*deg; // rotational angle
|
||||
rotMatrixpworld.rotateX(anglepworld); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pworld= new G4PVPlacement(G4Transform3D(rotMatrixpworld, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 0.0*mm)),
|
||||
"pworld", //its name (2nd constructor)
|
||||
world, //its logical volume
|
||||
NULL, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixphantom; // unit rotation matrix
|
||||
G4double anglephantom = 0.0*deg; // rotational angle
|
||||
rotMatrixphantom.rotateX(anglephantom); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * phantom= new G4PVPlacement(G4Transform3D(rotMatrixphantom, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 0.0*mm)),
|
||||
"phantom", //its name (2nd constructor)
|
||||
waterbox, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon1; // unit rotation matrix
|
||||
G4double anglepcon1 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon1.rotateX(anglepcon1); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon1= new G4PVPlacement(G4Transform3D(rotMatrixpcon1, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1034.04*mm)),
|
||||
"pcon1", //its name (2nd constructor)
|
||||
con1, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon2; // unit rotation matrix
|
||||
G4double anglepcon2 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon2.rotateX(anglepcon2); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon2= new G4PVPlacement(G4Transform3D(rotMatrixpcon2, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1033.888*mm)),
|
||||
"pcon2", //its name (2nd constructor)
|
||||
con2, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon3; // unit rotation matrix
|
||||
G4double anglepcon3 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon3.rotateX(anglepcon3); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon3= new G4PVPlacement(G4Transform3D(rotMatrixpcon3, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1033.748*mm)),
|
||||
"pcon3", //its name (2nd constructor)
|
||||
con3, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon4; // unit rotation matrix
|
||||
G4double anglepcon4 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon4.rotateX(anglepcon4); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon4= new G4PVPlacement(G4Transform3D(rotMatrixpcon4, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1033.583*mm)),
|
||||
"pcon4", //its name (2nd constructor)
|
||||
con4, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon5; // unit rotation matrix
|
||||
G4double anglepcon5 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon5.rotateX(anglepcon5); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon5= new G4PVPlacement(G4Transform3D(rotMatrixpcon5, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1033.273*mm)),
|
||||
"pcon5", //its name (2nd constructor)
|
||||
con5, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon6; // unit rotation matrix
|
||||
G4double anglepcon6 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon6.rotateX(anglepcon6); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon6= new G4PVPlacement(G4Transform3D(rotMatrixpcon6, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1032.813*mm)),
|
||||
"pcon6", //its name (2nd constructor)
|
||||
con6, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon7; // unit rotation matrix
|
||||
G4double anglepcon7 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon7.rotateX(anglepcon7); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon7= new G4PVPlacement(G4Transform3D(rotMatrixpcon7, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1032.343*mm)),
|
||||
"pcon7", //its name (2nd constructor)
|
||||
con7, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon8; // unit rotation matrix
|
||||
G4double anglepcon8 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon8.rotateX(anglepcon8); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon8= new G4PVPlacement(G4Transform3D(rotMatrixpcon8, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1031.883*mm)),
|
||||
"pcon8", //its name (2nd constructor)
|
||||
con8, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon9; // unit rotation matrix
|
||||
G4double anglepcon9 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon9.rotateX(anglepcon9); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon9= new G4PVPlacement(G4Transform3D(rotMatrixpcon9, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1031.428*mm)),
|
||||
"pcon9", //its name (2nd constructor)
|
||||
con9, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon10; // unit rotation matrix
|
||||
G4double anglepcon10 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon10.rotateX(anglepcon10); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon10= new G4PVPlacement(G4Transform3D(rotMatrixpcon10, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1030.983*mm)),
|
||||
"pcon10", //its name (2nd constructor)
|
||||
con10, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon11; // unit rotation matrix
|
||||
G4double anglepcon11 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon11.rotateX(anglepcon11); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon11= new G4PVPlacement(G4Transform3D(rotMatrixpcon11, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1030.338*mm)),
|
||||
"pcon11", //its name (2nd constructor)
|
||||
con11, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon12; // unit rotation matrix
|
||||
G4double anglepcon12 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon12.rotateX(anglepcon12); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon12= new G4PVPlacement(G4Transform3D(rotMatrixpcon12, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1029.518*mm)),
|
||||
"pcon12", //its name (2nd constructor)
|
||||
con12, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon13; // unit rotation matrix
|
||||
G4double anglepcon13 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon13.rotateX(anglepcon13); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon13= new G4PVPlacement(G4Transform3D(rotMatrixpcon13, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1028.743*mm)),
|
||||
"pcon13", //its name (2nd constructor)
|
||||
con13, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon14; // unit rotation matrix
|
||||
G4double anglepcon14 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon14.rotateX(anglepcon14); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon14= new G4PVPlacement(G4Transform3D(rotMatrixpcon14, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1028.028*mm)),
|
||||
"pcon14", //its name (2nd constructor)
|
||||
con14, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon15; // unit rotation matrix
|
||||
G4double anglepcon15 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon15.rotateX(anglepcon15); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon15= new G4PVPlacement(G4Transform3D(rotMatrixpcon15, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1027.368*mm)),
|
||||
"pcon15", //its name (2nd constructor)
|
||||
con15, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon16; // unit rotation matrix
|
||||
G4double anglepcon16 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon16.rotateX(anglepcon16); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon16= new G4PVPlacement(G4Transform3D(rotMatrixpcon16, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1026.763*mm)),
|
||||
"pcon16", //its name (2nd constructor)
|
||||
con16, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon17; // unit rotation matrix
|
||||
G4double anglepcon17 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon17.rotateX(anglepcon17); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon17= new G4PVPlacement(G4Transform3D(rotMatrixpcon17, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1025.6208*mm)),
|
||||
"pcon17", //its name (2nd constructor)
|
||||
con17, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon18; // unit rotation matrix
|
||||
G4double anglepcon18 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon18.rotateX(anglepcon18); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon18= new G4PVPlacement(G4Transform3D(rotMatrixpcon18, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1024.743*mm)),
|
||||
"pcon18", //its name (2nd constructor)
|
||||
con18, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixpcon19; // unit rotation matrix
|
||||
G4double anglepcon19 = 0.0*deg; // rotational angle
|
||||
rotMatrixpcon19.rotateX(anglepcon19); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * pcon19= new G4PVPlacement(G4Transform3D(rotMatrixpcon19, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1024.778*mm)),
|
||||
"pcon19", //its name (2nd constructor)
|
||||
cons19, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixptub1; // unit rotation matrix
|
||||
G4double angleptub1 = 0.0*deg; // rotational angle
|
||||
rotMatrixptub1.rotateX(angleptub1); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * ptub1= new G4PVPlacement(G4Transform3D(rotMatrixptub1, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1024.153*mm)),
|
||||
"ptub1", //its name (2nd constructor)
|
||||
tub1, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixptub2; // unit rotation matrix
|
||||
G4double angleptub2 = 0.0*deg; // rotational angle
|
||||
rotMatrixptub2.rotateX(angleptub2); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * ptub2= new G4PVPlacement(G4Transform3D(rotMatrixptub2, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1024.153*mm)),
|
||||
"ptub2", //its name (2nd constructor)
|
||||
tub2, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
G4RotationMatrix rotMatrixptub3; // unit rotation matrix
|
||||
G4double angleptub3 = 0.0*deg; // rotational angle
|
||||
rotMatrixptub3.rotateX(angleptub3); // rot matrix
|
||||
|
||||
G4VPhysicalVolume * ptub3= new G4PVPlacement(G4Transform3D(rotMatrixptub3, //rotation
|
||||
G4ThreeVector(0.0*mm, 0.0*mm, 1024.378*mm)),
|
||||
"ptub3", //its name (2nd constructor)
|
||||
tub3, //its logical volume
|
||||
pworld, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
|
||||
// Repeated Placement Translation
|
||||
|
||||
|
||||
// Repeated Placement AxialSymmetoric
|
||||
|
||||
|
||||
// Slicing Translation
|
||||
|
||||
|
||||
// Slicing AxialSymmetric
|
||||
|
||||
|
||||
// return the physical World
|
||||
|
||||
|
||||
return pworld;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
|
||||
/control/verbose 2
|
||||
/control/saveHistory
|
||||
/run/verbose 2
|
||||
|
||||
|
||||
/vis/scene/create
|
||||
/vis/open VRML1FILE
|
||||
/vis/drawVolume
|
||||
/vis/scene/add/axes 0 0 0 2 m
|
||||
/vis/viewer/update
|
||||
/vis/viewer/set/viewpointThetaPhi 60 30 deg
|
||||
/vis/viewer/zoom 5
|
||||
|
||||
/vis/viewer/flush
|
||||
#
|
||||
# draw scene/
|
||||
#
|
||||
#
|
||||
# for drawing the tracks
|
||||
/run/initialize
|
||||
/tracking/storeTrajectory 1
|
||||
/vis/scene/endOfEventAction accumulate
|
||||
|
||||
|
||||
|
||||
/vis/viewer/update
|
||||
|
||||
@@ -69,8 +69,8 @@
|
||||
<D type="denstiy" value="1.205" unit="mg/cm3"/>
|
||||
<T type="temperature" value="293.15" unit="kelvin"/>
|
||||
<P type="pascal" value="1.0" unit="atmosphere"/>
|
||||
<franction n="0.7" ref="N"/>
|
||||
<franction n="0.3" ref="O"/>
|
||||
<composite n="1" ref="N"/>
|
||||
<composite n="0" ref="O"/>
|
||||
</material>
|
||||
<material name="H2O">
|
||||
<D type="denstiy" value="1.0" unit="g/cm3"/>
|
||||
@@ -97,12 +97,12 @@
|
||||
<D type="denstiy" value="2.5" unit="g/cm3"/>
|
||||
<T type="temperature" value="273.15" unit="kelvin"/>
|
||||
<P type="pascal" value="1.0" unit="atmosphere"/>
|
||||
<franction n="0.52" ref="O"/>
|
||||
<franction n="0.0" ref="Na"/>
|
||||
<franction n="0.04" ref="Al"/>
|
||||
<franction n="0.325" ref="Si"/>
|
||||
<franction n="0.06" ref="Ca"/>
|
||||
<franction n="0.02" ref="Fe"/>
|
||||
<composite n="1" ref="O"/>
|
||||
<composite n="0" ref="Na"/>
|
||||
<composite n="0" ref="Al"/>
|
||||
<composite n="0" ref="Si"/>
|
||||
<composite n="0" ref="Ca"/>
|
||||
<composite n="0" ref="Fe"/>
|
||||
</material>
|
||||
<material name="FusedQuarz">
|
||||
<D type="denstiy" value="2.2" unit="g/cm3"/>
|
||||
@@ -111,14 +111,6 @@
|
||||
<composite n="2" ref="O"/>
|
||||
<composite n="1" ref="Si"/>
|
||||
</material>
|
||||
<material name="DimethylEther">
|
||||
<D type="denstiy" value="" unit="mg/cm3"/>
|
||||
<T type="temperature" value="273.15" unit="kelvin"/>
|
||||
<P type="pascal" value="1.0" unit="atmosphere"/>
|
||||
<composite n="6" ref="H"/>
|
||||
<composite n="2" ref="C"/>
|
||||
<composite n="1" ref="O"/>
|
||||
</material>
|
||||
<material name="Methane">
|
||||
<D type="denstiy" value="0.4224" unit="mg/cm3"/>
|
||||
<T type="temperature" value="293.15" unit="kelvin"/>
|
||||
@@ -281,14 +273,6 @@
|
||||
<composite n="1" ref="Na"/>
|
||||
<composite n="1" ref="I"/>
|
||||
</material>
|
||||
<material name="">
|
||||
<D type="denstiy" value="" unit="g/cm3"/>
|
||||
<T type="temperature" value="273.15" unit="kelvin"/>
|
||||
<P type="pascal" value="1.0" unit="atmosphere"/>
|
||||
<composite n="0" ref="H"/>
|
||||
<composite n="0" ref="O"/>
|
||||
<composite n="0" ref="Si"/>
|
||||
</material>
|
||||
|
||||
<!--Materials from Scratch-->
|
||||
<material name="HydrogenGas" formula="HydrogenGas" Z="1" N="1.00794" state="gas">
|
||||
|
||||
@@ -1,3 +1,39 @@
|
||||
2004 November 25
|
||||
|
||||
CHANGES** for Geant4.7 release
|
||||
|
||||
- Integration of GAG and Gain into MOMO
|
||||
- GAG.jar and Gain.jar are no more required and removed from the distribution.
|
||||
- GAG and Gain have their own logging window which displays G4cout
|
||||
- Improvements of GGE
|
||||
- material names are choosable from the name list defined in the material table
|
||||
- color names are choosable from the name list defined in the color table
|
||||
- logican volume's name is choosable from the name list to make physical volume
|
||||
- "set G4WORKDIR" butto helps to choose files or to save files (GGE, GPE, GAG)
|
||||
|
||||
EXAMPLE**
|
||||
|
||||
A working full set of files are foud in MomoHome. Please have a look at
|
||||
MomoHome/README file.
|
||||
|
||||
NOTICE 1 ** on Java Version!
|
||||
|
||||
The present version of MOMO is tested with j2sdk1.4. Some mal-functionning
|
||||
was found when used with j2sdk-1.5.
|
||||
|
||||
ABOUT ** Help function !
|
||||
|
||||
"Help" is displayed only when the env variable G4INSTALL is set.
|
||||
it is stored.
|
||||
|
||||
NOTICE 2 ** on "Project" menus
|
||||
|
||||
"Compile" buttin is effective only when java is started in the canonical
|
||||
directory of Geant4, that is just above the src and include directories.
|
||||
|
||||
An example is found in ./MomoHome.
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
2003 December 08
|
||||
- present MOMO's XML functions (save and load) are limited.
|
||||
-only available GDML tags are implemented. Not implemented are
|
||||
|
||||
@@ -1,676 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
GGE; Geant4 Geometry Editor
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<center>
|
||||
<h1>
|
||||
GGE; GEANT4 Geometry Editor
|
||||
</h1><br>
|
||||
2003 Feb. 22
|
||||
<br>
|
||||
Hajime YOSHIDA
|
||||
<br>
|
||||
Naruto University of Education
|
||||
</center>
|
||||
|
||||
<hr>
|
||||
<h1>1) Overview </h1><br>
|
||||
|
||||
GGE, or GEANT4 Geometry Editor, is a visual tool to "create" a
|
||||
detector geometry of GEANT4. It generates a complete C++ class
|
||||
code for a relatively simple geometry. It is written in Java and runs on
|
||||
any platform running Java. <p>
|
||||
<a href="http://erpc1.naruto-u.ac.jp/~geant4/Sources.html">
|
||||
Java Web Start version </a>is also supported.
|
||||
If user has installed Java Web Start, GGE(or as a part of MOMO) can be
|
||||
started directly from the web browser without typing java command on the console.
|
||||
<p>
|
||||
<h3>
|
||||
Characteristics
|
||||
</h3>
|
||||
<ol>
|
||||
<li>It provides users with tables
|
||||
into which users can fill with their detector parameters.
|
||||
<li>Using the
|
||||
data in the tables, even if they are partial and imcomplete,
|
||||
GGE can generate C++ source codes for a detector.
|
||||
<br>
|
||||
The class name must be supplied to get C++ source code.
|
||||
<li>
|
||||
When a user uses default functions of GGE, C++ codes generated by GGE
|
||||
is a complete
|
||||
description of a detector, including the definition of atoms, materials,
|
||||
solids, color attributes,
|
||||
logical volumes and physical volumes with rotations and translations.
|
||||
<li>
|
||||
The C++ source codes are saved into files and can be compiled to make a GEANT4 executable.
|
||||
|
||||
<li>
|
||||
When GGE is used together with MOMO, an integrated environment,
|
||||
a minimum set of user mandatory classes can be generated.
|
||||
MOMO also generate the main program as well as GNU makefile for the GEANT4 to visualise the detector.
|
||||
<li>
|
||||
GAG is helpful to run Geant4 and to visualise the whole detector.
|
||||
Simple macro files are associated, too, for visualisation.
|
||||
</ol>
|
||||
|
||||
GGE consists of two editors (material and volume) which are
|
||||
interrelated. Volume editor provides <it>Single
|
||||
Positioned Volume</it>, <itLRepeatedly Positioned Volumes</it> with incremental copy numbers
|
||||
(translational arrangement or axially symmetric arrangement), and
|
||||
<it>Replicas </it>(in any axis).
|
||||
|
||||
<p>
|
||||
<font color=red>Tips!</font>
|
||||
<ol>
|
||||
<li>GGE is based on Java's MVC model, or Swing so that any change or input to the
|
||||
tables by a user
|
||||
are automatically reflected to the internal data structure of GGE and C++ codes.
|
||||
This is true at any moment, so that user can get even imcomplete C++ class files
|
||||
at any moment, even without any filled tabular cells)
|
||||
<li>
|
||||
The whole detector description can be saved in a persistent file and can
|
||||
be loaded for later reuse.
|
||||
<li>
|
||||
|
||||
GGE employs own naming rules to generate C++ codes from the tables.
|
||||
</ol>
|
||||
<hr>
|
||||
<h1>
|
||||
|
||||
2) Functionalities of GGE
|
||||
</h1>
|
||||
GGE has a top panel on which are placed menu buttons and fill-in text area.
|
||||
<p>
|
||||
<h3> Top menus</h3>
|
||||
|
||||
<ul>
|
||||
<li> text area to specify the class name
|
||||
<li> menu buttons
|
||||
<ul>
|
||||
<li> load, save a persistent file
|
||||
<li> clear the tables
|
||||
<li> generate cc and hh files using the specified class name
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<h3> Tables </h3> <br>
|
||||
|
||||
GGE has several tables on two "tabbed panes";
|
||||
one pane for the material editor and another for the volumes editor.
|
||||
By clicking the tab, user can switch between both tables.
|
||||
<br>
|
||||
|
||||
<h2>
|
||||
2.1) The Material Editor
|
||||
</h2>
|
||||
<br>
|
||||
|
||||
<a href="./material.jpg">The material editor </a>
|
||||
is composed of two tables for
|
||||
<ol>
|
||||
<li>"material from scratch"
|
||||
and
|
||||
<li>"compound materials".
|
||||
</ol>
|
||||
These tables can be enlengthened as will.
|
||||
The boundary of the two tables can be moved as will, too.
|
||||
<p>
|
||||
<strong>
|
||||
Every row represents a material.
|
||||
</strong><br>
|
||||
|
||||
<a href="./periodic.jpg">The periodic table is popped up </a>to the
|
||||
window, when "append" or "insert" a material button is pushed.
|
||||
The foundamental properties of atoms; Z, A, etc. are built in to the
|
||||
atomic table and are copied appropriately.
|
||||
The atomic table can be hidden by a menu button on its top.
|
||||
<p>
|
||||
<hr>
|
||||
<h3>
|
||||
Functionalities of the Material Editor
|
||||
</h3><br>
|
||||
The functionalities implemented in this version are following;
|
||||
<ol>
|
||||
<li> <strong>append, insert, edit and delete a material</strong>
|
||||
<ul>
|
||||
<li> <strong>material from scratch</strong><br>
|
||||
The name of an atom, numbers Z and A are
|
||||
taken from the atomic table. User has to specify its density,
|
||||
temperature and pressure. Canonical units and states can be choosen
|
||||
from the lists.<br>
|
||||
The corresponding instance in C++ is named "elementX", where
|
||||
"X" represents element's symbol.
|
||||
<li> <strong> material by combination </strong>(number or fractional ratios). <br>
|
||||
User has to type in the name of a compound material,
|
||||
its density etc.. A pop-up window is displayed when he focuses
|
||||
on a cell <a href="./compoundeditor.jpg">specifying composition</a>.
|
||||
<li> <a href="./periodic.jpg"><strong> periodic table of atoms</strong></a>
|
||||
automatically popped up to
|
||||
create a material. User can select upto eight atoms to specify
|
||||
a compound material.
|
||||
<li> default states (and their canonical names)
|
||||
and values are provided (material state, temperature,
|
||||
pressure).
|
||||
<li> canonical physical units of GEANT4
|
||||
are shown in selectable combo-boxes.
|
||||
</ul>
|
||||
<li> "<strong>in Use</strong>" mark for materials used in user's detector.
|
||||
<ul>
|
||||
<li> materials used in the logical volumes are
|
||||
automatically checked as "in Use" state.
|
||||
<li> user can add any materials "in Use" to
|
||||
have C++ constructors, even when they aren't used in
|
||||
logical volumes.
|
||||
</ul>
|
||||
<li> <strong> input and output from/to persistent material file </strong>
|
||||
<br>
|
||||
Material tables are saved to a Java's persistent file and can be reused.
|
||||
<ul>
|
||||
<li> load, append or save a material file
|
||||
<li> an exemplary persistent material database
|
||||
file "MaterialDB.g4mt" from the PDG
|
||||
</ul>
|
||||
</ol>
|
||||
|
||||
Not yet implemented are; material from materials, isotope and
|
||||
protection from duplicated "in Use" instances of the same materials.
|
||||
|
||||
<hr>
|
||||
<h2>
|
||||
2.2) The Volume Editor ; logical and physical volumes
|
||||
</h2>
|
||||
<br>
|
||||
|
||||
<a href="./volumeeditor.jpg">The volume editor </a>
|
||||
is composed of two major editors;
|
||||
<ol>
|
||||
<li>logical volume editor and
|
||||
<li>physical volume editors,
|
||||
</ol>
|
||||
each is placed in the main scrollable panel.
|
||||
Physical editor is composed of five tables for physical volumes.
|
||||
They are placed on tabbed panes.
|
||||
<p>
|
||||
|
||||
<h3>
|
||||
Functionalities to define Geant4 logical volumes
|
||||
</h3><p>
|
||||
|
||||
Following functionaliteis are implemented;
|
||||
<ol>
|
||||
<li> <a href="./selectasolid.jpg"><strong>Selecting a G4Solid</strong></a><br>
|
||||
All Geant4 solids can be selected from the solid list.
|
||||
<ul>
|
||||
<li>all CSG solids; box, tube segment, cone segment, symmetric trapezoid,
|
||||
sphere segment, parallel piped, torus segment, HYPE,
|
||||
<li>BREP solids; PolyCone segment and Polygone segment
|
||||
�@�@</ul>
|
||||
After selecting a solid tyle, user pushes the "append" or "insert" button
|
||||
in order to make a new row in the table. On focusing the "solid" cell,
|
||||
<a href="./poligon.jpg">a pop up
|
||||
window </a> appears for the specified solid. User can
|
||||
<ul>
|
||||
<li> specify parameters and canonical units of CSG solids
|
||||
<li> specify any number of nodes and facets
|
||||
with parameters and canonical units of BREP solids
|
||||
<li> preview with DAWN with automatically chosen world size
|
||||
<li> save DAWN format file of the specified solid
|
||||
</ul>
|
||||
|
||||
<li> <strong>Defining G4Color</strong>, or colour attributes,
|
||||
using a graphical color chooser from which RGB numbers are taken
|
||||
to generate C++ codes. <br>
|
||||
Each color is given unique name and is listed in the editor panel.
|
||||
<li> <strong> Defining G4LogicalVolumes </strong> <br>
|
||||
Each row of the logical vulume table represents a G4LogicalVolume.
|
||||
User can append, insert or delete a row with corresponding buttons.<br>
|
||||
The table has following columns;
|
||||
<ul>
|
||||
<li>The first column is to specify the name of the logical volume.
|
||||
<li> The second column is filled automatically by choosing a
|
||||
<a href="./selectasolid.jpg">selectable G4Solid</a>. Focusing on it allows user
|
||||
to edit its parameters and preview with DAWN.
|
||||
<li> The third column is type-in cell for material name
|
||||
listed in the material editor. (drag and drop is planned)
|
||||
<li> The fourth column is to specify the visualization attribute's name
|
||||
</ul>
|
||||
<li><strong>"Make the used materials" </strong> button. <br>
|
||||
Clicking this button examins the materials specified in the logical volume table and marks "in Use" cell (the first one ) of the material
|
||||
tables accordingly. Note that only rows marked "in Use" are used
|
||||
to generate C++ codes.
|
||||
|
||||
</ol>
|
||||
<hr>
|
||||
<h3> Functionalities to define Physical volumes </h3><br>
|
||||
Compared with the logical volume editor, the physical volume one has limited
|
||||
generality. So, if user aren't satisfied with the following simplistic way
|
||||
to place logical volumes, he can use partially generated C++ codes for
|
||||
logical volumes etc..
|
||||
|
||||
<p>
|
||||
<strong> Constructors of G4PVPlacement</strong><br>
|
||||
Following four types of constructor are implemented, according to the type of
|
||||
rotation and type of the mother volume.
|
||||
<ol>
|
||||
<li> Type 1 constructor = rotation of the frame, physical mother volume
|
||||
<li> Type 2 constructor = rotation of a body, physical mother volume
|
||||
<li> Type 3 constructor = rotation of the frame, logical mother volume
|
||||
<li> Type 4 constructor = rotation of a body, logical mother volume
|
||||
</ol>
|
||||
|
||||
Following simple placements are provided in GGE.
|
||||
<ol>
|
||||
<li> <a href="./single.jpg"><strong>Single Positioned Volume</strong> </a>(SPV)<br>
|
||||
Each row represents a physical volume. The world volume must be
|
||||
defined in the first row of this table.
|
||||
<ol>
|
||||
<li> The first column specifies either body or frame rotation.
|
||||
<li> The second column specofies the instance's name of the physical volume
|
||||
<li> The third column specifies the name of the logical volume to be placed
|
||||
<li> The fourth column specifies the type of the mother volume.
|
||||
The mother volume is either
|
||||
null(Master Reference System), logical or physical.
|
||||
The MARS or the world volume must be specified at the first row.
|
||||
<li> The fifth column specifies the name of the mother volume, if it isn't NULL.
|
||||
<li> The columns 7, 8 and 9-th specify the translation
|
||||
in the X, Y or Z direction (default is no translation) with a selectable
|
||||
unit of length
|
||||
<li>The 11-th column specifies the axis of rotation (frame or body);
|
||||
rotation around X, Y or Z axis with an angle in the 12-th column
|
||||
</ol>
|
||||
|
||||
<li> <a href="./repeatedtrans.jpg"><strong>
|
||||
Repeated Translationally Positioned Volumes </strong></a> (RTPV Arrangement)
|
||||
of any number of copies of a logical volume with incremental copy numbers<br>
|
||||
Each row represent a physical volume.
|
||||
<ol>
|
||||
<li>The first to 4-th columns are same as above.
|
||||
<li>The columns 6, 7 and 8-th specify the position of the first copy
|
||||
<li> The 10-th column specifies the direction of placement; X, Y or Z direction
|
||||
<li> The 11-th column specifies the incremental step size
|
||||
<li> The last column specifies the number of copies
|
||||
</ol>
|
||||
|
||||
<li> <a href="./repeatedrotate.jpg">
|
||||
<strong>Repeated Rotationally Positioned Volumes;
|
||||
</strong> </a>axially symmetric arrangement of any number of copies of a logical volume with incremental copy numbers (RRPV Arrangement)<br>
|
||||
Each row represents a physical volume.
|
||||
<ol>
|
||||
<li> The columns "move", "pName", "pLogic", "MomType" and "pMother" are same as above.
|
||||
|
||||
<li>(X0, Y0, Z0) column specify the position of the center of an axial rotation
|
||||
<li>"Radius" column specifies a radius of axially symmetric arrangement
|
||||
<li>"RotAxis" column specifies the rotational axis ; X, Y or Z
|
||||
<li>"Phi_0" and "dPhi" column specify a starting angle and incremental step angle
|
||||
<li> The last column specifies the number of copies
|
||||
</ol>
|
||||
<li><strong> Replica in the X, Y or Z direction</strong>
|
||||
<li><strong>Replica in rho, phi or Z direction</strong>
|
||||
<ol>
|
||||
<li> width (in length or angle) and number of replicas
|
||||
<li> offset (in length or angle)
|
||||
<li> logical or physical mother volume
|
||||
</ol>
|
||||
</ol>
|
||||
Planned but
|
||||
not implemented yet are paremetrised volumes with linear scaling or linear rotation.
|
||||
|
||||
<hr>
|
||||
<h1>
|
||||
3) Generation of C++ code
|
||||
</h1>
|
||||
|
||||
<ul>
|
||||
<li>C++ code is output to a editor widget and can be saved.
|
||||
But edited file loses the persistency and
|
||||
looses correspondence with the tables contents.
|
||||
<li>The required and necessary header files are automatically included; solid types etc.
|
||||
<li>The order of creating instances is following;
|
||||
<ol>
|
||||
<li> G4Elements,
|
||||
<li> G4Material,
|
||||
<li> G4VisAttributes,
|
||||
<li> G4Solids,
|
||||
<li> G4LogicalVolume,
|
||||
<li> Single Positioned Volumes,
|
||||
<li> Repeated Volumes,
|
||||
<li> Replicas
|
||||
<li> return the instance name of the MARS
|
||||
</ol>
|
||||
Order of instantiation inside each section is decided by GGE user,
|
||||
except MARS
|
||||
</ul>
|
||||
|
||||
Here is a sample of automatically <a href="./skelton.html">generated C++ code</a>
|
||||
which is created from
|
||||
almost skelton tables.
|
||||
|
||||
<hr>
|
||||
<h3>
|
||||
3.1) Naming conventions in GGE
|
||||
</h3><p>
|
||||
Knowing GGE's naming convention is helpful to read the generated C++ code as
|
||||
well as using GGE correctly. Look at relevant Geant4 constructors will be very
|
||||
suggestive.
|
||||
|
||||
<ol>
|
||||
<li> Elements and materials
|
||||
<ol>
|
||||
<li> Elements are named "elementXXX", where XXX stands for the
|
||||
element's symbol in the periodic table.
|
||||
<li> materials are named just as you have typed in the second column
|
||||
of the material window.
|
||||
</ol>
|
||||
<li> solids and logical volumes<br>
|
||||
The "Name" typed in the first (leftmost) column of the "Logical Volume"
|
||||
is used to name the corresponding solid. If the name "world" is given
|
||||
to a logical volume of a Box, the G4Solid has an instance "solidworld".
|
||||
<li> logical and physical volumes<br>
|
||||
<ol>
|
||||
<li>The instance of a physical volume defined by "pName" has a name prefixed
|
||||
with "physical", i.,e., instance's name is "physical" + pName ( + =>
|
||||
string concatenation). "logical" is added to the instance of a logical
|
||||
volume.
|
||||
<li>In case of SPV (single positioned volume), the columns "pName" (instance of
|
||||
physical volume) and "pLogical" may have the same strings.
|
||||
<li>
|
||||
In case of RVA (repeated volumes arrangement), "pName" is different from
|
||||
"pLogical" whose copies are repeatedly placed.
|
||||
</ol>
|
||||
<li>All variables are named after their proper instances.
|
||||
See for example, the control variable used in the for loop in the
|
||||
RVA.
|
||||
<br>
|
||||
Another examples are arrays to define BREP geometry.
|
||||
</ol>
|
||||
<hr>
|
||||
<h3>
|
||||
3.2) Default values and combo-boxes
|
||||
</h3>
|
||||
<ol>
|
||||
<li> Default optional values of materials
|
||||
GGE provides default values in a pre-filled columns or with the
|
||||
combo-boxes. "Use", "State" and "Unit" columns are equipped with
|
||||
combo-boxes. Temperature and pressure column are pre-filled with
|
||||
273.15 * kelvin and 1 * atmosphere.
|
||||
<li> Default values in volumes
|
||||
"Mother Type" is either NULL (mother of all), logical (type 2, 4 constructors)
|
||||
or physical (type 2 or 4 constructors) in G4PVPlacement.
|
||||
</ol>
|
||||
|
||||
<hr>
|
||||
<hr>
|
||||
<hr>
|
||||
|
||||
|
||||
<font color=red> WARNING: Materials below are obsolete. Updating them
|
||||
in conjunction with MOMO is planned now
|
||||
in March 2003 </font>
|
||||
<p>
|
||||
<font color=orange>
|
||||
<pre>
|
||||
4) A First Lesson; how to use GGE.
|
||||
|
||||
Here is a walk-through of how to use GGE.
|
||||
|
||||
4.1) Visualize the prefabricated detector sample
|
||||
1) In a xterm, type %java gge
|
||||
2) In the "Volume window", select "Load a Volume file" menu
|
||||
and double click on "trumpetBREP.g4dt"
|
||||
3) Click "Makesource" and select "Make C++ code". Have a look of the generated C++ code.
|
||||
4) Save the C++ code (overwrite the existing one)
|
||||
in .../GGEmake/src/MyDetectorConstruction.cc" using the file chooser.
|
||||
5) In another xterm, go to the directory GGEmake/ and type
|
||||
%make G4TARGET=myGGEdetector
|
||||
|
||||
Watch if there is any compilation error. At present,
|
||||
GGE is made so that it generates correct C++ codes,
|
||||
if a user uses GGE correctly.
|
||||
|
||||
In the example of "trumpetBREP.g4dt", a few warnings are shown on BREP.
|
||||
6) Check that you have "myGGEdetector" executable, in $(G4INSTALL)/bin/$(G4SYSTEM)
|
||||
7) In another xterm, type
|
||||
%java gag
|
||||
|
||||
and with the "Run GEANT4" button, choose and run "myGGEdetector".
|
||||
8) Use /control/execute command and double click on "GGEdraw.g4m".
|
||||
To have a better view, use vis~ commands (camera/viewpoint, zoom etc).
|
||||
You can select DAWNFILE to draw and have a PS hardcopy.
|
||||
|
||||
4.2) Modify the prefabricated detector
|
||||
Now let's change the detector configuration. Go to the "Volume" window
|
||||
and change any part of it, including material.
|
||||
|
||||
4.2.1) Changing materials
|
||||
|
||||
1) First, you have to "Clear Material" in the Material editor.
|
||||
2) Then, select "Load material" and double click on "MaterialDB.g4mt".
|
||||
Now you have a list of materials.
|
||||
3) Then, in the "Logical Volume" panel, double click the box you want to change
|
||||
and type in the name of the material in the material editor.
|
||||
4) Change as many materials as you like and push "Used Material" button.
|
||||
You see that materials you have typed in are marked "Used" in red.
|
||||
If not, you might have mistyped the name of a material.
|
||||
5) If you want to use additional materials, select "Use" in the material
|
||||
editor (the leftmost column).
|
||||
6) Push "Makesource" and see your change has been realized in the C++ code.
|
||||
|
||||
NOTE!! Be careful that there are no duplicated "Used" materials, when
|
||||
you load the material DB without "Clear Material".
|
||||
|
||||
4.2.2) Modifying the size parameters of solids
|
||||
|
||||
To change the sizes of G4 solids
|
||||
1) click a "solid" box of the logical volume of your choice.
|
||||
2) You have a pop-up window to edit the parameters. Change a parameter
|
||||
or its unit, as you like.
|
||||
3) Push "Makesource" and see if your changes have been correctly applied
|
||||
to C++ code.
|
||||
4) In case of BREP solids, the pop-up window has variable number of columns
|
||||
to accept any number of nodes.
|
||||
5) For complicated solids like BREPs, preview may be useful. Click "View"
|
||||
button and you have a view with the DAWN renderer. Its g4.prim file
|
||||
is also shown in an edit-able widget.
|
||||
|
||||
4.2.3) Changing the type of solid of an existing logical volume
|
||||
You may want to replace the current G4Solid with another one. In the
|
||||
present GGE you can't do so directly. You have to "Create" a new logical
|
||||
volume with the type of solid you want and then delete the unnecessary volume.
|
||||
|
||||
1) Choose your new solid with "Select Solid" combo-box.
|
||||
2) Push "Create" button and you have a pop-up window to input parameters.
|
||||
3) Type in numbers and select their units.
|
||||
4) Preview if you like and then push "OK".
|
||||
5) Check the C++ code.
|
||||
|
||||
4.2.4) Changing visualization attributes (Color).
|
||||
1) You have to "Create" a new VisAttributes
|
||||
2) Upon the "Create" button, you have a Color Chooser.
|
||||
3) Select RGB (not HSV). Set your color with slide-bars.
|
||||
4) Give it a name, and push "OK". Then you have a color circle and name in the
|
||||
VisAttrib panel.
|
||||
5) Edit the VisAtb box in the LogicalVolume panel.
|
||||
6) See the C++ code.
|
||||
|
||||
4.2.5) Changing Repeated Volumes
|
||||
|
||||
|
||||
|
||||
|
||||
"exampleN01.g4dt" contains three "single positioned volumes"
|
||||
and one "repeated volumes" in the X direction.
|
||||
Change the parameter of repetition such as the number
|
||||
or width, or you can add another "repeated volumes"
|
||||
in another direction.
|
||||
|
||||
In "trumpetBREP.g4dt" you can edit BREPs, adding new faces etc..
|
||||
|
||||
b) making C++ code "MyDetectorConstruction.cc" and compile.
|
||||
|
||||
Finally, back to the step 3 and recompile.
|
||||
|
||||
|
||||
Opening GGE, compile, GAG simultaneously, you can
|
||||
test and improve the geometry, just like creating
|
||||
HTML or TeX documents.
|
||||
|
||||
|
||||
2.4) GGEmake; a directory containing the GEANT4 codes to compile and visualize the detector
|
||||
a) implemented
|
||||
+ GNUmakefile
|
||||
+ myDetector.cc ; main() with GAG session and visualization manager
|
||||
+ src/ directory contains
|
||||
+ MyDetectorConstruction.cc
|
||||
+ MyPhysicsList.cc
|
||||
+ MyPrimaryGeneratorAction.cc
|
||||
+ MyVisManager.cc
|
||||
+ include/ directory
|
||||
|
||||
2.5) compile and visualize with Momo and GAG
|
||||
|
||||
a) implemented
|
||||
|
||||
+ canonical scheme of GEANT4 to compile
|
||||
+ make G4TARGET=myDetector
|
||||
+ the binary is created as $G4INSTALL/bin/G4SYSTEM/myDetector
|
||||
|
||||
+ Momo (GAG, Compile and GGE buttons)
|
||||
+ rapid cycling of GGE and GAG to edit and view the geometry
|
||||
+ a macro file for visualization (OGLIX default) "DrawDAWN.g4m", etc..
|
||||
|
||||
b) not implemented
|
||||
- automatic "calibration" of the detector with geantino
|
||||
|
||||
2.6) exemplary persistent detector files with *.g4dt suffix
|
||||
+ 3D array of lead plates using translational RVArrangement
|
||||
+ BREP Pcones trumpetss using axially symmetric RVArrangement
|
||||
+ Replicas to form cylinders
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
</pre>
|
||||
</font>
|
||||
<hr>
|
||||
<hr>
|
||||
<hr>
|
||||
|
||||
<font color=red> !!!!!OBSOLETE!!!!!
|
||||
|
||||
<p>
|
||||
|
||||
<pre>
|
||||
3) Installation
|
||||
|
||||
The minimum set to get C++ source code
|
||||
1) GGE.jar file
|
||||
2) Java interpreter ; java
|
||||
Additional set to compile
|
||||
3) GEANT4 toolkit with compiled libraries
|
||||
4) GGEmake directory
|
||||
Additional set to visualise and use GUI
|
||||
4) DAWN (plus Ghostview) or OGLIX or VRML
|
||||
5) GAG (Java version) or GAG.jar file
|
||||
Additional too to make life easy
|
||||
6) Momo to use all the above ingredients; Momo.jar file
|
||||
(without Momo, you have to invoke GGE, compile and GAG respectively in windows.)
|
||||
|
||||
3.1) Java and Swing
|
||||
We have tested GGE on Unix-en (Linux and Solaris) and Windows (95/NT).
|
||||
|
||||
3.1.1) Unix:
|
||||
|
||||
+ Linux: jdk1.1.3 or later(i.,e., jdk-1.1.6) + Swing-1.0.2
|
||||
1) jdk1.1.5 may have bugs, while jdk1.1.6 works
|
||||
2) GGE co-works with Swing-1.0.2 and not with 1.0.1 (or maybe not
|
||||
with 1.0.3).
|
||||
3) we are testing the current GGE with JRE1.2-beta04. The present source can be
|
||||
compiled but doesn't execute correctly. In any case
|
||||
Sun has announced on 17 August that JDK1.2 will be delayed
|
||||
till November!!
|
||||
+ Solaris: jdk1.1.6 + swing-1.0.2
|
||||
|
||||
|
||||
We assume that you have
|
||||
1)jdk1.1.6/bin/java (Java interpreter) to which paths are set
|
||||
2)Swing-1.0.2 which is defreezed and placed in $HOME/swing/swingall.jar
|
||||
|
||||
3.1.2) Windows:
|
||||
|
||||
We use JBuilder2 with Swing-1.0.2. Note that you have to
|
||||
eliminate all other libraries than swing-1.0.2, after having
|
||||
copied it into JBuilder2.
|
||||
|
||||
We are trying JDK1.2beta4 + JRE1.2 with JBuilder2.
|
||||
|
||||
NOTE! At present we have not Momo/GAG for Windows. So,
|
||||
you can only create C++ code under the Windows.
|
||||
|
||||
3.2) GGE and related files
|
||||
The latest product of GGE is that of Sep. 24.
|
||||
All *.java, *.class and GGE.jar files are placed in
|
||||
geant4beta/environments/Momo/java/Momo/GGE
|
||||
|
||||
Only "GGE.jar" file is necessary to run GGE.
|
||||
|
||||
GGE/*.java GGE source files
|
||||
GGE/*.class GGE byte code files
|
||||
GGE/GGE.jar jar archive file to which CLASSPATH must be set
|
||||
GGE/*.g4mt material database after PDG data
|
||||
GGE/*.g4dt exampleN0x detector file
|
||||
C++ source codes and GNUmakefiles to compile with GEANT4 are placed in
|
||||
geant4beta/environments/Momo/GGEmake.
|
||||
|
||||
Only geantino is instantiated in the initialization of GEANT4, so that it is quite
|
||||
rapid to have a visualization of the geometry. You can choose DAWN, OpenGL or VRML system.
|
||||
|
||||
GGEmake/myGGEdetector.cc main() program
|
||||
/GNUmakefile
|
||||
/src
|
||||
/src/MyDetectorConstruction.cc C++ generated by GGE
|
||||
/src/MyPrimaryGeneratorAction.cc geantino gun
|
||||
/src/MyVisManager.cc DAWN, DAWNFILE, OGLIX, OGLSX, VRML1, VRML1FILE
|
||||
/src/MyPhysicsList.cc geantino definition
|
||||
/include/*.hh
|
||||
/GGEdraw.g4m default macro file to visualize with OGLIX
|
||||
|
||||
3.3) install, setenv and run
|
||||
|
||||
%set path=($path jdk1.1.6/bin) <=== add the path to java and javac
|
||||
%setenv CLASSPATH .:$HOME/swing/swingall.jar:$HOME/geant4beta/environments/Momo/java/Momo/GGE/GGE.jar
|
||||
|
||||
|
||||
Then in any directory, you can invoke GGE.
|
||||
|
||||
%java gge
|
||||
|
||||
|
||||
3.4) DAWN, Tcl/Tk and Postscript for the preview of CSG or BREP solids
|
||||
If you don't use GGE's preview button, these are not necessary.
|
||||
|
||||
If you want to preview G4Solids, you have to install
|
||||
DAWN, Fukui renderer as well as Tcl/Tk wish (Tcl/Tk 8.0) for its GUI.
|
||||
DAWN uses also Postscript to draw *.prim files.
|
||||
|
||||
For the visualization of the whole detector, DAWN or Mesa (for OGLIX)
|
||||
are necessary.
|
||||
|
||||
3.5) GEANT4 toolkit and its environments
|
||||
The visualization manager instantiates DAWN, DAWNFILE, OPENGLIX,
|
||||
OPENGLSX, VRML, VRMLFILE. So, you have to setenv accordingly.
|
||||
|
||||
|
||||
</pre>
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,129 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Gain; how to use it with Geant4</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1> How to use Gain</h1>
|
||||
<hr>
|
||||
<h3>What is Gain?</h3><p>
|
||||
Gain(Geant4 adaptive interface for network) is a networked GUI tool based on GAG.
|
||||
It inherits almost all features of GAG and has new features to
|
||||
make use of Geant4 running at (a) remote machine(s).
|
||||
<p>
|
||||
Gain runs on a client machine (Windows or Linux),
|
||||
while Geant4 runs on a remote or local server (Linux or Solaris).
|
||||
<p>
|
||||
|
||||
It provides two ways to connect to the remote server; SSH mode and Gain socket mode.
|
||||
|
||||
<dl>
|
||||
<dt> <strong>Gain SSH mode</strong>
|
||||
<dl> Gain has a SSH client fuction and use it to connect to a remote server. Geant4 compiled with G4UIGAG class
|
||||
can be connected to Gain client. When a SSH connection is established after the authentication,
|
||||
Gain displays the
|
||||
remote file browser with which user can choose a Geant4 executable and make it run.
|
||||
Data are encrypted during their transfer and are decripted at both side. So, some CPU
|
||||
power is required for a client machine, if a large amount of data are transfered from
|
||||
the running Geant4 to Gain. <br> Output from the remote Geant4 are
|
||||
displayed <a href="./Gainjpeg/gainconsole.jpg">on the Gain console.</a>
|
||||
This console can be used as a normal
|
||||
SSH console and you can type in command directly.<br>
|
||||
Pluriel remote sessions can be accepted, each displayed in a separate
|
||||
tabbed pane. A console is attached to each pane/session.
|
||||
<dt> <strong>Gain socket mode</strong>
|
||||
<dl> Gain uses its own way of connecting to a remote server. Remote Geant4 must be compiled with
|
||||
G4UIGainServer class which is distributed in the standard Geant4 package. In this mode, user has to
|
||||
make a Geant4 executable run on the remote server, after having logged in to the remote
|
||||
machine. G4UIGainServer acts as a network server
|
||||
and tells the number of port available for the Gain client. Gain client, after specifying the server and port
|
||||
number, is allowed to connect to the Geant4. Geant4 output
|
||||
</dl>
|
||||
|
||||
<hr>
|
||||
<h3>How to use Gain</h3>
|
||||
<p>
|
||||
The figure shows a scene when Gain is running in
|
||||
<a href="./Gainjpeg/GainSnap.jpg">Gain socket mode</a>.
|
||||
<p>
|
||||
In this example,
|
||||
two tabbed panes are displayed to run remote Geant4s running on different servers.
|
||||
|
||||
|
||||
<ol>
|
||||
<li>
|
||||
Gain is started on the <a href="./Gainjpeg/cygwin.jpg">Cygwin console</a>. Gain can be started with
|
||||
Java Web Start.
|
||||
|
||||
<li>
|
||||
<a href="./Gainjpeg/gainInit.jpg">Top menu</a> to connect to a server or close (kill) the running G4ant4 or finish Gain.
|
||||
|
||||
|
||||
<li> The window to
|
||||
<a href="./Gainjpeg/selectInterface.jpg">choose SSh or Gain socket</a>; now SSHINTERFACE is focused
|
||||
|
||||
<li>After typing in the remote host name,
|
||||
<a href="./Gainjpeg/sshlogin.jpg">SSH login window</a> is shown.
|
||||
|
||||
<li>
|
||||
When SSH login is accepted, Gain shows the
|
||||
<a href="./Gainjpeg/filechooser.jpg"> remore File Chooser</a>. Geant4 with G4UIGAG interface can be started
|
||||
from this chooser.
|
||||
|
||||
<li> When Geant4 is started,
|
||||
<a href="./Gainjpeg/startup.jpg">Geant4 initialisation output are shown on the cygwin console</a>.
|
||||
|
||||
|
||||
|
||||
|
||||
<li> After the initialisation phase,
|
||||
<a href="./Gainjpeg/startuptree.jpg"> command tree window</a> is available on Gain.
|
||||
|
||||
<li> Then, the Gain console is shown below the command tree window.
|
||||
See <a href="./Gainjpeg/gainconsole.jpg"> the hardcopy </a>
|
||||
of the whole Gain window.
|
||||
This console is the SSH console, so that you can type in Geant4 commands
|
||||
in stead of selecting them in the above command panel.
|
||||
<br>
|
||||
You can shrink the console by single click on the triangle at the left
|
||||
border.
|
||||
|
||||
<li>
|
||||
<a href="./Gainjpeg/exit.jpg">Two ways of ending Geant4 execution are provided. </a>
|
||||
The command tree provides "exit" command which is just the "exit" of Geant4. On the top
|
||||
menu, "Close one" menu is to send CTRL + C to the running Geant4 process. It can be sent at any
|
||||
moment.
|
||||
|
||||
</ol>
|
||||
<hr>
|
||||
<h3>Notices on Gain console</h3><br>
|
||||
<ul>
|
||||
<li> At present, Gain's console displays ecerything G4cout from Geant4
|
||||
with G4UIGAG interface. So, strings employed for Gain protocols are
|
||||
displayed. Please ignore lines starting with @@.
|
||||
<li> Gain console demands heavy Windows (X or Windows) power.
|
||||
So, with old graphic accelerators like S3 etc. which are yet common
|
||||
on Linux platforms, speed of console may be very slow. In such cases,
|
||||
shrinking the console pane is a good way to speed up the execution.
|
||||
<li> We have tested Gain over the Internet for a session of more than 24 hours.
|
||||
On Windows XP, We observed some curious deformed tree icons during the session,
|
||||
but the functions were correct and they became normal after some elapsed time.
|
||||
<br>
|
||||
Here is the <a href="./Gainjpeg/gainconsoleAday.jpg">copy of the long run.</a>
|
||||
<li> The console provides a session of G4UIterminal, and NOT G4UItcsh, at present.
|
||||
<li>If you type "exit" on the console, the execution of Geant4 is stopped.
|
||||
The console is yet a usual ssh console, while the upper windows for
|
||||
the command tree is losing connection to Geant4. If you type in "exit" on the
|
||||
console, it end the ssh session and the whole Gain will be destroyed.
|
||||
</ul>
|
||||
<hr>
|
||||
<h3> <a href="./techManual/index.html">Inside Gain</a></h3><br>
|
||||
In this manual, Gain and RGAG are described. But in the final
|
||||
form, they were merged and Gain is the name for it.
|
||||
"RGAG" represents the SSH mode of Gain now, while "Gain"
|
||||
in the avobe manual represents the
|
||||
own socket mode of the present Gain.
|
||||
<address>
|
||||
<a href="mailto:yoshidah@naruto-u.ac.jp">yoshida</a>
|
||||
</address>
|
||||
</body>
|
||||
</html>
|
||||
Executable
+2336
File diff suppressed because it is too large
Load Diff
@@ -1,17 +0,0 @@
|
||||
<HTML>
|
||||
MOMO known problems
|
||||
<OL>
|
||||
<LI> Electro-magnetic physics list displays "rho-zero" which
|
||||
has been removed from the stable particle list since Geant4.3.<br>
|
||||
===> <font color=red> Corrected 2002 May 21 </Font>
|
||||
|
||||
|
||||
<LI> A set of the minimum set of Geant4 canonical classes is lacking.
|
||||
This will be available soon.
|
||||
<LI> "Compile" menu button doesn't work, even though the makefile "Momomake.gmk" is correctly created, reflecting your environment variables.
|
||||
Please make -f Momomake.gmk in the directory where your G4TARGET main class
|
||||
is stored.
|
||||
</OL>
|
||||
|
||||
</HTML>
|
||||
|
||||
@@ -1,206 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>How to Gain</title>
|
||||
</head>
|
||||
|
||||
<h2>How to use the GainServer interface class and Gain client GUI</h2>
|
||||
<hr>
|
||||
<pre>
|
||||
|
||||
version 0.9, May 31 2002
|
||||
revised for Geant4.4.1 release, July 03
|
||||
revised 17 January 2003
|
||||
|
||||
H. Yoshida, H. Minamimoto
|
||||
Naruto University of Education
|
||||
|
||||
A) Features of GainServer class and its client partner "Gain"
|
||||
|
||||
This new class belongs to the "interfaces" category and provides
|
||||
a user interface using socket connection with a remote client GUI Gain.
|
||||
The new client Gain is quite similar with GAG in that it provides the
|
||||
fully graphical user interface to steer execution of the Geant4 simulation.
|
||||
|
||||
The new features using a socket connection are as follows;
|
||||
|
||||
1) GainServer uses TCP/IP socket to communicate with the
|
||||
client GUI tool Gain.
|
||||
In general, a server may be decoupled from the terminal
|
||||
(or the control terminal) on which it was invoked and run
|
||||
as a daemon (daemon mode).
|
||||
The present Gain server class doesn't behave as a daemon, but
|
||||
it requires the control terminal on which the Geant4 application
|
||||
has been invoked and is coupled as long as
|
||||
it is running (terminal mode).
|
||||
|
||||
In the terminal mode, all outputs from G4cout and G4cerr are
|
||||
sent to the client by default and can be displayed
|
||||
on the client remote terminal.
|
||||
|
||||
If you want to run Geant4 simulation even after having logged out,
|
||||
the shell command "nohup" can be used (Linux and Solaris).
|
||||
You have to run a Geant4 application like;
|
||||
|
||||
%nohup $G4WORKDIR/exampleN02 > exampleN02 &
|
||||
|
||||
and then log out.
|
||||
|
||||
%exit
|
||||
|
||||
|
||||
2) The partner client GUI software is "Gain" which runs
|
||||
on any platform running Java Virtual Machine, i.e.,
|
||||
Windows, Linux etc.. Gain can be invoked from the
|
||||
command line (pseudo-terminal in the X windows or
|
||||
cygwin in Windows) or newly can be invoked directly from
|
||||
the Web browser like Netscape/Mozilla and Internet Explorer,
|
||||
when they are equipped with the plugin software "Java Web Start".
|
||||
This new facility will be explained in the later sections.
|
||||
|
||||
B) Making the library
|
||||
G4UIGainServer is a part of Geant4 distribution since Grant-4.4 or Geant-5.0.
|
||||
GainServer class uses the standard socket implementation which is
|
||||
usually found in the platforms like Solaris or Linux. It is tested against
|
||||
G4SYSTEM=SUN-CC and Linux-g++ and WIN32-g++(Cygwin).
|
||||
|
||||
This new class depends on no external libraries (except the default system
|
||||
libraries) so that no new environment variables G4UI_BUILD_XX is required.
|
||||
GainServer.cc/hh files are located in source/interfaces/GAG and the
|
||||
corresponding library is archived in the libG4UIGAG.a(so).
|
||||
|
||||
It is simple to make the library.
|
||||
|
||||
1. go to the directory "interfaces/GAG".
|
||||
2. make (or gmake)
|
||||
3. and you will have a libG4UIGAG.a (so)
|
||||
|
||||
|
||||
C) How to use GainServer in your application
|
||||
The way how to use it completely similar to G4UIterminal or G4UIGAG class.
|
||||
|
||||
In your main program
|
||||
|
||||
1. include the header file
|
||||
#include "G4UIGainServer.hh"
|
||||
2. instantiate the session and run
|
||||
G4UIsession* session = new G4UIGainServer();
|
||||
session->SessionStart();
|
||||
delete session;
|
||||
|
||||
Your application can be compiled just like the ones using G4UIterminal
|
||||
or G4UIGAG interface classes. No new environment variables are required
|
||||
to use this new class.
|
||||
|
||||
D) How to get and run the Gain client
|
||||
|
||||
GainServer must communicate with its partner GUI Gain. Gain is
|
||||
written in Java and Gain is distributed in two compiled forms.
|
||||
In any forms, you have to install Java, i.e., j2sdk.
|
||||
(See www.javasoft.com)
|
||||
|
||||
1. command line mode
|
||||
One form is the common jar (Java archive) format; Gain.jar which
|
||||
is provided at http://erpc1.naruto-u.ac.jp/~geant4/Sources.html.
|
||||
To run it, you have to invoke Java Virtual Machine on your terminal;
|
||||
% java -cp foobar/Gain.jar Gain
|
||||
where foobar is the directory containing Gain.jar file.
|
||||
On Windowz, use cygwin for the terminal.
|
||||
|
||||
2. Web Start mode
|
||||
Another form is easier to use, once all set-up steps have been
|
||||
completed. In this mode, Gain can be invoked by a simple mouse click
|
||||
on the link in the Web page, which is provided by the Geant4
|
||||
developer.
|
||||
|
||||
1. You connect to the Java site and install "Web Start" in your
|
||||
PC, following the instructions. If you are using Mozilla/Netscape,
|
||||
you have to add a new MIME type (JNLP) to your list of "Helper
|
||||
programs".
|
||||
2. Try if the examples associated with the Java Web Start kit
|
||||
run correctly. Note that applications which
|
||||
requires file I/O on your system asks you to go out of the
|
||||
"sandbox" environment (three times on Windows).
|
||||
This execution of Java applications including local I/O operation
|
||||
is only allowed by your permission. To get your permission,
|
||||
demos provided by Java Soft are digitally signed.
|
||||
3. Then connect to http://erpc1.naruto-u.ac.jp/~geant4/Sources.html
|
||||
and run Gain. It is digitally signed by the Geant4 developer
|
||||
at Naruto University of Education.
|
||||
|
||||
On Windows, you may have the icon for "Java Web Start Manager" in which
|
||||
Gain will be listed as one of the verified applications. Then, you can
|
||||
use Gain directly from Java Web Start without the Internet connection.
|
||||
|
||||
The Manager also provides a focility to log the output from the
|
||||
application. It will be helpful to see runtime warnings or error
|
||||
messages as well as to see the G4cout of the Geant4 application.
|
||||
|
||||
E) What you can do with Gain
|
||||
Gain has a graphical interface quite similar to that of GAG.
|
||||
In addition, it provides a function to connect pluriel remote GainServers
|
||||
simultaneously. Each connection has an independent GUI window in Gain
|
||||
so that you can run several Geant4 applications on different remote sites
|
||||
and run them simultaneously with the help of Gain which is running on your PC.
|
||||
|
||||
Gain and GainServers can run on the same host (localhost). The free ports are
|
||||
allocated automatically to respective GainServer.
|
||||
|
||||
E) How to run GainServer ans Gain together
|
||||
|
||||
As stated above, the present implementation of GainServer doesn't run in the
|
||||
daemon mode. So, you have to keep your terminal session as long as your
|
||||
application is running.
|
||||
|
||||
The steps are as follows;
|
||||
|
||||
1. login to the remote host(s) on which you are going to run your
|
||||
Geant4 application(s)
|
||||
2. run your application. GainServer displays the message;
|
||||
"GainServer waiting at port 40000"
|
||||
The port number starting from 40000 is automatically allocated to
|
||||
your application(s). This port number is used to connect Gain
|
||||
client to the server.
|
||||
If you run another Geant4 application on the same remote machine,
|
||||
another port number is automatically allocated and displayed.
|
||||
|
||||
3. run Gain client on your PC. The upper left menu urges you to
|
||||
type in the port number and host name. Select "localhost", if
|
||||
GainServer is running on your PC.
|
||||
|
||||
When connection is established, you will have the commands tree
|
||||
and parameter window just like those of GAG.
|
||||
|
||||
If you connect to another Geant4 application, another tabbed pane
|
||||
is created to manage that connection.
|
||||
|
||||
4. You can disconnect one or all connections. By this disconnection,
|
||||
corresponding Geant4 applications exit using a gentle exit command
|
||||
of Geant4, so that normal exitng procedures of Geant4 is performed.
|
||||
|
||||
F) How to use VRML viewer together with Gain (Under test)
|
||||
A prototype implementation of Gain is available (2002 end July)
|
||||
which incorporates Geant4's vrmlview.
|
||||
You can use VRML viewer to visualize the geometry and events.
|
||||
Thus, you can use and run Geant4 on your PC running Java (i.e., Windows,
|
||||
Linux, Solaris, MacOSX etc.) with Gain to control the execution and
|
||||
with your VRML viewer of your choice to visualize, while your simulation
|
||||
is being executed on a remote compute server (maybe with bad Java support).
|
||||
|
||||
|
||||
</pre>
|
||||
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user