Import Geant4 9.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 15:37:50 +02:00
parent a8e9364cea
commit 96c8bcd0af
6923 changed files with 198390 additions and 41849 deletions
+25 -2
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.29 2007/06/07 09:12:11 kmura Exp $
$Id: History,v 1.33 2007/11/25 19:47:02 kmura Exp $
-------------------------------------------------------------------
=========================================================
@@ -18,6 +18,29 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
envs-V09-00-04 26 Nov. Koichi Murakami
[g4py]
- add G4 GDML module support
- update PL stuffs for 9.1
envs-V09-00-03 16 Nov. Koichi Murakami
- sorry, forget commiting this history file.
envs-V09-00-02 13 Nov. Koichi Murakami
[g4py]
- modified for 9.1 release
- add GDML support / GDML file I/O examples
envs-V09-00-01 07 Aug. Koichi Murakami
[g4py]
- add geometry stuffs(boolean solids) and testing stuffs
envs-V09-00-00 14 July Koichi Murakami
[g4py]
- bug fix
- update/add geometry stuffs
- new example of TestEm0
envs-V08-03-01 7 June Koichi Murakami
[g4py]
- modified for 9.0 (checked for cand-05)
@@ -39,7 +62,7 @@ envs-V08-01-01 21 November 2006 Koichi Murakami
envs-V08-01-00 20 November 2006 Koichi Murakami
[g4py]
- add MacOSX support
- more exposed staffs
- more exposed stuffs
- add physics list module
- add GUI examples using wxPython
@@ -25,7 +25,7 @@
//
// Taken from
// $Id: MomoEventAction.hh,v 1.2 2006/06/29 15:27:31 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
#ifndef MomoEventAction_h
@@ -25,7 +25,7 @@
//
// Taken after
// $Id: MomoRunAction.hh,v 1.2 2006/06/29 15:27:45 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
#ifndef MomoRunAction_h
@@ -25,7 +25,7 @@
//
// Taken from
// $Id: MomoEventAction.cc,v 1.2 2006/06/29 15:27:54 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
@@ -25,7 +25,7 @@
//
// Taken from
// $Id: MomoRunAction.cc,v 1.2 2006/06/29 15:28:02 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
+15 -6
View File
@@ -1,4 +1,4 @@
$Id: 00README,v 1.6 2006/08/10 08:48:26 kmura Exp $
$Id: 00README,v 1.9 2007/11/25 19:37:24 kmura Exp $
==========================================================================
Geant4Py
@@ -87,10 +87,19 @@ Fine tuning of the library path:
--with-package-dir=DIR Geant4 Package dir
--with-gdml-incdir=DIR GDML header dir
--with-gdml-libdir=DIR GDML library dir
--with-xercesc-incdir=DIR Xerces-C header dir [/usr/include]
--with-xercesc-libdir=DIR Xerces-C library dir [/usr/lib]
Enable/disable options: prefix with either --enable- or --disable-
openglx OpenGL support [auto]
openglxm OpenGLXm support [disable, $G4VIS_USE_OPENGLXM]
raytracerx RayTracerX support [disable, $G4VIS_USE_RAYTRACERX]
g4gdml GDML support (G4 module) [disable]
gdml GDML support (external, experimental) [disable]
also specifying inc/lib directories
Supported Architectures:
linux for Linux gcc 3.x and 4.x
@@ -154,12 +163,12 @@ Notes:
All users' libraries should be build in shared libaries.
2) Development Environment:
OS: SuSE Linux 10.1 (x86-64)
g++ : 4.1.0
Python: 2.4.2
CLHEP: 1.9.2.2 / 2.0.2.2
OS: SuSE Linux 10.3 (x86-64)
g++ : 4.2.1
Python: 2.5.1
CLHEP: 1.9.3.2 / 2.0.3.2
BOOST-Python: 1.33.1
ROOT: 5.10/00
ROOT: 5.16/00
Have A Fun!!
+1 -1
View File
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.1 2006/02/27 09:29:42 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py
# ===========================================================
+29 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.25 2007/06/07 09:07:37 kmura Exp $
$Id: History,v 1.32 2007/11/25 19:37:33 kmura Exp $
-------------------------------------------------------------------
=========================================================
@@ -14,6 +14,34 @@ Geant4Py is a Geant4-Python bridge.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
26 November 2007 K.Murakami
- add G4 GDML module support
- update PL for 9.1
12 November 2007 K.Murakami (1.5.0)
- add FTFP_BERT in PL for 9.1
- add GDML (external lib.) support (experimental)
- add exposure of G4Navigator
07 November 2007 K.Murakami
- update for 9.1
* G4ParticleGun
* G4NistManager
07 August 2007 K.Murakami (1.4.1)
- add boolean sold classes
- add G4PVPlacement constructors for geometry overlap check
- add gtest06/07 for geometry test
12 July 2007 K.Murakami (1.4.0)
- add version contorol in pyG4UIterminal.cc
- bug fix in pyG4VUserDetectorConstruction
- Construct() method should return PV
- update G4VSolid
- add specific CSG solid classes
- add gtest05 as an example constructing CSG solid geometry in Python
- a new example of TestEm0 is contributed by Jean
07 June 2007 K.Murakami
- modified for 9.0
- pyG4LossTableManager.cc : updated
+16 -1
View File
@@ -1,4 +1,4 @@
# $Id: g4py.gmk,v 1.3 2006/11/20 08:01:30 kmura Exp $
# $Id: g4py.gmk,v 1.5 2007/11/25 19:37:55 kmura Exp $
# ===========================================================
# Makefile for building Python module with Boost.Python
#
@@ -7,6 +7,7 @@ COMPILE_G4PY := true
G4PY_INCFLAGS := -I$(Q_G4_INCDIR)
G4PY_LOPT := -L$(Q_G4_LIBDIR) \
-lG4persistency \
-lG4readout \
-lG4run \
-lG4event \
@@ -39,3 +40,17 @@ G4PY_INCFLAGS += -I$(G4PY_INSTALL)/source/version
# boost patch
G4PY_INCFLAGS += -I$(G4PY_INSTALL)/source/boost
# GDML
ifeq ($(Q_ENABLE_GDML), 1)
G4PY_INCFLAGS += -I$(Q_GDML_INCDIR)/Common/Writer
G4PY_INCFLAGS += -I$(Q_GDML_INCDIR)/Common/Saxana
G4PY_INCFLAGS += -I$(Q_GDML_INCDIR)/Common/Schema
G4PY_INCFLAGS += -I$(Q_GDML_INCDIR)/G4Binding/G4Writer
G4PY_INCFLAGS += -I$(Q_GDML_INCDIR)/G4Binding/G4Processor
G4PY_INCFLAGS += -I$(Q_GDML_INCDIR)/G4Binding/G4Evaluator
G4PY_LOPT += -L$(Q_GDML_LIBDIR) \
-lSaxana -lProcesses -lWriter \
-lG4Evaluator -lG4Processor -lG4Subscribers -lG4Writer
endif
+18 -1
View File
@@ -1,4 +1,4 @@
# $Id: module.gmk,v 1.2 2006/04/25 05:53:05 kmura Exp $
# $Id: module.gmk,v 1.3 2007/11/25 19:38:03 kmura Exp $
# ===========================================================
# Script for building a Boost-Python module
# ===========================================================
@@ -34,6 +34,23 @@ endif
LOPT += -l$(Q_BOOST_PYTHON_LIB)
# Xerces-C ...
ifdef Q_XERCESC_INCDIR
ifneq ($(Q_XERCESC_INCDIR), /usr/include)
INCFLAGS += -I$(Q_XERCESC_INCDIR)
endif
endif
ifdef Q_XERCESC_LIBDIR
ifneq ($(Q_XERCESC_LIBDIR), /usr/lib)
ifneq ($(Q_XERCESC_LIBDIR), /usr/lib64)
LOPT += -L$(Q_XERCESC_LIBDIR)
endif
endif
LOPT += -lxerces-c
endif
# finished
CXXFLAGS += $(INCFLAGS)
+8 -3
View File
@@ -1,5 +1,5 @@
# $Id: linux.gmk,v 1.5 2006/08/10 08:49:08 kmura Exp $
# $Name: geant4-09-00 $
# $Id: linux.gmk,v 1.6 2007/11/13 08:04:34 kmura Exp $
# $Name: geant4-09-01 $
# ===========================================================
# System specific terms
# ===========================================================
@@ -63,7 +63,12 @@ ifdef COMPILE_G4PY
rpath2 := $(Q_G4_LIBDIR)
endif
ifneq ($(Q_CLHEP_LIBDIR), $(Q_G4_LIBDIR))
rpath3 := :$(Q_CLHEP_LIBDIR)
rpath3 := $(Q_CLHEP_LIBDIR)
endif
ifeq ($(Q_ENABLE_GDML), 1)
ifneq ($(Q_GDML_LIBDIR), $(Q_G4_LIBDIR))
rpath3 += :$(Q_GDML_LIBDIR)
endif
endif
rpath4 := $(Q_LIBDIR)
endif
@@ -1,5 +1,5 @@
# $Id: linuxx8664gcc.gmk,v 1.5 2006/08/10 08:49:08 kmura Exp $
# $Name: geant4-09-00 $
# $Id: linuxx8664gcc.gmk,v 1.6 2007/11/13 08:04:34 kmura Exp $
# $Name: geant4-09-01 $
# ===========================================================
# System specific terms
# ===========================================================
@@ -63,7 +63,12 @@ ifdef COMPILE_G4PY
rpath2 := $(Q_G4_LIBDIR)
endif
ifneq ($(Q_CLHEP_LIBDIR), $(Q_G4_LIBDIR))
rpath3 := :$(Q_CLHEP_LIBDIR)
rpath3 := $(Q_CLHEP_LIBDIR)
endif
ifeq ($(Q_ENABLE_GDML), 1)
ifneq ($(Q_GDML_LIBDIR), $(Q_G4_LIBDIR))
rpath3 += :$(Q_GDML_LIBDIR)
endif
endif
rpath4 := $(Q_LIBDIR)
endif
+1 -1
View File
@@ -1,5 +1,5 @@
# $Id: macosx.gmk,v 1.4 2006/08/10 08:49:08 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# System specific terms
#
+124 -1
View File
@@ -1,5 +1,5 @@
#! /bin/sh -
#$Id: configure,v 1.5 2006/11/20 08:01:17 kmura Exp $
#$Id: configure,v 1.7 2007/11/25 19:37:44 kmura Exp $
# ======================================================================
# A configure script for Geant4Py
# ======================================================================
@@ -50,10 +50,19 @@ Fine tuning of the library path:
--with-package-dir=DIR Geant4 Package dir
--with-gdml-incdir=DIR GDML header dir
--with-gdml-libdir=DIR GDML library dir
--with-xercesc-incdir=DIR Xerces-C header dir [/usr/include]
--with-xercesc-libdir=DIR Xerces-C library dir [/usr/lib]
Enable/disable options: prefix with either --enable- or --disable-
openglx OpenGLX support [auto]
openglxm OpenGLXm support [disable, \$G4VIS_USE_OPENGLXM]
raytracerx RayTracerX support [disable, \$G4VIS_USE_RAYTRACERX]
g4gdml GDML support (G4 module) [disable]
gdml GDML support (external, experimental) [disable]
also specifying inc/lib directories
Supported Architectures:
linux for Linux gcc 3.x and 4.x
@@ -94,6 +103,14 @@ enable_raytracerx=${enable_raytracerx:-0}
enable_physicslist=0
enable_g4gdml=0
enable_gdml=0
gdml_incdir=/zzz
gdml_libdir=/zzz
xercesc_incdir=/usr/include
# checking system
case $1 in
linux|linuxx8664gcc|macosx)
@@ -149,6 +166,10 @@ do
--with-boost-incdir=*) boost_incdir=$optarg ;;
--with-boost-libdir=*) boost_libdir=$optarg ;;
--with-boost-python-lib=*) boost_python_lib=$optarg ;;
--with-gdml-incdir=*) gdml_incdir=$optarg ;;
--with-gdml-libdir=*) gdml_libdir=$optarg ;;
--with-xercesc-incdir=*) xercesc_incdir=$optarg ;;
--with-xercesc-libdir=*) xercesc_libdir=$optarg ;;
# ---------------------------------------------------------------
--enable-openglx ) enable_openglx=1 ;;
--disable-openglx ) enable_openglx=0 ;;
@@ -156,6 +177,10 @@ do
--disable-openglxm ) enable_openglxm=0 ;;
--enable-raytracerx ) enable_raytracerx=1 ;;
--disable-raytracerx ) enable_raytracerx=0 ;;
--enable-g4gdml ) enable_g4gdml=1 ;;
--disable-g4gdml ) enable_g4gdml=0 ;;
--enable-gdml ) enable_gdml=1 ;;
--disable-gdml ) enable_gdml=0 ;;
# ---------------------------------------------------------------
-*)
echo "Unrecognized option: $1"
@@ -342,6 +367,79 @@ else
echo "yes"
fi
# ---
echo -n "Checking for G4GDML support ..."
if [ $enable_g4gdml == 0 ]; then
echo "no"
else
if [ -f "$g4_incdir"/G4GDMLParser.hh ]; then
echo "yes"
else
echo "no"
echo "### G4 GDML component is not found."
exit -1
fi
fi
# ---
echo -n "Checking for GDML support ..."
if [ $enable_gdml == 0 ]; then
echo "no"
else
echo "yes"
fi
if [ $enable_gdml == 1 ]; then
echo -n "Checking for GDML include dir ..."
if [ -d "$gdml_incdir"/G4Binding ]; then
echo "yes"
else
echo "no"
echo "### $gdml_incdir/G4Binding does not exist. "
echo "Try --with-gdml-incdir option."
exit -1
fi
echo -n "Checking for GDML lib dir ..."
if [ -f "$gdml_libdir"/libG4Processor.so ]; then
echo "yes"
else
echo "no"
echo "### $gdml_libdir/libG4Processor.so does not exist. "
echo "Try --with-gdml-libdir option."
exit -1
fi
fi
# ---
if [ $enable_g4gdml == 1 -o $enable_gdml == 1 ]; then
echo -n "Checking for Xerces-C include dir ..."
if [ -d "$xercesc_incdir/xercesc" ]; then
echo "yes"
else
echo "no"
echo "### $xercesc_incdir/xercesc does not exist. "
echo "Try --with-xercesc-incdir option."
exit -1
fi
echo -n "Checking for Xerces-C lib dir ..."
if [ ! $xercesc_libdir ]; then
if [ $arch == 64 ]; then
xercesc_libdir=/usr/lib64
else
xercesc_libdir=/usr/lib
fi
fi
if [ -f "$xercesc_libdir"/libxerces-c.so ]; then
echo "yes"
else
echo "no"
echo "### $xercesc_libdir/libxerces-c.so does not exist. "
echo "Try --with-xercesc-libdir option."
exit -1
fi
fi
# ---
echo -n "Writing config.gmk ... "
@@ -391,7 +489,24 @@ Q_ENABLE_RAYTRACERX := $enable_raytracerx
Q_ENABLE_PHYSICSLIST := $enable_physicslist
Q_ENABLE_G4GDML := $enable_g4gdml
Q_ENABLE_GDML := $enable_gdml
EOF
if [ $enable_gdml == 1 ]; then
cat >> $make_config <<EOF
Q_GDML_INCDIR := $gdml_incdir
Q_GDML_LIBDIR := $gdml_libdir
EOF
fi
if [ $enable_g4gdml == 1 -o $enable_gdml == 1 ]; then
cat >> $make_config <<EOF
Q_XERCESC_INCDIR := $xercesc_incdir
Q_XERCESC_LIBDIR := $xercesc_libdir
EOF
fi
echo "done"
echo -n "Writing config.status ... "
echo $arguments > config.status
@@ -416,6 +531,14 @@ if [ $enable_physicslist = 1 ]; then
echo -n " physicslist"
fi
if [ $enable_g4gdml = 1 ]; then
echo -n " g4gdml"
fi
if [ $enable_gdml = 1 ]; then
echo -n " gdml"
fi
echo "."
# ---
+4 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.2 2006/06/13 15:53:08 kmura Exp $
$Id: History,v 1.3 2007/11/13 07:58:42 kmura Exp $
-------------------------------------------------------------------
=========================================================
@@ -14,6 +14,9 @@ A set of examples for Geant4Py.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
12 November 2007 K.Murakami
- add GDML I/O examples
14 June 2006 K.Murakami
- Summary
[demos/water_phantom]
+4 -1
View File
@@ -1,4 +1,4 @@
$Id: README,v 1.2 2006/06/13 16:07:20 kmura Exp $
$Id: README,v 1.3 2007/11/13 07:58:42 kmura Exp $
-------------------------------------------------------------------
This directory contains a set of examples for Geant4Py.
@@ -29,3 +29,6 @@ magnetic field and visualization outputs.
[emplot]
Examples of plotting photon cross sections and stopping powers with ROOT
[gdml]
Examples of writing/reading user's geometry to/from a GDML file
@@ -0,0 +1,199 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: DetectorConstruction.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorConstruction.hh"
#include "DetectorMessenger.hh"
#include "G4Material.hh"
#include "G4NistManager.hh"
#include "G4Box.hh"
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
#include "G4GeometryManager.hh"
#include "G4PhysicalVolumeStore.hh"
#include "G4LogicalVolumeStore.hh"
#include "G4SolidStore.hh"
#include "G4UnitsTable.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorConstruction::DetectorConstruction()
:pBox(0), aMaterial(0)
{
BoxSize = 1*mm;
DefineMaterials();
SetMaterial("Germanium");
detectorMessenger = new DetectorMessenger(this);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorConstruction::~DetectorConstruction()
{ delete detectorMessenger;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VPhysicalVolume* DetectorConstruction::Construct()
{
return ConstructVolumes();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::DefineMaterials()
{
//
// define Elements
//
G4double z,a;
G4Element* H = new G4Element("Hydrogen" ,"H" , z= 1., a= 1.01*g/mole);
G4Element* N = new G4Element("Nitrogen" ,"N" , z= 7., a= 14.01*g/mole);
G4Element* O = new G4Element("Oxygen" ,"O" , z= 8., a= 16.00*g/mole);
G4Element* Ge = new G4Element("Germanium","Ge", z=32., a= 72.59*g/mole);
G4Element* Bi = new G4Element("Bismuth" ,"Bi", z=83., a= 208.98*g/mole);
//
// define materials
//
G4double density;
G4int ncomponents, natoms;
G4double fractionmass;
G4Material* Air =
new G4Material("Air", density= 1.290*mg/cm3, ncomponents=2);
Air->AddElement(N, fractionmass=70.*perCent);
Air->AddElement(O, fractionmass=30.*perCent);
G4Material* H2l =
new G4Material("H2liquid", density= 70.8*mg/cm3, ncomponents=1);
H2l->AddElement(H, fractionmass=1.);
G4Material* H2O =
new G4Material("Water", density= 1.000*g/cm3, ncomponents=2);
H2O->AddElement(H, natoms=2);
H2O->AddElement(O, natoms=1);
///H2O->SetChemicalFormula("H_2O");
H2O->GetIonisation()->SetMeanExcitationEnergy(75.0*eV);
G4Material* steam =
new G4Material("WaterSteam", density= 1.0*mg/cm3, ncomponents=1);
steam->AddMaterial(H2O, fractionmass=1.);
steam->GetIonisation()->SetMeanExcitationEnergy(71.6*eV);
G4Material* BGO =
new G4Material("BGO", density= 7.10*g/cm3, ncomponents=3);
BGO->AddElement(O , natoms=12);
BGO->AddElement(Ge, natoms= 3);
BGO->AddElement(Bi, natoms= 4);
new G4Material("Aluminium" , z=13., a= 26.98*g/mole, density= 2.700*g/cm3);
new G4Material("Silicon" , z=14., a= 28.09*g/mole, density= 2.330*g/cm3);
new G4Material("liquidArgon", z=18., a= 39.95*g/mole, density= 1.390*g/cm3);
new G4Material("Iron" , z=26., a= 55.85*g/mole, density= 7.870*g/cm3);
new G4Material("Copper" , z=29., a= 63.55*g/mole, density= 8.960*g/cm3);
new G4Material("Germanium" , z=32., a= 72.61*g/mole, density= 5.323*g/cm3);
new G4Material("Silver" , z=47., a=107.87*g/mole, density= 10.50*g/cm3);
new G4Material("Tungsten" , z=74., a=183.85*g/mole, density= 19.30*g/cm3);
new G4Material("Lead" , z=82., a=207.19*g/mole, density= 11.35*g/cm3);
new G4Material("Uranium" , z=92., a=238.03*g/mole, density= 18.95*g/cm3);
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VPhysicalVolume* DetectorConstruction::ConstructVolumes()
{
// Cleanup old geometry
G4GeometryManager::GetInstance()->OpenGeometry();
G4PhysicalVolumeStore::GetInstance()->Clean();
G4LogicalVolumeStore::GetInstance()->Clean();
G4SolidStore::GetInstance()->Clean();
G4Box*
sBox = new G4Box("Container", //its name
BoxSize/2,BoxSize/2,BoxSize/2); //its dimensions
G4LogicalVolume*
lBox = new G4LogicalVolume(sBox, //its shape
aMaterial, //its material
aMaterial->GetName()); //its name
pBox = new G4PVPlacement(0, //no rotation
G4ThreeVector(), //at (0,0,0)
lBox, //its logical volume
aMaterial->GetName(), //its name
0, //its mother volume
false, //no boolean operation
0); //copy number
//always return the root volume
//
return pBox;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::PrintParameters()
{
G4cout << "\n The Box is " << G4BestUnit(BoxSize,"Length")
<< " of " << aMaterial->GetName() << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4RunManager.hh"
void DetectorConstruction::SetMaterial(G4String materialChoice)
{
// search the material by its name, or build it from nist data base
G4Material* pttoMaterial =
G4NistManager::Instance()->FindOrBuildMaterial(materialChoice);
if (pttoMaterial) {
aMaterial = pttoMaterial;
if (pBox) G4RunManager::GetRunManager()
->DefineWorldVolume(ConstructVolumes());
} else {
G4cout << "\n--> warning from DetectorConstruction::SetMaterial : "
<< materialChoice << " not found" << G4endl;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,89 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: DetectorConstruction.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef DetectorConstruction_h
#define DetectorConstruction_h 1
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
class G4LogicalVolume;
class G4Material;
class DetectorMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class DetectorConstruction : public G4VUserDetectorConstruction
{
public:
DetectorConstruction();
~DetectorConstruction();
public:
G4VPhysicalVolume* Construct();
void SetMaterial (G4String);
public:
const
G4VPhysicalVolume* GetWorld() {return pBox;};
G4double GetSize() {return BoxSize;};
G4Material* GetMaterial() {return aMaterial;};
void PrintParameters();
private:
G4VPhysicalVolume* pBox;
G4double BoxSize;
G4Material* aMaterial;
DetectorMessenger* detectorMessenger;
private:
void DefineMaterials();
G4VPhysicalVolume* ConstructVolumes();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,72 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: DetectorMessenger.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorMessenger.hh"
#include "DetectorConstruction.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithAString.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
:Detector(Det)
{
testemDir = new G4UIdirectory("/testem/");
testemDir->SetGuidance("commands specific to this example");
detDir = new G4UIdirectory("/testem/det/");
detDir->SetGuidance("detector construction commands");
MaterCmd = new G4UIcmdWithAString("/testem/det/setMat",this);
MaterCmd->SetGuidance("Select material of the box.");
MaterCmd->SetParameterName("choice",false);
MaterCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorMessenger::~DetectorMessenger()
{
delete MaterCmd;
delete detDir;
delete testemDir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
{
if( command == MaterCmd )
{ Detector->SetMaterial(newValue);}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,65 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: DetectorMessenger.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef DetectorMessenger_h
#define DetectorMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
class DetectorConstruction;
class G4UIdirectory;
class G4UIcmdWithAString;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class DetectorMessenger: public G4UImessenger
{
public:
DetectorMessenger(DetectorConstruction* );
~DetectorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
DetectorConstruction* Detector;
G4UIdirectory* testemDir;
G4UIdirectory* detDir;
G4UIcmdWithAString* MaterCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,14 @@
# $Id: GNUmakefile,v 1.2 2007/07/06 06:41:39 kmura Exp $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
include ../../../../config/config.gmk
# python module name
MODULE := ../TestEm0
include $(G4PY_INSTALL)/config/g4py.gmk
include $(G4PY_INSTALL)/config/module.gmk
@@ -0,0 +1,119 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: PhysListEmStandard.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysListEmStandard.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4MultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4hIonisation.hh"
#include "G4ionIonisation.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListEmStandard::PhysListEmStandard(const G4String& name)
: G4VPhysicsConstructor(name)
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListEmStandard::~PhysListEmStandard()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysListEmStandard::ConstructProcess()
{
// Add standard EM Processes
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
// gamma
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
pmanager->AddDiscreteProcess(new G4ComptonScattering);
pmanager->AddDiscreteProcess(new G4GammaConversion);
} else if (particleName == "e-") {
//electron
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
} else if (particleName == "e+") {
//positron
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3);
pmanager->AddProcess(new G4MuPairProduction, -1, 4,4);
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4ionIonisation, -1, 2,2);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
pmanager->AddProcess(new G4MultipleScattering,-1,1,1);
pmanager->AddProcess(new G4hIonisation, -1,2,2);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,67 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: PhysListEmStandard.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysListEmStandard_h
#define PhysListEmStandard_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PhysListEmStandard : public G4VPhysicsConstructor
{
public:
PhysListEmStandard(const G4String& name = "standard");
~PhysListEmStandard();
public:
// This method is dummy for physics
void ConstructParticle() {};
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
void ConstructProcess();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,253 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: PhysicsList.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysicsList.hh"
#include "PhysicsListMessenger.hh"
#include "PhysListEmStandard.hh"
#include "G4LossTableManager.hh"
#include "G4UnitsTable.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsList::PhysicsList()
: G4VModularPhysicsList()
{
G4LossTableManager::Instance();
currentDefaultCut = 1.0*mm;
cutForGamma = currentDefaultCut;
cutForElectron = currentDefaultCut;
cutForPositron = currentDefaultCut;
pMessenger = new PhysicsListMessenger(this);
SetVerboseLevel(1);
// EM physics
emName = G4String("standard");
emPhysicsList = new PhysListEmStandard(emName);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsList::~PhysicsList()
{
delete pMessenger;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// Bosons
#include "G4ChargedGeantino.hh"
#include "G4Geantino.hh"
#include "G4Gamma.hh"
#include "G4OpticalPhoton.hh"
// leptons
#include "G4MuonPlus.hh"
#include "G4MuonMinus.hh"
#include "G4NeutrinoMu.hh"
#include "G4AntiNeutrinoMu.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4NeutrinoE.hh"
#include "G4AntiNeutrinoE.hh"
// Mesons
#include "G4PionPlus.hh"
#include "G4PionMinus.hh"
#include "G4PionZero.hh"
#include "G4Eta.hh"
#include "G4EtaPrime.hh"
#include "G4KaonPlus.hh"
#include "G4KaonMinus.hh"
#include "G4KaonZero.hh"
#include "G4AntiKaonZero.hh"
#include "G4KaonZeroLong.hh"
#include "G4KaonZeroShort.hh"
// Baryons
#include "G4Proton.hh"
#include "G4AntiProton.hh"
#include "G4Neutron.hh"
#include "G4AntiNeutron.hh"
// Nuclei
#include "G4Deuteron.hh"
#include "G4Triton.hh"
#include "G4Alpha.hh"
#include "G4GenericIon.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::ConstructParticle()
{
// pseudo-particles
G4Geantino::GeantinoDefinition();
G4ChargedGeantino::ChargedGeantinoDefinition();
// gamma
G4Gamma::GammaDefinition();
// optical photon
G4OpticalPhoton::OpticalPhotonDefinition();
// leptons
G4Electron::ElectronDefinition();
G4Positron::PositronDefinition();
G4MuonPlus::MuonPlusDefinition();
G4MuonMinus::MuonMinusDefinition();
G4NeutrinoE::NeutrinoEDefinition();
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
G4NeutrinoMu::NeutrinoMuDefinition();
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
// mesons
G4PionPlus::PionPlusDefinition();
G4PionMinus::PionMinusDefinition();
G4PionZero::PionZeroDefinition();
G4Eta::EtaDefinition();
G4EtaPrime::EtaPrimeDefinition();
G4KaonPlus::KaonPlusDefinition();
G4KaonMinus::KaonMinusDefinition();
G4KaonZero::KaonZeroDefinition();
G4AntiKaonZero::AntiKaonZeroDefinition();
G4KaonZeroLong::KaonZeroLongDefinition();
G4KaonZeroShort::KaonZeroShortDefinition();
// barions
G4Proton::ProtonDefinition();
G4AntiProton::AntiProtonDefinition();
G4Neutron::NeutronDefinition();
G4AntiNeutron::AntiNeutronDefinition();
// ions
G4Deuteron::DeuteronDefinition();
G4Triton::TritonDefinition();
G4Alpha::AlphaDefinition();
G4GenericIon::GenericIonDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4EmProcessOptions.hh"
void PhysicsList::ConstructProcess()
{
// Transportation
//
AddTransportation();
// Electromagnetic physics list
//
emPhysicsList->ConstructProcess();
// Em options
//
G4EmProcessOptions emOptions;
emOptions.SetBuildCSDARange(true);
emOptions.SetMaxEnergyForCSDARange(100*TeV);
emOptions.SetDEDXBinningForCSDARange(120);
emOptions.SetVerbose(0);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::AddPhysicsList(const G4String& name)
{
if (verboseLevel>0) {
G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
}
if (name == emName) return;
if (name == "standard") {
emName = name;
delete emPhysicsList;
emPhysicsList = new PhysListEmStandard(name);
} else {
G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
<< " is not defined"
<< G4endl;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
void PhysicsList::SetCuts()
{
// set cut values for gamma at first and for e- second and next for e+,
// because some processes for e+/e- need cut values for gamma
SetCutValue(cutForGamma, "gamma");
SetCutValue(cutForElectron, "e-");
SetCutValue(cutForPositron, "e+");
DumpCutValuesTable();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCutForGamma(G4double cut)
{
cutForGamma = cut;
SetParticleCuts(cutForGamma, G4Gamma::Gamma());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCutForElectron(G4double cut)
{
cutForElectron = cut;
SetParticleCuts(cutForElectron, G4Electron::Electron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCutForPositron(G4double cut)
{
cutForPositron = cut;
SetParticleCuts(cutForPositron, G4Positron::Positron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,78 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: PhysicsList.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
// 14.10.02 (V.Ivanchenko) provide modular list on base of old PhysicsList
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysicsList_h
#define PhysicsList_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
class PhysicsListMessenger;
class G4VPhysicsConstructor;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PhysicsList: public G4VModularPhysicsList
{
public:
PhysicsList();
~PhysicsList();
void ConstructParticle();
void ConstructProcess();
void AddPhysicsList(const G4String& name);
void SetCuts();
void SetCutForGamma(G4double);
void SetCutForElectron(G4double);
void SetCutForPositron(G4double);
private:
G4double cutForGamma;
G4double cutForElectron;
G4double cutForPositron;
G4double currentDefaultCut;
G4VPhysicsConstructor* emPhysicsList;
G4String emName;
PhysicsListMessenger* pMessenger;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,119 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PhysicsListMessenger.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysicsListMessenger.hh"
#include "PhysicsList.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithAString.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
:pPhysicsList(pPhys)
{
physDir = new G4UIdirectory("/testem/phys/");
physDir->SetGuidance("physics list commands");
gammaCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setGCut",this);
gammaCutCmd->SetGuidance("Set gamma cut.");
gammaCutCmd->SetParameterName("Gcut",false);
gammaCutCmd->SetUnitCategory("Length");
gammaCutCmd->SetRange("Gcut>0.0");
gammaCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
electCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setECut",this);
electCutCmd->SetGuidance("Set electron cut.");
electCutCmd->SetParameterName("Ecut",false);
electCutCmd->SetUnitCategory("Length");
electCutCmd->SetRange("Ecut>0.0");
electCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
protoCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setPCut",this);
protoCutCmd->SetGuidance("Set positron cut.");
protoCutCmd->SetParameterName("Pcut",false);
protoCutCmd->SetUnitCategory("Length");
protoCutCmd->SetRange("Pcut>0.0");
protoCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
allCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setCuts",this);
allCutCmd->SetGuidance("Set cut for all.");
allCutCmd->SetParameterName("cut",false);
allCutCmd->SetUnitCategory("Length");
allCutCmd->SetRange("cut>0.0");
allCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
pListCmd = new G4UIcmdWithAString("/testem/phys/addPhysics",this);
pListCmd->SetGuidance("Add modula physics list.");
pListCmd->SetParameterName("PList",false);
pListCmd->AvailableForStates(G4State_PreInit);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsListMessenger::~PhysicsListMessenger()
{
delete gammaCutCmd;
delete electCutCmd;
delete protoCutCmd;
delete allCutCmd;
delete pListCmd;
delete physDir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsListMessenger::SetNewValue(G4UIcommand* command,
G4String newValue)
{
if( command == gammaCutCmd )
{ pPhysicsList->SetCutForGamma(gammaCutCmd->GetNewDoubleValue(newValue));}
if( command == electCutCmd )
{ pPhysicsList->SetCutForElectron(electCutCmd->GetNewDoubleValue(newValue));}
if( command == protoCutCmd )
{ pPhysicsList->SetCutForPositron(protoCutCmd->GetNewDoubleValue(newValue));}
if( command == allCutCmd )
{
G4double cut = allCutCmd->GetNewDoubleValue(newValue);
pPhysicsList->SetCutForGamma(cut);
pPhysicsList->SetCutForElectron(cut);
pPhysicsList->SetCutForPositron(cut);
}
if( command == pListCmd )
{ pPhysicsList->AddPhysicsList(newValue);}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,70 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PhysicsListMessenger.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysicsListMessenger_h
#define PhysicsListMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
class PhysicsList;
class G4UIdirectory;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithAString;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PhysicsListMessenger: public G4UImessenger
{
public:
PhysicsListMessenger(PhysicsList* );
~PhysicsListMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
PhysicsList* pPhysicsList;
G4UIdirectory* physDir;
G4UIcmdWithADoubleAndUnit* gammaCutCmd;
G4UIcmdWithADoubleAndUnit* electCutCmd;
G4UIcmdWithADoubleAndUnit* protoCutCmd;
G4UIcmdWithADoubleAndUnit* allCutCmd;
G4UIcmdWithAString* pListCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,82 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: PrimaryGeneratorAction.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PrimaryGeneratorAction.hh"
#include "DetectorConstruction.hh"
#include "G4Event.hh"
#include "G4ParticleTable.hh"
#include "G4ParticleDefinition.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PrimaryGeneratorAction::PrimaryGeneratorAction( DetectorConstruction* DC)
:Detector(DC)
{
particleGun = new G4ParticleGun(1);
SetDefaultKinematic();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PrimaryGeneratorAction::~PrimaryGeneratorAction()
{
delete particleGun;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PrimaryGeneratorAction::SetDefaultKinematic()
{
G4ParticleDefinition* particle
= G4ParticleTable::GetParticleTable()->FindParticle("e-");
particleGun->SetParticleDefinition(particle);
particleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.));
particleGun->SetParticleEnergy(100*MeV);
G4double position = -0.5*(Detector->GetSize());
particleGun->SetParticlePosition(G4ThreeVector(position,0.*cm,0.*cm));
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
//this function is called at the begining of event
//
particleGun->GeneratePrimaryVertex(anEvent);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,65 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PrimaryGeneratorAction.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PrimaryGeneratorAction_h
#define PrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "G4ParticleGun.hh"
#include "globals.hh"
class G4Event;
class DetectorConstruction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
PrimaryGeneratorAction(DetectorConstruction*);
~PrimaryGeneratorAction();
public:
void SetDefaultKinematic();
void GeneratePrimaries(G4Event*);
G4ParticleGun* GetParticleGun() {return particleGun;}
private:
G4ParticleGun* particleGun;
DetectorConstruction* Detector;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,350 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RunAction.cc,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "RunAction.hh"
#include "DetectorConstruction.hh"
#include "PrimaryGeneratorAction.hh"
#include "G4Run.hh"
#include "G4ProcessManager.hh"
#include "G4UnitsTable.hh"
#include "G4EmCalculator.hh"
#include "G4Electron.hh"
#include <vector>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RunAction::RunAction(DetectorConstruction* det, PrimaryGeneratorAction* kin)
:detector(det), primary(kin)
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RunAction::~RunAction()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::BeginOfRunAction(const G4Run*)
{
//set precision for printing
G4int prec = G4cout.precision(6);
// get particle
G4ParticleDefinition* particle = primary->GetParticleGun()
->GetParticleDefinition();
G4String partName = particle->GetParticleName();
G4double charge = particle->GetPDGCharge();
G4double energy = primary->GetParticleGun()->GetParticleEnergy();
// get material
G4Material* material = detector->GetMaterial();
G4String matName = material->GetName();
G4double density = material->GetDensity();
G4double radl = material->GetRadlen();
G4cout << "\n " << partName << " ("
<< G4BestUnit(energy,"Energy") << ") in "
<< material->GetName() << " (density: "
<< G4BestUnit(density,"Volumic Mass") << "; radiation length: "
<< G4BestUnit(radl, "Length") << ")" << G4endl;
// get cuts
GetCuts();
if (charge != 0.) {
G4cout << "\n Range cuts : \t gamma "
<< std::setw(8) << G4BestUnit(rangeCut[0],"Length")
<< "\t e- " << std::setw(8) << G4BestUnit(rangeCut[1],"Length");
G4cout << "\n Energy cuts : \t gamma "
<< std::setw(8) << G4BestUnit(energyCut[0],"Energy")
<< "\t e- " << std::setw(8) << G4BestUnit(energyCut[1],"Energy")
<< G4endl;
}
// get processList and extract EM processes (but not MultipleScattering)
G4ProcessVector* plist = particle->GetProcessManager()->GetProcessList();
G4String procName;
G4double cut;
std::vector<G4String> emName;
std::vector<G4double> enerCut;
size_t length = plist->size();
for (size_t j=0; j<length; j++) {
procName = (*plist)[j]->GetProcessName();
cut = energyCut[1];
if ((procName == "eBrem")||(procName == "muBrems")) cut = energyCut[0];
if (((*plist)[j]->GetProcessType() == fElectromagnetic) &&
(procName != "msc")) {
emName.push_back(procName);
enerCut.push_back(cut);
}
}
// print list of processes
G4cout << "\n processes : ";
for (size_t j=0; j<emName.size();j++)
G4cout << "\t" << std::setw(13) << emName[j] << "\t";
G4cout << "\t" << std::setw(13) <<"total";
//instanciate EmCalculator
G4EmCalculator emCal;
// emCal.SetVerbose(2);
//compute cross section per atom (only for single material)
if (material->GetNumberOfElements() == 1) {
G4double Z = material->GetZ();
G4double A = material->GetA();
std::vector<G4double> sigma0;
G4double sig, sigtot = 0.;
for (size_t j=0; j<emName.size();j++) {
sig = emCal.ComputeCrossSectionPerAtom
(energy,particle,emName[j],Z,A,enerCut[j]);
sigtot += sig;
sigma0.push_back(sig);
}
sigma0.push_back(sigtot);
G4cout << "\n \n cross section per atom : ";
for (size_t j=0; j<sigma0.size();j++) {
G4cout << "\t" << std::setw(13) << G4BestUnit(sigma0[j], "Surface");
}
G4cout << G4endl;
}
//get cross section per volume
std::vector<G4double> sigma1;
std::vector<G4double> sigma2;
G4double Sig, Sigtot = 0.;
for (size_t j=0; j<emName.size();j++) {
Sig = emCal.GetCrossSectionPerVolume(energy,particle,emName[j],material);
if (Sig == 0.) Sig = emCal.ComputeCrossSectionPerVolume
(energy,particle,emName[j],material,enerCut[j]);
Sigtot += Sig;
sigma1.push_back(Sig);
sigma2.push_back(Sig/density);
}
sigma1.push_back(Sigtot);
sigma2.push_back(Sigtot/density);
//print cross sections
G4cout << "\n \n cross section per volume : ";
for (size_t j=0; j<sigma1.size();j++) {
G4cout << "\t" << std::setw(13) << sigma1[j]*cm << " cm^-1";
}
G4cout << "\n cross section per mass : ";
for (size_t j=0; j<sigma2.size();j++) {
G4cout << "\t" << std::setw(13) << G4BestUnit(sigma2[j], "Surface/Mass");
}
//print mean free path
G4double lambda;
G4cout << "\n \n mean free path : ";
for (size_t j=0; j<sigma1.size();j++) {
lambda = DBL_MAX;
if (sigma1[j] > 0.) lambda = 1/sigma1[j];
G4cout << "\t" << std::setw(13) << G4BestUnit( lambda, "Length");
}
//mean free path (g/cm2)
G4cout << "\n (g/cm2) : ";
for (size_t j=0; j<sigma2.size();j++) {
lambda = DBL_MAX;
if (sigma2[j] > 0.) lambda = 1/sigma2[j];
G4cout << "\t" << std::setw(13) << G4BestUnit( lambda, "Mass/Surface");
}
G4cout << G4endl;
if (charge == 0.) {
G4cout.precision(prec);
G4cout << "\n-------------------------------------------------------------\n"
<< G4endl;
return;
}
//get stopping power
std::vector<G4double> dedx1;
std::vector<G4double> dedx2;
G4double dedx, dedxtot = 0.;
for (size_t j=0; j<emName.size();j++) {
dedx = emCal.ComputeDEDX(energy,particle,emName[j],material,enerCut[j]);
dedx1.push_back(dedx);
dedx2.push_back(dedx/density);
}
dedxtot = emCal.GetDEDX(energy,particle,material);
dedx1.push_back(dedxtot);
dedx2.push_back(dedxtot/density);
//print stopping power
G4cout << "\n \n restricted dE/dx : ";
for (size_t j=0; j<sigma1.size();j++) {
G4cout << "\t" << std::setw(13) << G4BestUnit(dedx1[j],"Energy/Length");
}
G4cout << "\n (MeV/g/cm2) : ";
for (size_t j=0; j<sigma2.size();j++) {
G4cout << "\t" << std::setw(13) << G4BestUnit(dedx2[j],"Energy*Surface/Mass");
}
//get range from restricted dedx
G4double range1 = emCal.GetRangeFromRestricteDEDX(energy,particle,material);
G4double range2 = range1*density;
//get range from full dedx
G4double Range1 = emCal.GetCSDARange(energy,particle,material);
G4double Range2 = Range1*density;
//print range
G4cout << "\n \n range from restrict dE/dx: "
<< "\t" << std::setw(8) << G4BestUnit(range1,"Length")
<< " (" << std::setw(8) << G4BestUnit(range2,"Mass/Surface") << ")";
G4cout << "\n range from full dE/dx : "
<< "\t" << std::setw(8) << G4BestUnit(Range1,"Length")
<< " (" << std::setw(8) << G4BestUnit(Range2,"Mass/Surface") << ")";
//get transport mean free path (for multiple scattering)
G4double MSmfp1 = emCal.GetMeanFreePath(energy,particle,"msc",material);
G4double MSmfp2 = MSmfp1*density;
//print transport mean free path
G4cout << "\n \n transport mean free path : "
<< "\t" << std::setw(8) << G4BestUnit(MSmfp1,"Length")
<< " (" << std::setw(8) << G4BestUnit(MSmfp2,"Mass/Surface") << ")";
if (particle == G4Electron::Electron()) CriticalEnergy();
G4cout << "\n-------------------------------------------------------------\n";
G4cout << G4endl;
// reset default precision
G4cout.precision(prec);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::EndOfRunAction(const G4Run* )
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4ProductionCutsTable.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::GetCuts()
{
G4ProductionCutsTable* theCoupleTable =
G4ProductionCutsTable::GetProductionCutsTable();
size_t numOfCouples = theCoupleTable->GetTableSize();
const G4MaterialCutsCouple* couple = 0;
G4int index = 0;
for (size_t i=0; i<numOfCouples; i++) {
couple = theCoupleTable->GetMaterialCutsCouple(i);
if (couple->GetMaterial() == detector->GetMaterial()) {index = i; break;}
}
rangeCut[0] =
(*(theCoupleTable->GetRangeCutsVector(idxG4GammaCut)))[index];
rangeCut[1] =
(*(theCoupleTable->GetRangeCutsVector(idxG4ElectronCut)))[index];
rangeCut[2] =
(*(theCoupleTable->GetRangeCutsVector(idxG4PositronCut)))[index];
energyCut[0] =
(*(theCoupleTable->GetEnergyCutsVector(idxG4GammaCut)))[index];
energyCut[1] =
(*(theCoupleTable->GetEnergyCutsVector(idxG4ElectronCut)))[index];
energyCut[2] =
(*(theCoupleTable->GetEnergyCutsVector(idxG4PositronCut)))[index];
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::CriticalEnergy()
{
// compute e- critical energy (Rossi definition) and Moliere radius.
// Review of Particle Physics - Eur. Phys. J. C3 (1998) page 147
//
G4EmCalculator emCal;
const G4Material* material = detector->GetMaterial();
const G4double radl = material->GetRadlen();
G4double ekin = 5*MeV;
G4double deioni;
G4double err = 1., errmax = 0.001;
G4int iter = 0 , itermax = 10;
while (err > errmax && iter < itermax) {
iter++;
deioni = radl*
emCal.ComputeDEDX(ekin,G4Electron::Electron(),"eIoni",material);
err = std::abs(deioni - ekin)/ekin;
ekin = deioni;
}
G4cout << "\n \n critical energy (Rossi) : "
<< "\t" << std::setw(8) << G4BestUnit(ekin,"Energy");
//Pdg formula (only for single material)
G4double pdga[2] = { 610*MeV, 710*MeV };
G4double pdgb[2] = { 1.24, 0.92 };
G4double EcPdg = 0.;
if (material->GetNumberOfElements() == 1) {
G4int istat = 0;
if (material->GetState() == kStateGas) istat = 1;
G4double Zeff = material->GetZ() + pdgb[istat];
EcPdg = pdga[istat]/Zeff;
G4cout << "\t\t\t (from Pdg formula : "
<< std::setw(8) << G4BestUnit(EcPdg,"Energy") << ")";
}
const G4double Es = 21.2052*MeV;
G4double rMolier1 = Es/ekin, rMolier2 = rMolier1*radl;
G4cout << "\n Moliere radius : "
<< "\t" << std::setw(8) << rMolier1 << " X0 "
<< "= " << std::setw(8) << G4BestUnit(rMolier2,"Length");
if (material->GetNumberOfElements() == 1) {
G4double rMPdg = radl*Es/EcPdg;
G4cout << "\t (from Pdg formula : "
<< std::setw(8) << G4BestUnit(rMPdg,"Length") << ")";
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,69 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RunAction.hh,v 1.1 2007/06/21 15:18:32 jjacquem Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef RunAction_h
#define RunAction_h 1
#include "G4UserRunAction.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4Run;
class DetectorConstruction;
class PrimaryGeneratorAction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class RunAction : public G4UserRunAction
{
public:
RunAction(DetectorConstruction*, PrimaryGeneratorAction*);
~RunAction();
public:
void BeginOfRunAction(const G4Run*);
void EndOfRunAction(const G4Run*);
void GetCuts();
void CriticalEnergy();
private:
DetectorConstruction* detector;
PrimaryGeneratorAction* primary;
G4double rangeCut[3];
G4double energyCut[3];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,116 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: pyTestEm0.cc,v 1.2 2007/07/06 06:41:59 kmura Exp $
// $Name: geant4-09-01 $
// ====================================================================
// pyTestEm0.cc
//
// python wrapper for user application
// 2007 Q
// ====================================================================
#include "DetectorConstruction.hh"
#include "RunAction.hh"
#include "PhysicsList.hh"
#include "PrimaryGeneratorAction.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ParticleTable.hh"
#include <boost/python.hpp>
#include <boost/python/list.hpp>
#include <vector>
#include <string>
using namespace boost::python;
// ========================================================================================
// Wrap Gean4 methods which are not accessible from python because they return a pointer.
// ========================================================================================
boost::python::list getParticleTable()
{
// Create a list on heap which will be return to python
boost::python::list *particleList = new boost::python::list();
// Get particle list fron G4ParticleTable
G4ParticleTable *g4ParticleList = G4ParticleTable::GetParticleTable();
// Fill python list from g4ParticleList
for ( int index = 0 ; index <= g4ParticleList->size() ; index++ ) {
particleList->append ( (std::string) g4ParticleList->GetParticleName(index) );
}
return *particleList;
}
// ====================================================================
boost::python::list getMaterialTable()
{
// Create a list on heap which will be return to python
boost::python::list *materialTableList = new boost::python::list();
// Get material list fron G4Material
G4MaterialTable materialList = *G4Material::GetMaterialTable();
std::vector<G4Material*>::iterator itVectorData;
for(itVectorData = materialList.begin(); itVectorData != materialList.end(); itVectorData++) {
materialTableList->append ( (std::string)(*(itVectorData))->GetName()) ;
}
return *materialTableList;
}
// ====================================================================
// Expose to Python
// ====================================================================
BOOST_PYTHON_MODULE(TestEm0) {
def ("getMaterialTable", getMaterialTable);
def ("getParticleTable", getParticleTable);
class_<DetectorConstruction, DetectorConstruction*,
bases<G4VUserDetectorConstruction> >
("DetectorConstruction", "testEm0 detector")
.def("SetMaterial",&DetectorConstruction::SetMaterial)
;
class_<PrimaryGeneratorAction, PrimaryGeneratorAction*,
bases<G4VUserPrimaryGeneratorAction> >
("PrimaryGeneratorAction", init<DetectorConstruction*>())
;
class_<RunAction, RunAction*,
bases<G4UserRunAction> >
("RunAction", init<DetectorConstruction*, PrimaryGeneratorAction*>())
;
class_<PhysicsList, PhysicsList*,
bases<G4VUserPhysicsList> >
("PhysicsList", "testEm0 physics list")
;
}
+191
View File
@@ -0,0 +1,191 @@
#!/usr/bin/python
# ==================================================================
# python script for TestEm0 python version
#
# ==================================================================
import Geant4 as g4
import TestEm0
# ==================================================================
# user actions in python
# ==================================================================
# ==================================================================
# main
# ==================================================================
myDC= TestEm0.DetectorConstruction()
g4.gRunManager.SetUserInitialization(myDC)
myPL= TestEm0.PhysicsList()
g4.gRunManager.SetUserInitialization(myPL)
# set user actions...
myPGA= TestEm0.PrimaryGeneratorAction(myDC)
g4.gRunManager.SetUserAction(myPGA)
myRA= TestEm0.RunAction(myDC,myPGA)
# set user action classes
g4.gRunManager.SetUserAction(myRA)
g4.gRunManager.Initialize()
pg = g4.G4ParticleGun()
materialList = TestEm0.getMaterialTable();
particleList = TestEm0.getParticleTable()
enrgyList = ["eV","keV","MeV","GeV","TeV","PeV"]
cutsList = ["um", "mm" , "cm", "m", "km"]
# GUI
from Tkinter import *
class App(Frame):
def init(self):
# title and header
title = Label(self, text="TestEm0 empowered by Geant4Py\n\n\n")
title.grid(row=0, column=1, columnspan = 4)
# particle list box
particle_title = Label(self, text="Particle")
particle_title.grid(row=2, column=0)
particleFrame = Frame(self)
scrollbar2 = Scrollbar(particleFrame)
scrollbar2.pack(side = RIGHT, fill = Y)
self.particleListBox = Listbox(particleFrame, yscrollcommand=scrollbar2.set, exportselection=FALSE,height = 6)
self.particleListBox.pack(side = LEFT)
for item in particleList:
self.particleListBox.insert(END, item)
scrollbar2.config(command=self.particleListBox.yview)
particleFrame.grid(row=3, column=0)
self.particleListBox.select_set(0)
# separator frame
fblank = Frame(self,width = 40)
fblank.grid(row=3,column=1)
# material list box
detmaterial_title = Label(self, text="Material")
detmaterial_title.grid(row=2, column=2)
materialFrame = Frame(self)
scrollbar = Scrollbar(materialFrame)
scrollbar.pack(side = RIGHT, fill = Y)
self.materialListBox = Listbox(materialFrame, yscrollcommand=scrollbar.set, exportselection=FALSE, height = 6)
self.materialListBox.pack(side = LEFT, fill = Y)
for item in materialList:
self.materialListBox.insert(END, item)
scrollbar.config(command=self.materialListBox.yview)
materialFrame.grid(row=3, column=2)
self.materialListBox.select_set(0)
# separator frame
fblank = Frame(self,width = 40)
fblank.grid(row=3,column=3)
# energy
fEnergy = Frame(self)
energyLabel = Label(self, text="Energy")
energyLabel.grid(row = 2, column = 4)
scrollbarEnergy = Scrollbar(fEnergy)
scrollbarEnergy.pack(side = RIGHT, fill = Y)
self.energyEntry = Entry(fEnergy, width= 8 );
self.energyEntry.pack(side = TOP)
self.energyEntry.insert(0, "1.0")
self.energyListBox = Listbox(fEnergy, yscrollcommand=scrollbarEnergy.set,exportselection=FALSE,width=8,height = 5)
self.energyListBox.pack(side = BOTTOM )
for item in enrgyList:
self.energyListBox.insert(END, item)
scrollbarEnergy.config(command=self.energyListBox.yview)
fEnergy.grid(row = 3, column = 4 )
self.energyListBox.select_set(0)
# separator frame
fblank = Frame(self,width = 40)
fblank.grid(row=3,column=5)
# cuts
fCuts = Frame(self)
cutsLabel = Label(self, text="Cuts", width= 8)
cutsLabel.grid(row = 2, column = 6)
scrollbarCuts = Scrollbar(fCuts)
scrollbarCuts.pack(side = RIGHT, fill = Y)
self.cutsEntry = Entry(fCuts, width= 8);
self.cutsEntry.pack(side = TOP)
self.cutsEntry.insert(0, "1.0")
self.cutsListBox = Listbox(fCuts, width= 8 ,yscrollcommand=scrollbarCuts.set,exportselection=FALSE,height = 5)
self.cutsListBox.pack(side = BOTTOM )
for item in cutsList:
self.cutsListBox.insert(END, item)
scrollbarCuts.config(command=self.cutsListBox.yview)
fCuts.grid(row = 3, column = 6 )
self.cutsListBox.select_set(0)
# separator frame
fblank = Frame(self,height = 40)
fblank.grid(row=4,column=0)
# start a run button
startBut = Button(self, bg="green", text="Start a run", command=self.cmd_beamOn)
startBut.grid(row=5, column=2, sticky=W)
# exit button
exitBut = Button(self, bg="grey", text="Exit", command=self.quit)
exitBut.grid(row=5, column=6, sticky=E)
def __init__(self, master=None):
Frame.__init__(self, master)
self.init()
self.grid()
def cmd_beamOn(self):
# get and set particle
if self.particleListBox.curselection():
index =int(self.particleListBox.curselection()[0])
g4.gApplyUICommand("/gun/particle " + particleList[index])
# get and set detector Material
if self.materialListBox.curselection():
index =int(self.materialListBox.curselection()[0])
g4.gApplyUICommand("/testem/det/setMat " + materialList[index])
# get and set energy
energy = self.energyEntry.get()
if self.energyListBox.curselection():
index = int(self.energyListBox.curselection()[0])
unity = enrgyList[index]
g4.gApplyUICommand("/gun/energy " + energy + " " + unity)
# get and set cuts
cuts = self.cutsEntry.get()
if self.cutsListBox.curselection():
index = int(self.cutsListBox.curselection()[0])
unity = cutsList[index]
g4.gApplyUICommand("/testem/phys/setCuts " + cuts + " " + unity)
# run beamOn
g4.gRunManager.BeamOn(1)
app = App()
app.mainloop()
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.1 2006/05/11 04:35:32 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyDetectorConstruction.cc,v 1.3 2006/06/29 15:28:11 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// MyDetectorConstruction.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyDetectorConstruction.hh,v 1.3 2006/06/29 15:28:13 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// MyDetectorConstruction.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyMaterials.cc,v 1.3 2006/06/29 15:28:16 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// MyMaterials.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyMaterials.hh,v 1.3 2006/06/29 15:28:19 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// MyMaterials.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyPhysicsList.cc,v 1.3 2006/06/29 15:28:21 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// MyPhysicsList.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: MyPhysicsList.hh,v 1.3 2006/06/29 15:28:23 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// MyPhysicsList.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: Particles.cc,v 1.3 2006/06/29 15:28:25 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// Particles.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: PhysicsListEMstd.cc,v 1.3 2006/06/29 15:28:29 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// PhysicsListEMstd.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pydemo_wp.cc,v 1.3 2006/06/29 15:28:40 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// pydemo_wp.cc
//
@@ -0,0 +1,216 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="gdml_core.xsd"/>
<xs:include schemaLocation="gdml_define.xsd"/>
<xs:include schemaLocation="gdml_materials.xsd"/>
<xs:include schemaLocation="gdml_solids.xsd"/>
<xs:include schemaLocation="gdml_replicas.xsd"/>
<xs:include schemaLocation="gdml_parameterised.xsd"/>
<xs:include schemaLocation="gdml_extensions.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType abstract="true" name="IdentifiableVolumeType">
<xs:attribute name="name" type="xs:ID" use="required"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="SinglePlacementType">
<xs:annotation>
<xs:documentation>Represents a single unique copy a of an associated logical volume
in geometrical hierarchy</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice minOccurs="1">
<xs:element name="file" type="FileReferenceType"/>
<xs:element name="volumeref" type="ReferenceType"/>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="position" type="positionType"/>
<xs:element name="positionref" type="ReferenceType"/>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="rotation" type="rotationType"/>
<xs:element name="rotationref" type="ReferenceType"/>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="scale" type="scaleType"/>
<xs:element name="scaleref" type="ReferenceType"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:ID"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="DivisionPlacementType">
<xs:annotation>
<xs:documentation>Represents a division of the associated logical volume
in geometrical hierarchy</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="volumeref" type="ReferenceType"/>
</xs:sequence>
<xs:attribute name="axis" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="number" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="width" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="offset" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="mm" name="unit" type="xs:string"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="VolumeType">
<xs:annotation>
<xs:documentation>Represents a top of a geometrical sub-hierarchy not placed in space
None of its children can coincide with its boundary defined by an associated solid
Two different placements of the same logical volume represent two different geometrical
hierarchies in space</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="IdentifiableVolumeType">
<xs:sequence>
<xs:element name="materialref" type="ReferenceType"/>
<xs:element name="solidref" type="ReferenceType"/>
<xs:choice minOccurs="0">
<xs:element maxOccurs="unbounded" name="physvol" type="SinglePlacementType"/>
<xs:element maxOccurs="1" minOccurs="1" name="divisionvol" type="DivisionPlacementType"/>
<xs:element maxOccurs="1" minOccurs="1" ref="replicavol"/>
<xs:element maxOccurs="1" minOccurs="1" name="paramvol" type="ParameterisedPlacementType"/>
</xs:choice>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
<xs:element name="auxiliary" maxOccurs="unbounded" minOccurs="0" type="AuxiliaryType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="AssemblyVolumeType">
<xs:annotation>
<xs:documentation>Allows to create a group of volumes bound together without a boundary
All the volumes exits inside the same virtual reference system of the assmebly volume
they belong to
When assembly volume is placed all its children follow the global transformation applied
to their assembly volume
After the assembly volume is placed its children exist as standalone placements in space
independent of each other</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="IdentifiableVolumeType">
<xs:choice>
<xs:element maxOccurs="unbounded" name="physvol" type="SinglePlacementType"/>
<xs:element maxOccurs="1" minOccurs="1" ref="replicavol"/>
<xs:element maxOccurs="1" minOccurs="1" name="paramvol" type="ParameterisedPlacementType"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="LogicalSurfaceType">
<xs:annotation>
<xs:documentation>Base type for logical surfaces (for the moment only optical)
</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
<xs:attribute name="surfaceproperty" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element abstract="true" name="Surface" type="LogicalSurfaceType">
<xs:annotation>
<xs:documentation>Abstract element for all solids substitution group</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="bordersurface" substitutionGroup="Surface">
<xs:annotation>
<xs:documentation>Surface between two physical volumes</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="LogicalSurfaceType">
<xs:sequence>
<xs:element name="physvolref" type="ReferenceType"/>
<xs:element name="physvolref" type="ReferenceType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="skinsurface" substitutionGroup="Surface">
<xs:annotation>
<xs:documentation>Surface between two physical volumes</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="LogicalSurfaceType">
<xs:sequence>
<xs:element name="volumeref" type="ReferenceType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="structure">
<xs:annotation>
<xs:documentation>Definitions of a geometrical hierarchy of a set of volumes</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="volume" type="VolumeType"/>
<xs:element name="assembly" type="AssemblyVolumeType"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
<xs:element ref="ParameterisationAlgorithm"/>
</xs:choice>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Surface"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="gdml">
<xs:complexType>
<xs:sequence>
<xs:element ref="define"/>
<xs:element ref="materials"/>
<xs:element ref="solids"/>
<xs:element ref="structure"/>
<xs:element maxOccurs="unbounded" name="setup">
<xs:annotation>
<xs:documentation>Geometry setup representing the particular geometry hierarchy by refferring to
a given volume which becomes the top level volume</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="world" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to the previously defined volume
in the structure block chosen by this setup
World volumme can't be an assembly volume</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:ID" use="required"/>
<xs:attribute name="version" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute fixed="2.10.0" name="version" type="xs:string">
<xs:annotation>
<xs:documentation>The GDML Schema version consists of 3 digits X.Y.Z
where these mean:
X - major number, increased when major new
features or backward incompatible bug fixes
are added and means the GDML Processor is
allowed to refuse processing of such a
document if this is using the more recent
version of the GDML Schema then GDML Processor
understands
Y - minor number, increased when incremental and
backward compatible changes or improvements
are made into the GDML Schema. GDML Processor
should be able to process such a document
using higher minor version number then that of
the GDML Processor
Z - bugfix revision number, increased when fully
backward compatible changes which resolve a
problem in GDML Schema are applied</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
@@ -0,0 +1,199 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xs:schema []>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:simpleType name="InlineExpressionType">
<xs:restriction base="xs:string"></xs:restriction>
</xs:simpleType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:simpleType name="ExpressionOrIDREFType">
<xs:union memberTypes="xs:IDREF InlineExpressionType xs:double "></xs:union>
</xs:simpleType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableExpressionType">
<xs:simpleContent>
<xs:extension base="InlineExpressionType">
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!--
<xs:complexType name="ExpressionType" mixed="true">
<xs:annotation>
<xs:documentation>
A base type for expressions
</xs:documentation>
</xs:annotation>
</xs:complexType>
-->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!--
<xs:complexType name="IdentifiableExpressionType" mixed="true">
<xs:annotation>
<xs:documentation>
Named (referenced), global scope,
expression (may contain named constants and quantities)
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ExpressionType">
<xs:attribute name="name" type="xs:ID" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
-->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ConstantType">
<xs:annotation>
<xs:documentation>An anonymous, local scope, value</xs:documentation>
</xs:annotation>
<xs:attribute name="value" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="VariableType">
<xs:annotation>
<xs:documentation>An anonymous, local scope, value</xs:documentation>
</xs:annotation>
<xs:attribute name="value" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableConstantType">
<xs:annotation>
<xs:documentation>Named (referenced), global scope, constant value</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ConstantType">
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableVariableType">
<xs:annotation>
<xs:documentation>Named (referenced), local scope, variable value</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="VariableType">
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="QuantityType">
<xs:annotation>
<xs:documentation>An anonymous quantity, local scope, with a unit,
(possibly of a given type) quantity</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ConstantType">
<!-- The unit attribute was originally required,
but set to optional and is recommended to provide
a default value in its derived type
-->
<xs:attribute name="unit" type="xs:string" use="optional"></xs:attribute>
<xs:attribute name="type" type="xs:string" use="optional"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableQuantityType">
<xs:annotation>
<xs:documentation>Named (referenced), global scope,(possibly of a given type) quantity</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="QuantityType">
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ThreeVectorType">
<xs:annotation>
<xs:documentation>An anonymous, 3 dimensional, local scope, vector of doubles</xs:documentation>
</xs:annotation>
<xs:attribute default="0.0" name="x" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="y" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="z" type="ExpressionOrIDREFType"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MatrixType">
<xs:annotation>
<xs:documentation>A bi-dimensional matrix of doubles</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:ID"></xs:attribute>
<xs:attribute name="coldim" type="xs:nonNegativeInteger"></xs:attribute>
<xs:attribute name="values" type="xs:string"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableThreeVectorType">
<xs:annotation>
<xs:documentation>Named (referenced), 3 dimensional, global scope, vector of doubles</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ThreeVectorType">
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="QuantityVectorType">
<xs:annotation>
<xs:documentation>An anonymous, 3 dimensional, local scope, with a unit,
(possibly of a given type) quantity vector</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ThreeVectorType">
<!-- The unit attribute was originally required,
but set to optional and is recommended to provide
a default value in its derived type
-->
<xs:attribute name="unit" type="xs:string" use="optional"></xs:attribute>
<xs:attribute name="type" type="xs:string" use="optional"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableQuantityVectorType">
<xs:annotation>
<xs:documentation>Named (referenced), 3 dimensional, global scope, with a unit,
(possibly of a given type) quantity vector</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="QuantityVectorType">
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ReferenceType">
<xs:annotation>
<xs:documentation>Local reference to an element of a named type</xs:documentation>
</xs:annotation>
<xs:attribute name="ref" type="xs:IDREF" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="FileReferenceType">
<xs:annotation>
<xs:documentation>Reference to an external file containing sub-volume information</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:anyURI" use="required"></xs:attribute>
<xs:attribute name="volname" type="xs:string" use="optional"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ReferenceListType">
<xs:annotation>
<xs:documentation>List of local references to a set of element of a named type</xs:documentation>
</xs:annotation>
<xs:attribute name="refs" type="xs:IDREFS" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="AuxiliaryType">
<xs:annotation>
<xs:documentation>Auxiliary information like sensitive detector declaration, etc.</xs:documentation>
</xs:annotation>
<xs:attribute name="auxtype" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="auxvalue" type="xs:string" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>
@@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xs:schema>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="gdml_core.xsd"/>
<xs:include schemaLocation="gdml_extensions.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="define" type="defineType">
<xs:annotation>
<xs:documentation>Definition block of global named constants, quantitties, expressions,
positions and rotations which may be used by name or
by a reference in scope of the current document</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="defineType">
<xs:annotation>
<xs:documentation>The global complex type is defined in order to reuse this defintion
in derived schemas</xs:documentation>
</xs:annotation>
<!-- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -->
<xs:choice maxOccurs="unbounded">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="constant" type="IdentifiableConstantType">
<xs:annotation>
<xs:documentation>Named constant</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="variable" type="IdentifiableVariableType">
<xs:annotation>
<xs:documentation>Named variable</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="matrix" type="MatrixType">
<xs:annotation>
<xs:documentation>Named matrix</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="quantity" type="IdentifiableQuantityType">
<xs:annotation>
<xs:documentation>Named quantity</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="expression" type="IdentifiableExpressionType">
<xs:annotation>
<xs:documentation>Named expression, may contain other named constants,
quantities and expressions</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="position" type="positionType">
<xs:annotation>
<xs:documentation>Named cartesian position, default unit mm</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="rotation" type="rotationType">
<xs:annotation>
<xs:documentation>Named cartesian rotation, default unit radian</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element maxOccurs="unbounded" minOccurs="0" name="scale" type="scaleType">
<xs:annotation>
<xs:documentation>Named cartesian rotation, default unit radian</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:choice>
<!-- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -->
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="positionType">
<xs:complexContent>
<xs:restriction base="IdentifiableQuantityVectorType">
<xs:attribute default="mm" type="xs:string" name="unit"/>
<xs:attribute default="cartesian" type="xs:string" name="type"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="rotationType">
<xs:complexContent>
<xs:restriction base="IdentifiableQuantityVectorType">
<xs:attribute default="radian" type="xs:string" name="unit"/>
<xs:attribute default="cartesian" type="xs:string" name="type"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="scaleType">
<xs:complexContent>
<xs:restriction base="IdentifiableQuantityVectorType">
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="loop">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element maxOccurs="unbounded" ref="Solid"/>
<xs:element name="volume" type="VolumeType"/>
<xs:element name="physvol" type="SinglePlacementType"/>
</xs:choice>
<xs:attribute name="for" type="xs:string">
<xs:annotation>
<xs:documentation>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="from" type="xs:nonNegativeInteger">
<xs:annotation>
<xs:documentation>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="to" type="xs:positiveInteger">
<xs:annotation>
<xs:documentation>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="step" type="xs:positiveInteger">
<xs:annotation>
<xs:documentation>
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
@@ -0,0 +1,390 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xs:schema []>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="0.1" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:include schemaLocation="gdml_core.xsd"></xs:include>
<xs:include schemaLocation="gdml_define.xsd"></xs:include>
<xs:include schemaLocation="gdml_extensions.xsd"/>
<!-- Removed abstract="true" in AtomType -->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="AtomType">
<xs:annotation>
<xs:documentation>Atomic mass, quantity type A, default unit g/mole</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute default="g/mole" type="xs:string" name="unit"></xs:attribute>
<xs:attribute fixed="A" type="xs:string" name="type"></xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="DensityType">
<xs:annotation>
<xs:documentation>Density</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute default="g/cm3" type="xs:string" name="unit"></xs:attribute>
<xs:attribute fixed="density" type="xs:string" name="type"></xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:group name="MaterialPropertiesGroup">
<xs:annotation>
<xs:documentation>General material properties</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element maxOccurs="unbounded" name="property">
<xs:annotation>
<xs:documentation>General material property (const or vector)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="ReferenceType">
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="RL">
<xs:annotation>
<xs:documentation>Radiation length</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute default="cm" type="xs:string" name="unit"></xs:attribute>
<xs:attribute fixed="X0" type="xs:string" name="type"></xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="RLref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to a previsouly defined named radiation length quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="AL">
<xs:annotation>
<xs:documentation>Absorption length</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute default="cm" type="xs:string" name="unit"></xs:attribute>
<xs:attribute fixed="lambda" type="xs:string" name="type"></xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="ALref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to a previsouly defined named absorption length quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="T">
<xs:annotation>
<xs:documentation>Temperature</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute default="K" type="xs:string" name="unit"></xs:attribute>
<xs:attribute fixed="temperature" type="xs:string" name="type"></xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Tref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to previously defined named temperature quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="P">
<xs:annotation>
<xs:documentation>Pressure</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute default="pascal" type="xs:string" name="unit"></xs:attribute>
<xs:attribute fixed="pressure" type="xs:string" name="type"></xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Pref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to previously defined named pressure quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:group>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:attributeGroup name="MaterialAttributeGroup">
<xs:annotation>
<xs:documentation>General material attributes</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:ID" use="required">
<xs:annotation>
<xs:documentation>Material name</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="formula" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Material chemical formula</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute default="unknown" name="state">
<xs:annotation>
<xs:documentation>Material physical state</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="gas"></xs:enumeration>
<xs:enumeration value="liquid"></xs:enumeration>
<xs:enumeration value="solid"></xs:enumeration>
<xs:enumeration value="unknown"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MaterialType">
<xs:annotation>
<xs:documentation>Base type for materials</xs:documentation>
</xs:annotation>
<xs:group ref="MaterialPropertiesGroup"></xs:group>
<xs:attributeGroup ref="MaterialAttributeGroup"></xs:attributeGroup>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!--
<xs:complexType name="ComplexMaterialType">
<xs:annotation>
<xs:documentation>
Base type for complex materials
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="MaterialType">
-->
<!-- <xs:group ref="MaterialPropertiesGroup"/> -->
<!--
Removed from referenced attribute group
<xs:attribute name="N" use="prohibited"/>
-->
<!--
<xs:attribute name="Z" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>Atomic number</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
-->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="materials">
<xs:annotation>
<xs:documentation>Materials description</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
<xs:element minOccurs="0" name="define" type="defineType">
<xs:annotation>
<xs:documentation>Material related definitons of constants and quantities
In this version of schema these become visible in global scope</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="isotope" type="MaterialIsotopeType">
<xs:annotation>
<xs:documentation>An isotope</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="element" type="MaterialElementType">
<xs:annotation>
<xs:documentation>A simple element or an element composed of isotopes</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="material" type="MaterialMixtureType">
<xs:annotation>
<xs:documentation>A composite or a mixture complex material</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MaterialIsotopeType">
<xs:annotation>
<xs:documentation>Exported isotope type</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="MaterialType">
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="D" type="DensityType">
<xs:annotation>
<xs:documentation>Density quantity value</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Dref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to a previsouly defined named density quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:element name="atom" type="AtomType"></xs:element>
</xs:sequence>
<xs:attribute name="N" type="xs:positiveInteger" use="required">
<xs:annotation>
<xs:documentation>Number of nucleons</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Z" type="xs:double" use="required">
<xs:annotation>
<xs:documentation>Atomic number</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MaterialElementType">
<xs:annotation>
<xs:documentation>Exported material element type</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="MaterialType">
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="D" type="DensityType">
<xs:annotation>
<xs:documentation>Density quantity value</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Dref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to a previsouly defined named density quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice>
<xs:annotation>
<xs:documentation>An element can be defined either as a simple element or by a set
of isotopes fractions</xs:documentation>
</xs:annotation>
<xs:element name="atom" type="AtomType"></xs:element>
<xs:element maxOccurs="unbounded" name="fraction">
<xs:annotation>
<xs:documentation>An isotope fraction of an element where n is the actual amount
of the isotope in the element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="ReferenceType">
<xs:attribute name="n" type="xs:double" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="N" type="xs:positiveInteger" use="optional">
<xs:annotation>
<xs:documentation>Number of nucleons</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Z" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>Atomic number</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MaterialMixtureType">
<xs:annotation>
<xs:documentation>Exported material composite or mixture type</xs:documentation>
</xs:annotation>
<xs:complexContent>
<!-- <xs:extension base="ComplexMaterialType"> -->
<xs:extension base="MaterialType">
<xs:sequence>
<xs:choice>
<xs:element name="D" type="DensityType">
<xs:annotation>
<xs:documentation>Density quantity value</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Dref" type="ReferenceType">
<xs:annotation>
<xs:documentation>A reference to a previsouly defined named density quantity value</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice>
<xs:annotation>
<xs:documentation>A complex material can be defined as a simple mixture when
its material properties are known or as a composite material
or a mixture. A composite material is defined by a set of elements
by specifying the number of atoms.
The second way is by a set of material fractions where the fractions
can be either simple elements or other complex materials.
The restriction is that one can't mix composition by atoms and fractions
at the same time.</xs:documentation>
</xs:annotation>
<xs:element name="atom" type="AtomType"></xs:element>
<xs:element maxOccurs="unbounded" name="composite">
<xs:annotation>
<xs:documentation>Elements of this composite material specified as a set of local references
to already defined simple elements where value of n in each means the number of atoms</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="ReferenceType">
<xs:attribute name="n" type="xs:positiveInteger" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element maxOccurs="unbounded" name="fraction">
<xs:annotation>
<xs:documentation>Fractions of this mixture specified as a set of local references to already defined
elements or other mixtures where value of n in each means the fraction of the whole
material in the range 0.0 &lt; n &lt; 1.0</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="ReferenceType">
<xs:attribute name="n" type="xs:double" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="Z" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>Atomic number</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>
@@ -0,0 +1,104 @@
<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="gdml_define.xsd"/>
<xs:include schemaLocation="gdml_extensions.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType abstract="false" name="DimensionsType">
<xs:annotation>
<xs:documentation>Abstract base for parametrised dimensions</xs:documentation>
</xs:annotation>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="Dimensions" abstract="true" type="DimensionsType">
<xs:annotation>
<xs:documentation>Abstract element for substitution group</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="BoxDimensionsType">
<xs:annotation>
<xs:documentation>Dimensions for parametrised boxes. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="DimensionsType">
<xs:attribute default="1.0" name="x" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="y" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="z" type="ExpressionOrIDREFType"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="box_dimensions" substitutionGroup="Dimensions" type="BoxDimensionsType"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="TubeDimensionsType">
<xs:annotation>
<xs:documentation>Dimensions for parametrised boxes. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="DimensionsType">
<xs:attribute default="1.0" name="DeltaPhi" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="InR" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="OutR" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="StartPhi" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="hz" type="ExpressionOrIDREFType"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="tube_dimensions" substitutionGroup="Dimensions" type="TubeDimensionsType"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType abstract="false" name="ParameterisationAlgorithmType">
<xs:annotation>
<xs:documentation>Abstract base for parameterised placement strategies</xs:documentation>
</xs:annotation>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="ParameterisationAlgorithm" abstract="true" type="ParameterisationAlgorithmType">
<xs:annotation>
<xs:documentation>Abstract element for substitution group</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="PositionSizeParameterisationAlgorithmType">
<xs:annotation>
<xs:documentation>Parameterised volumes get created using
the tabularized position and sizes. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ParameterisationAlgorithmType">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="parameters" type="ParametersType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="parameterised_position_size" substitutionGroup="ParameterisationAlgorithm" type="PositionSizeParameterisationAlgorithmType"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ParameterisedPlacementType">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:annotation>
<xs:documentation>Base type for parameterised volumes</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="volumeref" type="ReferenceType"></xs:element>
<xs:element ref="ParameterisationAlgorithm"/>
</xs:sequence>
<xs:attribute name="ncopies" type="xs:positiveInteger" use="required"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="paramvol" type="ParameterisedPlacementType"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ParametersType">
<xs:annotation>
<xs:documentation>
Holds parameteres for parameterised volumes.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element type="positionType" name="position"/>
<xs:element ref="Dimensions"/>
</xs:sequence>
<xs:attribute type="xs:positiveInteger" use="required" name="number"/>
</xs:complexType>
</xs:schema>
@@ -0,0 +1,80 @@
<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="gdml_define.xsd"/>
<xs:include schemaLocation="gdml_extensions.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType abstract="false" name="ReplicationAlgorithmType">
<xs:annotation>
<xs:documentation>Abstract base for replication placement strategies</xs:documentation>
</xs:annotation>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="ReplicationAlgorithm" abstract="true" type="ReplicationAlgorithmType">
<xs:annotation>
<xs:documentation>Abstract element for substitution group</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="AxisReplicationAlgorithmType">
<xs:annotation>
<xs:documentation>Replica volumes get created along the specified direction
starting with the first replica placed at the given position and rotated
according to the given rotation and others placed using the given distance;
If position and/or rotation is omitted the defaults will be applied, e.g.
position at the mother volume center and identity rotation;
NOTE: THE ROTATION IS APPLIED TO ALL REPLICATED VOLUMES!</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ReplicationAlgorithmType">
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="position" type="positionType"/>
<xs:element name="positionref" type="ReferenceType"/>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="rotation" type="rotationType"/>
<xs:element name="rotationref" type="ReferenceType"/>
</xs:choice>
<xs:choice>
<xs:element ref="direction"/>
<xs:element name="directionref" type="ReferenceType"/>
</xs:choice>
<xs:element ref="width"/>
<xs:element ref="offset"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="replicate_along_axis" substitutionGroup="ReplicationAlgorithm" type="AxisReplicationAlgorithmType"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ReplicaPlacementType">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:annotation>
<xs:documentation>Base type for replicated volumes</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="volumeref" type="ReferenceType"></xs:element>
<xs:element ref="ReplicationAlgorithm"/>
</xs:sequence>
<xs:attribute name="number" type="xs:positiveInteger" use="required"/>
<xs:attribute name="copy_num_start" type="xs:positiveInteger" use="optional" default="1"/>
<xs:attribute name="copy_num_step" type="xs:positiveInteger" use="optional" default="1"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="directionType">
<xs:complexContent>
<xs:restriction base="QuantityVectorType">
<xs:attribute default="mm" type="xs:string" name="unit"/>
<xs:attribute default="cartesian" type="xs:string" name="type"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="direction" type="directionType"/>
<xs:element name="width" type="QuantityType"/>
<xs:element name="offset" type="QuantityType"/>
<xs:element name="replicavol" type="ReplicaPlacementType"/>
</xs:schema>
@@ -0,0 +1,833 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xs:schema>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="gdml_core.xsd"></xs:include>
<xs:include schemaLocation="gdml_define.xsd"></xs:include>
<xs:include schemaLocation="gdml_extensions.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="SolidType">
<xs:annotation>
<xs:documentation>Base solid type</xs:documentation>
</xs:annotation>
<xs:attribute default="mm" name="lunit" type="xs:string">
<xs:annotation>
<xs:documentation>Length unit of all dimensions used for this instance of solid</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute default="radian" name="aunit" type="xs:string">
<xs:annotation>
<xs:documentation>Angle unit of angles used in definition of this solid</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="BooleanSolidType">
<xs:annotation>
<xs:documentation>Base type for boolean solids</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:sequence>
<xs:element name="first" type="ReferenceType"></xs:element>
<xs:element name="second" type="ReferenceType"></xs:element>
<xs:choice minOccurs="0">
<xs:element name="position" type="positionType"></xs:element>
<xs:element name="positionref" type="ReferenceType"></xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="rotation" type="rotationType"></xs:element>
<xs:element name="rotationref" type="ReferenceType"></xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="firstposition" type="positionType"></xs:element>
<xs:element name="firstpositionref" type="ReferenceType"></xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="firstrotation" type="rotationType"></xs:element>
<xs:element name="firstrotationref" type="ReferenceType"></xs:element>
</xs:choice>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="reflectedSolid" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>Reflected solid:
sx, sy, sz are scale components (containing reflection),
rx, ry, rz are rotation angles around given axes and
dx, dy, dz is the translation.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="solid" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="1.0" name="sx" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="sy" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1.0" name="sz" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="rx" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="ry" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="rz" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="dx" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="dy" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="dz" type="ExpressionOrIDREFType"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="SurfacePropertyType">
<xs:annotation>
<xs:documentation>Base surface type</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
<xs:attribute name="type" type="xs:string" default="dielectric_dielectric"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element abstract="true" name="Solid" type="SolidType">
<xs:annotation>
<xs:documentation>Abstract element for all solids substitution group</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element abstract="true" name="SurfaceProperty" type="SurfacePropertyType">
<xs:annotation>
<xs:documentation>Abstract element for surfaces substitution</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="solids">
<xs:annotation>
<xs:documentation>Solids definitions block</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element minOccurs="0" name="define" type="defineType">
<xs:annotation>
<xs:documentation>Definitions of constants and expressions to be used for solids'
dimensions and transformations
In this version these become part of the global scope.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" ref="Solid"></xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="SurfaceProperty"></xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
</xs:choice>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="union" substitutionGroup="Solid" type="BooleanSolidType">
<xs:annotation>
<xs:documentation>Exported boolean union of two solids</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="subtraction" substitutionGroup="Solid" type="BooleanSolidType">
<xs:annotation>
<xs:documentation>Exported boolean subtraction of two solids</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="intersection" substitutionGroup="Solid" type="BooleanSolidType">
<xs:annotation>
<xs:documentation>Exported boolean intersectioin of two solids</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="box" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG box solid described by 3 dimensions of x, y, and z</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="twistedbox" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG twisted box solid described by 4 dimensions of
x length along x axis
y length along y axis
z length along z axis
PhiTwist twist angle </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="PhiTwist" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="twistedtrap" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>general twisted trapezoid. faces perpendicular to the z planes are trapezia, and their centres are
not necessarily on a line paralell to the z axis.
PhiTwist Twist Angle
z length along the z-axis
Theta Polar angle of the line joining the centres of the faces at -/+z
Phi Azimuthal angle of the line joing the centre of the face at -z to the centre of the face at +z
y1 length along y of the face at -z
x1 length along x of the side at y=-y1 of the face at -z
x2 length along x of the side at y=+y1 of the face at -z
y2 length along y of the face at +z
x3 length along x of the side at y=-y2 of the face at +z
x4 length along x of the side at y=+y2 of the face at +z
Alph Angle with respect to the y axis from the centre of the side </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="PhiTwist" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="Theta" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="Phi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x4" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="Alph" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="twistedtrd" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>different length axis twistable trapezoid. faces perpendicular to the z planes are trapezia, and their centres are
not necessarily on a line paralell to the z axis.
PhiTwist Twist Angle
z length along the z-axis
y1 length along y of the face at -z
x1 length along x of the side at y=-y1 of the face at -z
x2 length along x of the side at y=+y1 of the face at -z
y2 length along y of the face at +z </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="PhiTwist" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="paraboloid" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG paraboloid defined by
rlo radius at -dz
rhi radius at +dz
dz half z length
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="rlo" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="rhi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="dz" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="sphere" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG sphere or spherical shell segment solid described by
rmin inner radius
rmax outer radius
startphi starting angle of the segment in radians(0 &lt;= phi &lt;= 2*PI)
deltaphi delta angle of the segment in radians
starttheta starting angle of the segment in radians(0 &lt;= theta &lt;= PI)
deltatheta delta angle of the segment in radians
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute default="0.0" name="rmin" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="startphi" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="starttheta" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="deltatheta" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="ellipsoid" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG ellispoid or ellipsoidal shell segment solid described by
ax x semiaxis
by y semiaxis
cz z semiaxis
zcut1 bottom plane cutting ellipsoid
zcut2 top plane cutting ellispoid
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="ax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="by" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="cz" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="-1000000.0" name="zcut1" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="1000000.0" name="zcut2" type="ExpressionOrIDREFType"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="tube" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG tube or tube segement solid described by
rmin Inner radius
rmax Outer radius
z length in z
startphi The starting phi angle in radians, adjusted such that
(startphi+deltaphi &lt;= 2PI, startphi &gt; -2PI)
deltaphi Delta angle of the segment in radians</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="z" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="rmin" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="startphi" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="twistedtubs" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG twisted tube segement solid described by
twistedangle twist angle
endinnerrad inside radius at end of segment
endouterrad outside radius at end of segment
zlen z length of segment
phi phi angle of a segment </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="twistedangle" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="endinnerrad" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="endouterrad" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="zlen" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="phi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="cutTube" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG cut tube or cut tube segment solid described by
rmin Inner radius
rmax Outer radius
z length in z
startphi The starting phi angle in radians, adjusted such that (startphi+deltaphi &lt;= 2PI, startphi &gt; -2PI)
deltaphi Delta angle of the segment in radians
lowX, lowY, lowZ Normal at lower Z plane
highX, highY, highZ Normal at higher Z plane
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="z" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="rmin" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="startphi" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="lowX" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="lowY" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="lowZ" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="highX" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="highY" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="highZ" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="cone" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG cone or cone segment described by
rmin1 inside radius at z/2
rmin2 inside radius at z/2
rmax1 outside radius at z/2
rmax2 outside radius at z/2
z length in z
startphi starting angle of the segment in radians
deltaphi delta angle of the segment in radians</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="rmin1" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute default="0.0" name="rmin2" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="rmax1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="rmax2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="startphi" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="polycone" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG polycone or polycone segment described by
startphi starting angle of the segment in radians
deltaphi delta angle of the segment in radians
and a set of z-planes each described by
rmin inside radius at z/2
rmax outside radius at z/2
z length in z
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:sequence>
<xs:element name="zplane" minOccurs="1" maxOccurs="unbounded" type="ZPlaneType"/>
</xs:sequence>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="startphi" type="ExpressionOrIDREFType"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- +++++++++++++ -->
<xs:complexType name="ZPlaneType">
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute default="0.0" name="rmin" type="ExpressionOrIDREFType"></xs:attribute>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="para" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG parallelepiped solid is described by
x, y, z length in x,y,z
alpha Angle formed by the y axis and by the plane joining the centre of the faces
G4Parallel to the z-x plane at -y and +y
theta Polar angle of the line joining the centres of the faces at -z and +z in z
phi Azimuthal angle of the line joining the centres of the faces at -z and +z in z</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="alpha" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="theta" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="phi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="trd" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG trapezoid solid with varying x and y dimensions along z axis
x1 Length along x at the surface positioned at -z
x2 Length along x at the surface positioned at +z
y1 Length along y at the surface positioned at -z
y2 Length along y at the surface positioned at +z
z Length along z axis</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="trap" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG general trapezoid solid is described by
z Length along the z-axis
theta Polar angle of the line joining the centres of the faces at -/+z
phi Azimuthal angle of the line joing the centre of the face at -z to the centre of the face at +z
y1 Length along y of the face at -z
x1 Length along x of the side at y = -y1 of the face at -z
x2 Length along x of the side at y = +y1 of the face at -z
alp1 Angle with respect to the y axis from the centre of the side at y =- y1 to the centre at y = +y1 of the face at -z
y2 Length along y of the face at +z
x3 Length along x of the side at y = -y2 of the face at +z
x4 Length along x of the side at y = +y2 of the face at +z
alp2 Angle with respect to the y axis from the centre of the side at y = -y2 to the centre at y = +y2 of the face at +z</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="theta" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="phi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="alpha1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="x4" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="alpha2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="torus" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG torus solid is described by
rmin Inside radius
rmax Outside radius
rtor swept radius of torus
startphi The starting phi angle in radians adjusted such that sphi+dphi lt 2PI, sphi gt -2PI
deltaphi Delta angle of the segment in radians
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="rmin" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="rtor" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="startphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="orb" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>CSG orb solid (simplified sphere with only rmax) is described by
r Outside radius</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="r" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="polyhedra" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>Polyhedra is described by
startphi initial phi starting angle
totalphi total phi angle
numsides number sides
and a set of zplanes.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:sequence>
<xs:element name="zplane" minOccurs="1" maxOccurs="unbounded" type="ZPlaneType"/>
</xs:sequence>
<xs:attribute name="startphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="numsides" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="TwoDimVertexType">
<xs:attribute name="x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="SectionType">
<xs:attribute name="zOrder" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="zPosition" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="xOffset" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="yOffset" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="scalingFactor" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="xtru" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>Poligonal extrusion is described by
an unbounded (min. 3) number of vertices of the blueprint polygon
and an unbounded number of Z sections.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:sequence>
<xs:sequence>
<xs:element name="twoDimVertex" minOccurs="3" maxOccurs="unbounded" type="TwoDimVertexType"/>
</xs:sequence>
<xs:sequence>
<xs:element name="section" minOccurs="2" maxOccurs="unbounded" type="SectionType"/>
</xs:sequence>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="hype" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>Tube with hyperbolic profile described by
rmin innerRadius
rmax outerRadius
inst innerStereo
outst outerStereo
z z length
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="rmin" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="inst" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="outst" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="eltube" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>
Volume representing a tube with elliptical
cross section.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="dx" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="dy" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="dz" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="tet" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>
Volume representing a tetrahedron.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="vertex1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex4" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="arb8" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>
Volume representing an (almost)arbitrary 8 vertices solid.
The solid is defined by two quadrilaterals sitting on parallel planes,
the distance between these two planes is dz*2.
The base quadrilateral contained within the plane located at -dz is defined by
the first 4 vertices (v1,v2,v3,v4 each one with the x and y coordinates).
The other parallel quadrilateral contained within the plane at +dz is defined by
the other 4 vertices (v5,v6,v7,v8 each one with the x and y coordinates).
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="v1x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v1y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v2x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v2y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v3x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v3y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v4x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v4y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v5x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v5y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v6x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v6y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v7x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v7y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v8x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="v8y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="dz" type="ExpressionOrIDREFType" use="required"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Tessellated solid elements -->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="FacetType">
<xs:annotation>
<xs:documentation>Base facet type</xs:documentation>
</xs:annotation>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element abstract="true" name="Facet" type="FacetType">
<xs:annotation>
<xs:documentation>Abstract element for all facets substitution group</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="triangular" substitutionGroup="Facet">
<xs:annotation>
<xs:documentation>
Triangular facet.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="FacetType">
<xs:attribute name="vertex1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="type" type="xs:string" default="ABSOLUTE"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="quadrangular" substitutionGroup="Facet">
<xs:annotation>
<xs:documentation>
Quadrangular facet.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="FacetType">
<xs:attribute name="vertex1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="vertex4" type="ExpressionOrIDREFType" use="required"></xs:attribute>
<xs:attribute name="type" type="xs:string" default="ABSOLUTE"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="tessellated" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>Tessellated solid
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:sequence>
<xs:element name="Facet" minOccurs="1" maxOccurs="unbounded" type="FacetType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="opticalsurface" substitutionGroup="SurfaceProperty">
<xs:annotation>
<xs:documentation>Optical surface used by Geant4 optical processes</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SurfacePropertyType">
<xs:attribute name="model" type="xs:string" default="glisur"></xs:attribute>
<xs:attribute name="finish" type="xs:string" default="polished"></xs:attribute>
<xs:attribute name="value" type="xs:string" default="1.0"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>
+531
View File
@@ -0,0 +1,531 @@
<?xml version="1.0" encoding="UTF-8" ?>
<gdml xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="GDMLSchema/gdml.xsd" >
<define>
<rotation name="tube0xc18410invoxel0xc15240r" unit="degree" x="-90" y="-0" z="0" />
<position name="cal0xc188b0inAREA_LV0xc14980p" unit="mm" x="100" y="0" z="20" />
<position name="cal0xc18820inAREA_LV0xc14980p" unit="mm" x="50" y="0" z="20" />
<position name="cal0xc18790inAREA_LV0xc14980p" unit="mm" x="0" y="0" z="20" />
<position name="cal0xc18700inAREA_LV0xc14980p" unit="mm" x="-50" y="0" z="20" />
<position name="cal0xc18670inAREA_LV0xc14980p" unit="mm" x="-100" y="0" z="20" />
<position name="voxel0xc18140inAREA_LV0xc14980p" unit="mm" x="140" y="0" z="-50" />
<position name="voxel0xc180b0inAREA_LV0xc14980p" unit="mm" x="120" y="0" z="-50" />
<position name="voxel0xc18020inAREA_LV0xc14980p" unit="mm" x="100" y="0" z="-50" />
<position name="voxel0xc17f90inAREA_LV0xc14980p" unit="mm" x="80" y="0" z="-50" />
<position name="voxel0xc17f00inAREA_LV0xc14980p" unit="mm" x="60" y="0" z="-50" />
<position name="voxel0xc17e70inAREA_LV0xc14980p" unit="mm" x="40" y="0" z="-50" />
<position name="voxel0xc168c0inAREA_LV0xc14980p" unit="mm" x="20" y="0" z="-50" />
<position name="voxel0xc16830inAREA_LV0xc14980p" unit="mm" x="0" y="0" z="-50" />
<position name="voxel0xc167a0inAREA_LV0xc14980p" unit="mm" x="-20" y="0" z="-50" />
<position name="voxel0xc16710inAREA_LV0xc14980p" unit="mm" x="-40" y="0" z="-50" />
<position name="voxel0xc179d0inAREA_LV0xc14980p" unit="mm" x="-60" y="0" z="-50" />
<position name="voxel0xc17940inAREA_LV0xc14980p" unit="mm" x="-80" y="0" z="-50" />
<position name="voxel0xc178b0inAREA_LV0xc14980p" unit="mm" x="-100" y="0" z="-50" />
<position name="voxel0xc17820inAREA_LV0xc14980p" unit="mm" x="-120" y="0" z="-50" />
<position name="voxel0xc17790inAREA_LV0xc14980p" unit="mm" x="-140" y="0" z="-50" />
<position name="voxel0xc17700inAREA_LV0xc14980p" unit="mm" x="140" y="0" z="-70" />
<position name="voxel0xc17670inAREA_LV0xc14980p" unit="mm" x="120" y="0" z="-70" />
<position name="voxel0xc175e0inAREA_LV0xc14980p" unit="mm" x="100" y="0" z="-70" />
<position name="voxel0xc17550inAREA_LV0xc14980p" unit="mm" x="80" y="0" z="-70" />
<position name="voxel0xc174c0inAREA_LV0xc14980p" unit="mm" x="60" y="0" z="-70" />
<position name="voxel0xc17430inAREA_LV0xc14980p" unit="mm" x="40" y="0" z="-70" />
<position name="voxel0xc173a0inAREA_LV0xc14980p" unit="mm" x="20" y="0" z="-70" />
<position name="voxel0xc17310inAREA_LV0xc14980p" unit="mm" x="0" y="0" z="-70" />
<position name="voxel0xc17280inAREA_LV0xc14980p" unit="mm" x="-20" y="0" z="-70" />
<position name="voxel0xc171f0inAREA_LV0xc14980p" unit="mm" x="-40" y="0" z="-70" />
<position name="voxel0xc17160inAREA_LV0xc14980p" unit="mm" x="-60" y="0" z="-70" />
<position name="voxel0xc170d0inAREA_LV0xc14980p" unit="mm" x="-80" y="0" z="-70" />
<position name="voxel0xc17040inAREA_LV0xc14980p" unit="mm" x="-100" y="0" z="-70" />
<position name="voxel0xc16fb0inAREA_LV0xc14980p" unit="mm" x="-120" y="0" z="-70" />
<position name="voxel0xc16f20inAREA_LV0xc14980p" unit="mm" x="-140" y="0" z="-70" />
<position name="voxel0xc16e90inAREA_LV0xc14980p" unit="mm" x="140" y="0" z="-90" />
<position name="voxel0xc16e00inAREA_LV0xc14980p" unit="mm" x="120" y="0" z="-90" />
<position name="voxel0xc16d70inAREA_LV0xc14980p" unit="mm" x="100" y="0" z="-90" />
<position name="voxel0xc16ce0inAREA_LV0xc14980p" unit="mm" x="80" y="0" z="-90" />
<position name="voxel0xc16c50inAREA_LV0xc14980p" unit="mm" x="60" y="0" z="-90" />
<position name="voxel0xc16bc0inAREA_LV0xc14980p" unit="mm" x="40" y="0" z="-90" />
<position name="voxel0xc16b30inAREA_LV0xc14980p" unit="mm" x="20" y="0" z="-90" />
<position name="voxel0xc16aa0inAREA_LV0xc14980p" unit="mm" x="0" y="0" z="-90" />
<position name="voxel0xc16a10inAREA_LV0xc14980p" unit="mm" x="-20" y="0" z="-90" />
<position name="voxel0xc16980inAREA_LV0xc14980p" unit="mm" x="-40" y="0" z="-90" />
<position name="voxel0xc16920inAREA_LV0xc14980p" unit="mm" x="-60" y="0" z="-90" />
<position name="voxel0xc15dc0inAREA_LV0xc14980p" unit="mm" x="-80" y="0" z="-90" />
<position name="voxel0xc166b0inAREA_LV0xc14980p" unit="mm" x="-100" y="0" z="-90" />
<position name="voxel0xc16620inAREA_LV0xc14980p" unit="mm" x="-120" y="0" z="-90" />
<position name="voxel0xc16590inAREA_LV0xc14980p" unit="mm" x="-140" y="0" z="-90" />
<position name="voxel0xc16500inAREA_LV0xc14980p" unit="mm" x="140" y="0" z="-110" />
<position name="voxel0xc16470inAREA_LV0xc14980p" unit="mm" x="120" y="0" z="-110" />
<position name="voxel0xc163e0inAREA_LV0xc14980p" unit="mm" x="100" y="0" z="-110" />
<position name="voxel0xc16350inAREA_LV0xc14980p" unit="mm" x="80" y="0" z="-110" />
<position name="voxel0xc162c0inAREA_LV0xc14980p" unit="mm" x="60" y="0" z="-110" />
<position name="voxel0xc16230inAREA_LV0xc14980p" unit="mm" x="40" y="0" z="-110" />
<position name="voxel0xc161a0inAREA_LV0xc14980p" unit="mm" x="20" y="0" z="-110" />
<position name="voxel0xc16110inAREA_LV0xc14980p" unit="mm" x="0" y="0" z="-110" />
<position name="voxel0xc16080inAREA_LV0xc14980p" unit="mm" x="-20" y="0" z="-110" />
<position name="voxel0xc15ff0inAREA_LV0xc14980p" unit="mm" x="-40" y="0" z="-110" />
<position name="voxel0xc15f60inAREA_LV0xc14980p" unit="mm" x="-60" y="0" z="-110" />
<position name="voxel0xc15ed0inAREA_LV0xc14980p" unit="mm" x="-80" y="0" z="-110" />
<position name="voxel0xc158b0inAREA_LV0xc14980p" unit="mm" x="-100" y="0" z="-110" />
<position name="voxel0xc15d30inAREA_LV0xc14980p" unit="mm" x="-120" y="0" z="-110" />
<position name="voxel0xc15ca0inAREA_LV0xc14980p" unit="mm" x="-140" y="0" z="-110" />
<position name="voxel0xc15c10inAREA_LV0xc14980p" unit="mm" x="140" y="0" z="-130" />
<position name="voxel0xc15b80inAREA_LV0xc14980p" unit="mm" x="120" y="0" z="-130" />
<position name="voxel0xc15af0inAREA_LV0xc14980p" unit="mm" x="100" y="0" z="-130" />
<position name="voxel0xc15a60inAREA_LV0xc14980p" unit="mm" x="80" y="0" z="-130" />
<position name="voxel0xc159d0inAREA_LV0xc14980p" unit="mm" x="60" y="0" z="-130" />
<position name="voxel0xc15940inAREA_LV0xc14980p" unit="mm" x="40" y="0" z="-130" />
<position name="voxel0xc15820inAREA_LV0xc14980p" unit="mm" x="20" y="0" z="-130" />
<position name="voxel0xc15790inAREA_LV0xc14980p" unit="mm" x="0" y="0" z="-130" />
<position name="voxel0xc15700inAREA_LV0xc14980p" unit="mm" x="-20" y="0" z="-130" />
<position name="voxel0xc15670inAREA_LV0xc14980p" unit="mm" x="-40" y="0" z="-130" />
<position name="voxel0xc15610inAREA_LV0xc14980p" unit="mm" x="-60" y="0" z="-130" />
<position name="voxel0xc15580inAREA_LV0xc14980p" unit="mm" x="-80" y="0" z="-130" />
<position name="voxel0xc154c0inAREA_LV0xc14980p" unit="mm" x="-100" y="0" z="-130" />
<position name="voxel0xc15430inAREA_LV0xc14980p" unit="mm" x="-120" y="0" z="-130" />
<position name="voxel0xc15380inAREA_LV0xc14980p" unit="mm" x="-140" y="0" z="-130" />
</define>
<materials>
<element Z="7" formula="N" name="Nitrogen0xc03430" >
<atom value="14.0067" />
</element>
<element Z="8" formula="O" name="Oxygen0xc03600" >
<atom value="15.9994" />
</element>
<material formula=" " name="Vacuum0xc041f0" >
<D value="1e-25" />
<fraction n="0.7" ref="Nitrogen0xc03430" />
<fraction n="0.3" ref="Oxygen0xc03600" />
</material>
<element Z="18" formula="Ar" name="Argon0xc03b70" >
<atom value="39.948" />
</element>
<material formula=" " name="Air0xc04770" >
<D value="0.0012929" />
<fraction n="0.755078" ref="Nitrogen0xc03430" />
<fraction n="0.232116" ref="Oxygen0xc03600" />
<fraction n="0.0128064" ref="Argon0xc03b70" />
</material>
<material Z="18" formula=" " name="ArgonGas0xc051f0" >
<D value="0.00166042" />
<atom value="39.948" />
</material>
<element Z="6" formula="C" name="Carbon0xc032a0" >
<atom value="12.011" />
</element>
<element Z="1" formula="H" name="Hydrogen0x950310" >
<atom value="1.00794" />
</element>
<material formula=" " name="Ethane0xc060e0" >
<D value="0.00126349" />
<fraction n="0.798879" ref="Carbon0xc032a0" />
<fraction n="0.201121" ref="Hydrogen0x950310" />
</material>
<element Z="18" formula=" " name="ArgonGas0xc05a70" >
<atom value="39.948" />
</element>
<material formula=" " name="ArEthane0xc063b0" >
<D value="0.00146196" />
<fraction n="0.567878" ref="ArgonGas0xc05a70" />
<fraction n="0.345213" ref="Carbon0xc032a0" />
<fraction n="0.0869089" ref="Hydrogen0x950310" />
</material>
<material Z="14" formula=" " name="SiliconWafer0xc06e40" >
<D value="2.33" />
<atom value="28.0855" />
</material>
<material Z="13" formula=" " name="Al0xc07d10" >
<D value="2.7" />
<atom value="26.98" />
</material>
<material Z="26" formula=" " name="Iron0xc08580" >
<D value="7.87" />
<atom value="55.847" />
</material>
<material Z="82" formula=" " name="Lead0xc08ce0" >
<D value="11.35" />
<atom value="207.2" />
</material>
<material formula=" " name="Scinti0xc097f0" >
<D value="1.032" />
<fraction n="0.922579" ref="Carbon0xc032a0" />
<fraction n="0.077421" ref="Hydrogen0x950310" />
</material>
<element Z="14" formula="Si" name="Silicon0xc039a0" >
<atom value="28.0855" />
</element>
<material formula=" " name="Quartz0xc09a30" >
<D value="2.64" />
<fraction n="0.467435" ref="Silicon0xc039a0" />
<fraction n="0.532565" ref="Oxygen0xc03600" />
</material>
<element Z="11" formula="Na" name="Sodium0xc037c0" >
<atom value="22.9898" />
</element>
<element Z="53" formula="I" name="Iodine0xc03d40" >
<atom value="126.904" />
</element>
<material formula=" " name="NaI0xc0a290" >
<D value="3.67" />
<fraction n="0.153373" ref="Sodium0xc037c0" />
<fraction n="0.846627" ref="Iodine0xc03d40" />
</material>
<element Z="55" formula="Cs" name="Cesium0xc03f60" >
<atom value="132.905" />
</element>
<material formula=" " name="CsI0xc0aab0" >
<D value="4.51" />
<fraction n="0.511549" ref="Cesium0xc03f60" />
<fraction n="0.488451" ref="Iodine0xc03d40" />
</material>
</materials>
<solids>
<box aunit="radian" lunit="mm" name="AREA0xc145c0" x="300" y="300" z="300" />
<box aunit="radian" lunit="mm" name="voxel0xc151b0" x="20" y="200" z="20" />
<tube aunit="degree" deltaphi="360" lunit="mm" name="tube0xc181d0" rmax="9.5" rmin="0" startphi="0" z="200" />
<box aunit="radian" lunit="mm" name="cal0xc184a0" x="50" y="50" z="60" />
</solids>
<structure>
<volume name="tube0xc18280" >
<materialref ref="Al0xc07d10" />
<solidref ref="tube0xc181d0" />
</volume>
<volume name="voxel0xc15240" >
<materialref ref="Vacuum0xc041f0" />
<solidref ref="voxel0xc151b0" />
<physvol>
<volumeref ref="tube0xc18280" />
<rotationref ref="tube0xc18410invoxel0xc15240r" />
</physvol>
</volume>
<volume name="cal0xc18530" >
<materialref ref="CsI0xc0aab0" />
<solidref ref="cal0xc184a0" />
</volume>
<volume name="AREA_LV0xc14980" >
<materialref ref="Vacuum0xc041f0" />
<solidref ref="AREA0xc145c0" />
<physvol>
<volumeref ref="cal0xc18530" />
<positionref ref="cal0xc188b0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="cal0xc18530" />
<positionref ref="cal0xc18820inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="cal0xc18530" />
<positionref ref="cal0xc18790inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="cal0xc18530" />
<positionref ref="cal0xc18700inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="cal0xc18530" />
<positionref ref="cal0xc18670inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc18140inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc180b0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc18020inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17f90inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17f00inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17e70inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc168c0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16830inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc167a0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16710inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc179d0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17940inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc178b0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17820inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17790inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17700inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17670inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc175e0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17550inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc174c0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17430inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc173a0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17310inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17280inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc171f0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17160inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc170d0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc17040inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16fb0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16f20inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16e90inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16e00inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16d70inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16ce0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16c50inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16bc0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16b30inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16aa0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16a10inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16980inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16920inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15dc0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc166b0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16620inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16590inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16500inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16470inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc163e0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16350inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc162c0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16230inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc161a0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16110inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc16080inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15ff0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15f60inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15ed0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc158b0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15d30inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15ca0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15c10inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15b80inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15af0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15a60inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc159d0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15940inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15820inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15790inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15700inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15670inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15610inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15580inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc154c0inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15430inAREA_LV0xc14980p" />
</physvol>
<physvol>
<volumeref ref="voxel0xc15240" />
<positionref ref="voxel0xc15380inAREA_LV0xc14980p" />
</physvol>
</volume>
</structure>
<setup name="Default" version="1.0" >
<world ref="AREA_LV0xc14980" />
</setup>
</gdml>
+56
View File
@@ -0,0 +1,56 @@
#!/usr/bin/python
# ==================================================================
# An example for reading a GDML file
#
# ==================================================================
from Geant4 import *
from Geant4.G4g4gdml import *
import ExN01pl, ParticleGun
# ==================================================================
# user actions in python
# ==================================================================
class MyDetectorConstruction(G4VUserDetectorConstruction):
"My Detector Construction"
def __init__(self):
G4VUserDetectorConstruction.__init__(self)
self.world= None
self.gdml_parser= G4GDMLParser()
# -----------------------------------------------------------------
def __del__(self):
pass
# -----------------------------------------------------------------
def Construct(self):
self.gdml_parser.Read("qgeom.gdml")
self.world= self.gdml_parser.GetWorldVolume()
return self.world
# ==================================================================
# main
# ==================================================================
# set geometry
myDC= MyDetectorConstruction()
gRunManager.SetUserInitialization(myDC)
# minimal physics list
ExN01pl.Construct()
# set primary generator action
ParticleGun.Construct()
# initialize
gRunManager.Initialize()
# visualization
gApplyUICommand("/vis/open OGLIX")
gApplyUICommand("/vis/scene/create")
gApplyUICommand("/vis/scene/add/volume")
gApplyUICommand("/vis/sceneHandler/attach")
gApplyUICommand("/vis/viewer/set/viewpointThetaPhi 90. -90.")
+64
View File
@@ -0,0 +1,64 @@
#!/usr/bin/python
# ==================================================================
# An example for reading a GDML file
#
# ==================================================================
from Geant4 import *
from Geant4.G4gdml import *
import ExN01pl, ParticleGun
# ==================================================================
# user actions in python
# ==================================================================
class MyDetectorConstruction(G4VUserDetectorConstruction):
"My Detector Construction"
def __init__(self):
G4VUserDetectorConstruction.__init__(self)
self.world= None
self.sxp= SAXProcessor()
self.config= ProcessingConfigurator()
# -----------------------------------------------------------------
def __del__(self):
self.sxp.Finalize()
# -----------------------------------------------------------------
def Construct(self):
self.sxp.Initialize()
self.config.SetURI("qgeom.gdml")
self.config.SetSetupName("Default")
self.sxp.Configure(self.config)
self.sxp.Run()
self.world= GDMLProcessor.GetInstance().GetWorldVolume()
return self.world
# ==================================================================
# main
# ==================================================================
# set geometry
myDC= MyDetectorConstruction()
gRunManager.SetUserInitialization(myDC)
# minimal physics list
ExN01pl.Construct()
# set primary generator action
ParticleGun.Construct()
# initialize
gRunManager.Initialize()
# visualization
gApplyUICommand("/vis/open OGLIX")
gApplyUICommand("/vis/scene/create")
gApplyUICommand("/vis/scene/add/volume")
gApplyUICommand("/vis/sceneHandler/attach")
gApplyUICommand("/vis/viewer/set/viewpointThetaPhi 90. -90.")
+41
View File
@@ -0,0 +1,41 @@
#!/usr/bin/python
# ==================================================================
# An example of writing a GDML file
#
# ==================================================================
from Geant4 import *
from Geant4.G4gdml import *
import Qmaterials, Qgeom
import ExN01pl, ParticleGun
# ==================================================================
# main
# ==================================================================
# set geometry
Qmaterials.Construct()
Qgeom.Construct()
# minimal physics list
ExN01pl.Construct()
# set primary generator action
ParticleGun.Construct()
# initialize
gRunManager.Initialize()
# visualization
gApplyUICommand("/vis/open OGLIX")
gApplyUICommand("/vis/scene/create")
gApplyUICommand("/vis/scene/add/volume")
gApplyUICommand("/vis/sceneHandler/attach")
gApplyUICommand("/vis/viewer/set/viewpointThetaPhi 90. -90.")
# write to a GDML file
print "\n*** write to a GDML file..."
navigator= gTransportationManager.GetNavigatorForTracking()
world_volume= navigator.GetWorldVolume()
gdml_writer= G4GDMLWriter("GDMLSchema/gdml.xsd", "qgeom.gdml")
gdml_writer.DumpGeometryInfo(world_volume)
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: EzDetectorConstruction.cc,v 1.3 2006/06/29 15:28:43 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// EzDetectorConstruction.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: EzDetectorConstruction.hh,v 1.3 2006/06/29 15:28:46 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// EzDetectorConstruction.hh
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.3 2006/08/10 08:50:18 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4EzVolume.cc,v 1.3 2006/06/29 15:28:52 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// G4EzVolume.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4EzVolume.hh,v 1.3 2006/06/29 15:28:55 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// G4EzVolume.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4EzVoxelParameterization.cc,v 1.3 2006/06/29 15:28:58 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// G4EzVoxelParameterization.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4EzVoxelParameterization.hh,v 1.3 2006/06/29 15:29:01 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// G4EzVoxelParameterization.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4EzWorld.cc,v 1.4 2006/08/25 05:13:16 kmura Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// G4EzWorld.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4EzWorld.hh,v 1.3 2006/06/29 15:29:07 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// G4EzWorld.hh
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/08/08 05:26:19 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py site-modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pyEzgeom.cc,v 1.3 2006/06/29 15:28:49 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// pyEZgeom.cc
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/04/25 10:17:30 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py site-modules
# ===========================================================
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.3 2006/06/14 08:23:52 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
+1 -1
View File
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.3 2006/07/12 01:56:23 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py site-modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: ExN01DetectorConstruction.cc,v 1.4 2006/06/29 15:29:10 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// ExN01DetectorConstruction.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: ExN01DetectorConstruction.hh,v 1.4 2006/06/29 15:29:12 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// ExN01DetectorConstruction.hh
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/04/25 10:25:12 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pyExN01geom.cc,v 1.4 2006/06/29 15:29:14 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// pyExN01geom.cc
//
@@ -25,7 +25,7 @@
//
//
// $Id: ExN03DetectorConstruction.cc,v 1.5 2006/12/01 02:37:01 kmura Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
@@ -25,7 +25,7 @@
//
//
// $Id: ExN03DetectorConstruction.hh,v 1.5 2006/12/01 02:37:01 kmura Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
@@ -25,7 +25,7 @@
//
//
// $Id: ExN03DetectorMessenger.cc,v 1.1 2006/12/01 02:37:01 kmura Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
@@ -25,7 +25,7 @@
//
//
// $Id: ExN03DetectorMessenger.hh,v 1.1 2006/12/01 02:37:01 kmura Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/04/25 10:25:12 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pyExN03geom.cc,v 1.4 2006/06/29 15:29:21 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// pyExN03geom.cc
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/04/25 10:25:12 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py site-modules
# ===========================================================
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/04/25 10:25:12 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: QDetectorConstruction.cc,v 1.4 2006/06/29 15:29:24 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// QDetectorConstruction.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: QDetectorConstruction.hh,v 1.4 2006/06/29 15:29:26 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// QDetectorConstruction.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pyQgeom.cc,v 1.4 2006/06/29 15:29:29 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// pyQgeom.cc
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/04/25 10:28:34 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py site-modules
# ===========================================================
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/04/25 10:28:34 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: NISTmaterials.cc,v 1.4 2006/06/29 15:29:32 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// NISTmaterials.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pyNISTmaterials.cc,v 1.4 2006/06/29 15:29:34 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// pyNISTmaterials.cc
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/04/25 10:28:36 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: Qmaterials.cc,v 1.4 2006/06/29 15:29:37 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// Qmaterials.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pyQmaterials.cc,v 1.4 2006/06/29 15:29:40 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// pyQmaterials.cc
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.1 2006/07/12 08:46:18 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: PhysicsListEMlowE.cc,v 1.1 2006/07/12 08:46:18 kmura Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// PhysicsListEMlowE.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: PhysicsListEMlowE.hh,v 1.1 2006/07/12 08:46:18 kmura Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// PhysicsListEMlowE.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pyEMLowEpl.cc,v 1.2 2006/07/12 09:18:08 kmura Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// pyEMLowEpl.cc
//
@@ -1,5 +1,5 @@
# $Id: GNUmakefile,v 1.2 2006/04/25 10:31:40 kmura Exp $
# $Name: geant4-09-00 $
# $Name: geant4-09-01 $
# ===========================================================
# Makefile for building Geant4Py modules
# ===========================================================
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: PhysicsListEMstd.cc,v 1.5 2006/07/11 09:55:01 kmura Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// PhysicsListEMstd.cc
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: PhysicsListEMstd.hh,v 1.4 2006/06/29 15:29:46 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// PhysicsListEMstd.hh
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: pyEMSTDpl.cc,v 1.4 2006/06/29 15:29:49 gunter Exp $
// $Name: geant4-09-00 $
// $Name: geant4-09-01 $
// ====================================================================
// pyEMSTDpl.cc
//

Some files were not shown because too many files have changed in this diff Show More