GEANT4用户手册:2.2 如何定义探测器的几何结构 您所在的位置:网站首页 正方体几何体组合规则是什么 GEANT4用户手册:2.2 如何定义探测器的几何结构

GEANT4用户手册:2.2 如何定义探测器的几何结构

2024-07-12 00:30| 来源: 网络整理| 查看: 265

2.2 如何定义探测器的几何结构

2.2.1 基本概念

在GEANT4中,探测器的几何结构是由许多几何体组成的。最大的几何体被称为World几何体,它必须包含探测器几何结构中的所有其他几何体且留有一定的剩余空间。其他几何体被创建并放置在之前的几何体中,包括World几何体。描述World的最简单、最有效的结构是一个盒子(box)。

每个几何体都是通过描述其形状和物理性质来创建的,然后将其放置在一个可容几何体(containing volume)中。

当一个几何体被放置在另一几何体之中时,我们称前者为女儿几何体(daughter volume,不会翻就硬翻),后者为母几何体(mother volume)。用于指定女儿几何体位置的坐标系是母几何体的坐标系。

为了描述一个几何体的形状,我们使用实体(solid)这一概念。实体是一种几何对象,它具有某种形状,且该形状的各维都有确切的数值。一个边长为10 cm的立方体和一个半径为30 cm、母线长为75 cm的圆柱体都是实体的实例。

为了描述一个几何体的全部属性,我们使用逻辑几何体(logical volume)。逻辑几何体包含了实体的几何属性,并增加了物理性质:几何体的材料、是否含有灵敏探测器元件、磁场等等。

我们还要描述如何把几何体放到适当的位置,为此需要创建一个物理几何体(physical volume),将逻辑几何体的副本放置在这样一个更大的可容几何体之中。

2.2.2 创建一个简单几何体

创建一个几何体需要做什么?

创建一个实体

用实体创建一个逻辑几何体,并增加其他属性

每种几何体类型(实体、逻辑体、物理体)都有一个相关联的注册表,注册表包含目前为止构建的该类型的所有对象。注册表将在收到请求时自动删除这些对象,用户不应手动删除几何对象。

2.2.3 选择一个实体

为了创建一个简单的盒子,你只需定义它的名字,以及沿着笛卡尔轴定义它的范围。

Listing 2.4: Creating a box

这段代码创建了一个名为“World”的盒子,其范围是:沿X轴-3.0 m到+3.0 m,沿Y轴-1.0 m到+1.0 m,沿Z轴-1.0 m到+1.0 m。注意到G4Box构造函数将盒子尺寸值的一半作为参数。

创建一个圆柱体也非常简单,为此我们使用G4Tubs类。

Listing 2.5: Creating a cylinder

这段代码创建了一个名为“Tracker”的完整圆柱体,其半径为60 cm,母线长为50 cm(参数hz表示Z方向上长度的一半)。

2.2.4 创建一个逻辑几何体

为了创建一个逻辑几何体,你必须从实体和材料开始。所以,使用前面创建的盒子,你可以通过以下代码创建一个简单的充满氩气(详见2.3 How to Specify Materials in the Detector)的逻辑几何体

将这一逻辑几何体命名为“World”。

类似地,我们用前面的圆柱体创建一个铝制逻辑几何体并命名为“Tracker”。

2.2.5 放置一个几何体

如何放置一个几何体?你可以从一个逻辑几何体开始,然后你可以决定将它放入哪一个已存在的几何体中,接着你可以决定将它的中心放在几何体的什么位置以及如何旋转它。一旦你作出了这些决定,你可以创建一个物理几何体,它是一个几何体的已放置实例(placed instance),且包含了几何体的所有属性。

2.2.6 创建一个物理几何体

你可以从你的逻辑几何体开始创建一个物理几何体。一个物理几何体即为逻辑几何体的一个已放置实例,这个实例必须放置在一个母逻辑几何体中。简单起见,下面的例子中的物理几何体不可旋转:

Listing 2.6: A simple physical volume

这段代码将逻辑几何体trackerLog放置在母逻辑几何体worldLog的原点上,再在X方向上平移一米,trackerLog不可旋转。所得物理几何体命名为“Tracker”,它的拷贝号(copy number)为0。

物理几何体必须放置在一个母几何体中这一规则有一个例外,这个例外是World几何体,它作为最大的已创建几何体,容纳了其余所有几何体,所以World几何体显然不能被其余任一几何体包含。World物理几何体必须使用空母指针通过G4PVPlacement来创建,且被设为不可旋转,并放置在全局坐标系(global coordinate system)的原点。用户手册没有直接给出World物理几何体的创建示例代码,下面根据个人理解给出一个示例:

G4VPhysicalVolume* worldPhys

  = new G4PVPlacement(0,                 // no rotation

                      G4ThreeVector(0.,0.,0.),

                                              // translation positon ()

                      worldLog,         // its logical volume

                      “world”,            // its name

                      0,                     // a null mother pointer

                      False,              // no Boolean operations

                      0);                 // its copy number

一般来说,最好选择一个简单的实体作为World几何体,所以G4Box实体类型在所有的basic example中都被使用。

2.2.7 坐标系与旋转

在GEANT4中,与一个已放置的物理几何体相关的旋转矩阵描述的是该物理几何体的坐标系相对于其母几何体的坐标系的旋转。

一个旋转矩阵的构建通常像CLHEP一样,通过实例化一个单位矩阵然后对它进行旋转变换来实现。在Example B3中演示了这个过程。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有