?

Log in

Geant4 中国用户群 [entries|archive|friends|userinfo]
Geant4 中国用户群

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| [Geant4 主页] [Thinking in C++] [Geant4 HyperNews Forum] [Exaos's 的 blog] ]

GEANT 的新开发动态 [Dec. 18th, 2010|12:24 am]
Geant4 中国用户群

exaos
Rene Brun 于 2010-12-16 做了一个报告,讨论了新版 GEANT 的开发:
http://goo.gl/UZbox
报告下载: http://goo.gl/rjhY9

报告小结:
1. 会组合 ROOT 和 GEANT4 的特点,形成新项目 GEANT (或者叫 GEANT 5)
2. 添加新功能,尤其关注 Virtual MC
3. Event generator 采用新接口,可方便与其它理论计算程序连接
4. 输运过程支持多核、多 CPU,在事件和 Tack 级别支持并行
5. 采用 ROOT 编译系统及相关的开发技术。用户程序开发更容易,可能只需要写一个 Config.C 或者 Config.py (看来 Rene 很支持 Python 嘛)
6. 几何会采用 ROOT TGeo. 其它等事项在逐步完善中。
估计一年内会有原型出来。
LinkLeave a comment

GDML 的简介、安装与使用 [Aug. 25th, 2006|11:00 am]
Geant4 中国用户群

exaos

GDML 简介


在 Geant4 中有多种构造探测器几何的办法:


  1. 直接编程

  2. 使用接口程序转换成 Geant4 的几何

  3. 使用 CAD 程序构造几何,再将之与 Geant4 进行连接


GDML 是第二种用于构造探测器几何的办法,它将探测几何数据定义在 XML 文件中,再由 Geant4 应用程序读取。GDML 的结构由相应的 GDML Schema 文件定义。

GDML 的当前版本:2.6.0, 2006.07.14

GDML 的 LCG 发行版本将会有稍许不同:CPPGDML 和 GDMLSchema 的标签不再分别使用,而使用统一的版本标签 GDML_X_Y_Z。Python GDML 处理程序不再与 GDML 系统的其它部分一起发行了。GDML ROOT 的绑定已经变成了 ROOT 的一部分,因此已经从 GDML 的 CVS 库中去除。

2.6.0 及以前的 GDML 包含有:


CPPGDML

包含有 GDML 生成与读取的 C++ 实现代码。它包含有应用程序无关的部分和相关的绑定部分(Geant4, ROOT 等)。

GDMLSchema

GDML 的 XML schema 格式定义文件。

PyGDML

GDML 生成与读取的 Python 实现。它包含应用程序无关部分和关联部分(Geant4, ROOT, 等)。


GDML 的安装与使用


首先从 http://gdml.web.cern.ch/GDML/ 下载最新版本的 GDML 包或者从 CVS 服务器中直接获得:

cvs -d :pserver:anonymous@simu.cvs.cern.ch:/cvs/simu co -r <version> \
   -d <destination> GDML2

解压下载的 GDML 包可得如下的目录:

CPPGDML
CPPGDML 源文件目录

GDMLSchema
GDML Schema 源文件

PyGDML
Python GDML 实现的源码

LCGMakefile
在 CERN 内部使用的 makefile 文件

LCGReleaseNotes
LCG 发行注记

CVS
CVS 的标志目录

Examples
示例


GDML Schema


GDML Schema 可以放在任意路径下,只要你的应用程序在执行时能够找到即可。

CPPGDML


获取源码


你需要首先将 GDML Schema 放置到相应的路径中。下载的 GDML2.6.0 包解压后,在当前路径下即存在一个 CPPGDML 目录。或者直接从 CVS 服务器获得:

cvs -d :pserver:anonymous@simu.cvs.cern.ch:/cvs/simu co -r <version> \
   -d <destination> GDML2/CPPGDML

配置与编译


CPPGDML 使用基于 autoconf 前端程序来编译。首先在该目录下执行 ./configure --help 获得配置的帮助信息,然后执行 ./configure <Options> 即可进行配置。配置完毕后,再执行 make 和 make install。在 CPPGDML 配置与编译过程中,最好先配置如下几个环境变量:


  • G4INSTALL: Geant4 的安装路径

  • CLHEP_BASE_DIR: CLHEP 库的安装路径

  • XERCESCROOT: Xerces C++ 解析器[*]的安装路径


在 Linux 系统上安装 CPPGDML,默认安装在 /usr/local 目录下。在安装目录的 <prefix>/lib 下通常会有这些库文件:


libSaxana.(a/so)
通用的 GDML 文件的解释库

libWriter.(a/so)
通用的 GDML 文件输出库

libProcesses.(a/so)
通用的 GDML 处理库

libG4Evaluator.(a/so)
与 Geant4 绑定的 Evaluator 库

libG4Processor.(a/so)
与 Geant4 绑定的 Processor 库

libG4Subscribers.(a/so)
与 Geant4 绑定的库 Subscribers 库

libG4Writer.(a/so)
与 Geant4 绑定的输出库

libgdml.(a/so)
单独的 GDML 库


在 <prefix>/include 目录下包含的头文件分成几个部分:

Common
通用的 CPPGDML 头文件

G4Binding
与 Geant4 进行绑定的头文件

STEPBinding
处理 STEP 几何的头文件

Examples
示例程序的头文件


在 Linux 系统上安装完 CPPGDML 后,如果库文件在 /usr/local 目录下,还需要刷新一下库缓冲数据文件,即执行命令 ldconfig 。或者将安装的路径放置到系统变量 LD_LIBRARY_PATH 中。

使用 CPPGDML 库


CPPGDML 的使用分为两步。第一步使用 GDMLWriter 创建 .gdml 几何数据文件,可按如下步骤进行:


  1. 创建一个 GDMLWriter 类对象,并指定 schema 的位置(该位置会保存在 .gdml 文件中)和输出文件的名称。
    #include "G4Writer/G4GDMLWriter.h"
    
    G4GDMLWriter g4writer("GDMLSchema/gdml.xsd", "geo.gdml");
    


  2. 为了生成 .gdml 文件,需要调用 DumpGeometryInfo 方法,其参数为指向几何树顶层 PhysicalVolume 的指针。
    try {
        g4writer.DumpGeometryInfo(g4TopVolume);
    } catch( std::logic_error & lerr ) {
        std::cout << "Caught the exception:" 
                  << lerr.what() << std::endl;
    }
    


  3. 最后,编译可执行文件时需要与两个库进行链接:liblcg_Writer 和 liblcg_G4Writer


为使用生成的 .gdml 文件,可按如下步骤进行:


  1. 创建一个 SAXProcessor 类对象并进行配置,指定你想要解析的 .gdml 文件:
    #include "Saxana/SAXProcessor.h"
    #include "Saxana/ProcessingConfigurator.h"
    
    SAXProcessor sxp;
    ProcessingConfigurator config;
    
    sxp.Initialize();
    config.SetURI("geo.gdml");
    config.SetSetupName("Default");
    sxp.Configure( &config);
    


  2. 当完成上一步后,即可调用解析器获得指向所处理几何的顶层 volume 的指针:
    sxp.Run();
    
    G4VPhysicalVolume* fWorld = (G4VPhysicalVolume*) \
            GDMLProcessor::GetInstance()->GetWorldVolume();
    


  3. 最后在退出程序前需要调用:
    sxp.Finalize();
    


  4. 可执行程序编译里需要链接的库有:libG4Subscribers, libG4Processor,
    libProcesses, libSaxana

  5. GNUmakefile 可按下例编写:
    GDML_BASE   := /usr/local
    GDML_LIB    := /usr/local/lib
    XERCESCROOT :=/usr
    
    name     := g4N02gdml
    G4TARGET := $(name)
    G4EXLIB  := true
    
    ifndef G4INSTALL
      G4INSTALL = ../../..
    endif
    
    CPPFLAGS  += -I$(GDML_BASE)/include/GDML \
    	     -I$(XERCESCROOT)/include
    
    EXTRALIBS +=   -L$(GDML_LIB) \
                   -lG4Evaluator \
                   -lG4Processor \
                   -lG4Subscribers \
                   -lG4Writer \
                   -lSaxana \
                   -lProcesses \
                   -lWriter \
                   -L$(XERCESCROOT)/lib -lxerces-c 
    
    include $(G4INSTALL)/config/binmake.gmk
    
    .PHONY: all
    
    all: lib bin
    ifndef XERCESCROOT	
    	@echo XERCESCROOT not defined!
    endif
    ifndef GDML_BASE
    	@echo GDML_BASE not defined!
    endif
    ifndef GDML_LIB
    	@echo GDML_LIB not defined!
    endif
    
    
    visclean:
    	rm -f g4*.prim g4*.eps g4*.wrl
    	rm -f .DAWN_*
    

    把其中的 name, GDML_BASE, GDML_LIB, XERCESCROOT 改成你系统中相应的设置即可。需要注意的是,如果你使用 $(G4INSTALL)/config/binmake.gmk,你的源文件必须以 .cc 结尾。这一点和使用 <CPPGDML-path>/config/make/application.gmk 不同。


PyGDML


对于 ROOT 绑定,只需要设置好如 rootsetup.(c)sh 中的环境变量即可,不需要任何编译。对于 Geant4 绑定,需要先设置好如 g4setup.(c)sh 脚本中的环境变量,然后使用 make 创建并编译好 dictionaries。需要说明的是,G4Binding 需要 gccxml 来编译 G4classesDict.so 文件。gccxml 可以到网站 http://www.gccxml.org 去查到相关资料。

PyGDML 中带有的 rootsetup.(c)sh 是针对 CERN 内部的计算环境而设的。

运行程序:

  • 如果要将 GDML 几何载入到 ROOT 中,需要在 ROOTBinding/python 目录下执行 GDMLROOT.py 脚本。也可以在 Python 中交互式地运行:python -i GDMLROOT.py。脚本运行后,即可从 Python 中访问所有的 ROOT 类,GDML 几何会被转换成内存中的 TGeo 对象。

  • 如果需要将 GDML 几何载入到 Geant4 程序中,需要在 G4Binding/python 目录下执行脚本 GDMLG4.py 或交互式地运行:python -i GDMLG4.py。脚本执行完毕后,即可 从 Python 中访问 Geant4 的类(只要其 dictionary 已经被创建),并且 GDML 几何即可被转换成 Geant4 几何载入内存。
    没有成功!需要配置好 PyLCGDict 工具,该工具是 LCG 项目中 SEAL 子项目的一部分。

  • 如果不使用 Python,在 Geant4 C++ 程序中载入 GDML 文件与 CPPGDML 中的使用方法一样。

  • 如果将 ROOT::TGeo 几何描述导入到 GDML 中,使用 PyROOT::TGeo 进行几何描述时,一定要注意几点:

    • 如果在子程序中创建 TGeoVolume 对象,不要用 ROOT.TGeoVolume 创建,而使用 geom.MakeShape(...) 创建,其中 geom 为一个 ROOT.TGeoManager 对象。否则创建的 Volume 会导致内存漏露,并且无法使用 ROOTwriter 导出到 GDML 文件中。

    • 如果在子程序中创建 TGeoMaterial 和 TGeoMedium 对象,不要使用 ROOT.TGeoMaterial 和 ROOT.TGeoMedium,而使用 geom.Material(...) 和 geom.Medium(...) 进行创建。否则会导致内存漏露,无法使用 ROOTwriter 导出 GDML 文件。

Link1 comment|Leave a comment

求助 [Aug. 20th, 2006|11:18 am]
Geant4 中国用户群
geant4
geant4中又很多类,
怎么找到这些类地说明和用法呢?

比如关于Hit,Digi信息在那找到呢???

非常感谢
Link2 comments|Leave a comment

geant4安装问题,求助 [May. 19th, 2006|10:57 am]
Geant4 中国用户群
dustdrift
大家好,真高兴找到这一片天空.
我在安装geant4的过程中遇到这样一个问题,希望大家能帮帮我.
我用的是Fedora Core2系统,gcc版本是3.33,安装geant4.6.2p02,CLHEP是1.8.1.0,安装似乎还挺顺利,不过运行exampleN02出现这样的问题,
Creating shared library /home/pmo/geant4/tmp/Linux-g++/exampleN02/libexampleN02.so ...
/usr/bin/ld: cannot find -lGLU
collect2: ld returned 1 exit status
gmake: *** [/home/pmo/geant4/tmp/Linux-g++/exampleN02/libexampleN02.so] 错误 1
我试着在source/visualization,source/interfaces里重新make,这时又告知
............
include/G4OpenGL.hh:30:19: GL/gl.h: 不存在那个文件或目录
include/G4OpenGL.hh:31:20: GL/glu.h: 不存在那个文件或目录
............
我安装geant4时的环境变量是这样设置的
########### System
export G4SYSTEM=Linux-g++
export G4INSTALL=/home/pmo/geant4
export G4WORKDIR=$G4INSTALL
export G4DEBUG=1
export G4TMP=$G4INSTALL/tmp
export G4LIB=$G4INSTALL/lib
export G4BIN=$G4INSTALL/bin

export CLHEP_BASE_DIR=/home/pmo/CLHEP
export CLHEP_LIB=CLHEP-g++.1.8.1.0

export G4LIB_USE_GRANULAR=1
export G4LIB_BUILD_SHARED=1

export LD_LIBRARY_PATH="$CLHEP_BASE_DIR/lib"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/lib"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/X11R6/lib"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:$G4INSTALL/lib/$G4SYSTEM"

PATH=$G4BIN/Linux-g++:${PATH}

########### Physics data
export G4LEDATA=/home/pmo/G4DATA/G4EMLOW2.3
export NeutronHPCrossSections=/home/pmo/G4DATA/G4NDL3.7
export G4LEVELGAMMADATA=/home/pmo/G4DATA/PhotonEvaporation
export G4RADIOACTIVEDATA=/home/pmo/G4DATA/RadiativeDecay

########### INTERFACES
export G4UI_BUILD_TERMINAL_SESSION=1
export G4UI_USE_TERMINAL=1
export G4UI_USE_TCSH=1

########### OpenGL
export G4VIS_BUILD_OPENGL_DRIVER=1
export G4VIS_USE_OPENGL=1
export G4VIS_BUILD_OPENGLX_DRIVER=1
export G4VIS_USE_OPENGLX=1
export OGLHOME=/usr/X11R6
export OGLFLAGS="-I$OGLHOME/include"
export OGLLIBS="-L$OGLHOME/lib -lGLU -lGL"
这样设置应该没有什么问题吧?
在安装CLHEP时出现过这段,不知道有没有影响?
.............
checking for
[Error: Irreparable invalid markup ('<strstream.h>') in entry. Owner must fix manually. Raw contents below.]

大家好,真高兴找到这一片天空.
我在安装geant4的过程中遇到这样一个问题,希望大家能帮帮我.
我用的是Fedora Core2系统,gcc版本是3.33,安装geant4.6.2p02,CLHEP是1.8.1.0,安装似乎还挺顺利,不过运行exampleN02出现这样的问题,
Creating shared library /home/pmo/geant4/tmp/Linux-g++/exampleN02/libexampleN02.so ...
/usr/bin/ld: cannot find -lGLU
collect2: ld returned 1 exit status
gmake: *** [/home/pmo/geant4/tmp/Linux-g++/exampleN02/libexampleN02.so] 错误 1
我试着在source/visualization,source/interfaces里重新make,这时又告知
............
include/G4OpenGL.hh:30:19: GL/gl.h: 不存在那个文件或目录
include/G4OpenGL.hh:31:20: GL/glu.h: 不存在那个文件或目录
............
我安装geant4时的环境变量是这样设置的
########### System
export G4SYSTEM=Linux-g++
export G4INSTALL=/home/pmo/geant4
export G4WORKDIR=$G4INSTALL
export G4DEBUG=1
export G4TMP=$G4INSTALL/tmp
export G4LIB=$G4INSTALL/lib
export G4BIN=$G4INSTALL/bin

export CLHEP_BASE_DIR=/home/pmo/CLHEP
export CLHEP_LIB=CLHEP-g++.1.8.1.0

export G4LIB_USE_GRANULAR=1
export G4LIB_BUILD_SHARED=1

export LD_LIBRARY_PATH="$CLHEP_BASE_DIR/lib"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/lib"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/X11R6/lib"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:$G4INSTALL/lib/$G4SYSTEM"

PATH=$G4BIN/Linux-g++:${PATH}

########### Physics data
export G4LEDATA=/home/pmo/G4DATA/G4EMLOW2.3
export NeutronHPCrossSections=/home/pmo/G4DATA/G4NDL3.7
export G4LEVELGAMMADATA=/home/pmo/G4DATA/PhotonEvaporation
export G4RADIOACTIVEDATA=/home/pmo/G4DATA/RadiativeDecay

########### INTERFACES
export G4UI_BUILD_TERMINAL_SESSION=1
export G4UI_USE_TERMINAL=1
export G4UI_USE_TCSH=1

########### OpenGL
export G4VIS_BUILD_OPENGL_DRIVER=1
export G4VIS_USE_OPENGL=1
export G4VIS_BUILD_OPENGLX_DRIVER=1
export G4VIS_USE_OPENGLX=1
export OGLHOME=/usr/X11R6
export OGLFLAGS="-I$OGLHOME/include"
export OGLLIBS="-L$OGLHOME/lib -lGLU -lGL"
这样设置应该没有什么问题吧?
在安装CLHEP时出现过这段,不知道有没有影响?
.............
checking for <strstream.h>... no
.............
我该怎么办?
谢谢你们的关注!
Link5 comments|Leave a comment

(no subject) [Feb. 28th, 2006|04:26 pm]
Geant4 中国用户群
suspiciousagain
如何制作一个网状结构的物体?? 请高人指点!!!!!!!谢谢了!!!!!!!
Link2 comments|Leave a comment

(no subject) [Feb. 28th, 2006|04:19 pm]
Geant4 中国用户群
suspiciousagain
大家好,终于找到了个中文的geant4的论坛!我现在可以做一些探测器的模拟,希望以后和大家多多交流!!
LinkLeave a comment

还差一步了:} [Sep. 12th, 2005|11:01 am]
Geant4 中国用户群
patracia
请问前辈:(因为小妮子是初学者,你当然是前辈拉)
在边界的定义上,镜面反射部分(NO6)中有个参数是EFFICIENCY,查不到它的定义,该如何设定啊?
LinkLeave a comment

exaos前辈,以前的指点所以非浅,感激万分。 [Aug. 26th, 2005|04:56 pm]
Geant4 中国用户群
patracia
前辈, 有两个问题。
1,//my Verbose output class
G4VSteppingVerbose::SetInstance(new ExN02SteppingVerbose);中的verbose应该怎么解释啊?steppingverbose有何用啊。
2,我用的linux不是图形界面,输出的数据,如何导出啊?还有vismanager是不是非要使图形界面讷?
Link6 comments|Leave a comment

一个小问题:] [Aug. 7th, 2005|04:03 pm]
Geant4 中国用户群
patracia
请问如何进入geant4的命令模式啊?说明书上的命令说和geant4所处的state有关,但怎么转换啊?
如怎么出现Idle〉的标示啊,非要用这些命令吗?
谢谢指点^。^
Link1 comment|Leave a comment

请问前辈:〉 [Aug. 1st, 2005|04:31 pm]
Geant4 中国用户群
patracia
我一直是在linux下用geant4,曾几次尝试在windows下安装,但好像总缺了什么。前辈能否详细指点一下具体安装过程。
谢谢。
Link5 comments|Leave a comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]