GEANT4 結構一瞥

2021-01-14 簡齋漫談

GEANT4 是一個基於 C++ 語言的軟體開發工具包(toolkit),用於開發粒子在物質中輸運的模擬計算程序。它提供了粒子在物質中輸運計算所需要的關鍵工具,可應用於核物理與粒子物理、核醫學、核技術應用等多種領域。


設計方法


GEANT4 是在 GEANT3 基礎上重新設計的。 GEANT 源自於 GEometry ANd Tracking, 即「幾何與追蹤」,這二者是粒子輸運計算的關鍵內容。GEANT 第一個版本在 1974 年發布。 GEANT3 於 1982 年發布第一個版本,於 2000 年發布最後一個版本,即 3.21。GEANT4 是重新設計並採用 C++ 語言重新開發的版本,其名字的含義可視為「GEANT 的第四代程序」。


GEANT4 在設計時(1998 年以前)使用的是 Grady Booch 在 20 世紀 90年發展出來的面向對象方法表示方法,即 Booch 圖。如今,Booch 圖已經與其他很多面向對象的設計方法合併,形成了統一的建模標準語言,即 UML。


GEANT4 設計時使用的是「類別」(class category)這個概念來組織軟體架構中的各個類,這是 Booch 圖中的概念,可等同於UML 中的「包」(package)。本文中所提到的「包」,如果沒有特別說明,指的就是 class category。


GEANT4 經歷 19 年的發展,最新發布的是 10.3.2 版本。目前,它的代碼量如下:

在 10.3 版本中共定義了 143 個模塊,可生成 34 個獨立的庫。

從 github 檢出的 10.3 版本,共 493,933 行,其中 source 目錄 412,872 行。


包及其關係


G4 整體上是由初始的17個包加上後續引入的5個包(共計22個包)構成。每個包又是由若干個「模塊」(Module)組成,每個模塊由滿足特定目的的一組類構成。


用 Booch 圖表示的 GEANT4 結構如圖 1 所示:


圖1  GEANT4 設計時的框架結構


所有的包可分為四個優先級別:

依賴的包 – 整體框架結構中都需要的。

核心包 – 實現軟體目標的核心內容。

對外接口的包 – 提供對外部的接口,方便使用以及拓展功能。

可選的包 – 針對非核心需求提供的可選內容。


圖 1 中給出了 GEANT4 設計之初的 16 個最基本的包。根據它們的依賴關係與設計邏輯,可用如下的框圖來表示它們之間的依賴關係(下層是被上層所依賴的):

圖2. GEANT4 16個基本包的依賴關係


如果將最初可選的包及後來拓展出來的 5 個包加進去,全部 22 個包之間的依賴關係如下:

圖3. GEANT4 包的依賴關係


包的詳解


GEANT4 最初包含的 17 個包:

global – 全局包 
包含了整個軟體框架都會用到的那些內容,涵蓋了系統單位、常量、數值和隨機數處理等。 G4 對外部軟體包的調用也通過 global 包來實現。

intercoms – 內部通訊包 
即 inter-communication 的簡寫,即「內部通訊」,可擴展的命令解析包。這是 G4 實現可定製的及依賴於狀態的用戶交互的核心機制。所有 G4 的命令交互都會通過抽象類 `G4UIsession` 來處理。通過這個機制,程式設計師不需要知道具體的圖形界面編程知識,只需要知道如何註冊並實現相應的命令處理過程。

interfaces – 接口包 
涵蓋了構建 G4 應用程式的用戶界面所需要的內容。包括通用的會話(session)類、基本的交互式會話及各種依賴於具體平臺的擴展圖形會話,比如 Qt, Win32, Xt, Wt 等圖形界面的接口。可以將 interfaces 包視為intercoms 包的對外包裝。外部程序調用 G4 需要通過這個包來實現。

graphics_reps – 圖形依賴包 
這個包涵蓋了用於表示 3D 圖形對象所需要的類,包括顏色、文本、可視化屬性等。

materials – 材料包 
這個包反映了自然界存在的東西,材料是由單個元素或多個元素混合而成,元素是由同位素或多種同位素混合而成。最初的材料定義是非結晶型的。從 10.3 開始,則可以自由定義結晶型及帶有分子結構的材料。

geometry – 幾何包 
用於描述粒子在其中輸運的幾何結構。

particles – 粒子包 
用於描述粒子屬性及模擬粒子物質相互作用所必須的內容。

track – 蹤跡包 
用於描述粒子輸運每一「步」(step)的內容。

processes – 作用過程包 
實現粒子輸運及物理過程。

digits_hits – 數位化碰撞包 
用於獲取並描述探測器的輸出內容。

tracking – 追蹤包 
用於追蹤粒子輸運過程的內容。

event – 事件包 
在高能物理中,一個「事件」指的是一組基本粒子與一組探測器相互作用的過程。這個包實現了高能物理中事件的處理內容。

run – 運行包 
在高能物理中,一次「運行」指的是發生的一組事件,它們具有某些相同的條件,比如相同的探測器與初始條件(加速器能量等)。這個包實現了高能物理中運行的處理內容。

persistency – 固化包 
提供了一個接口,用於從 ODMG1 兼容的對象資料庫中存儲和提取模擬的運行、事件、撞擊、數位化及幾何信息,從而讓用戶可在獨立的程序中進行模擬後的分析。

readout – 讀出包 
實現了信號「堆積」(pile-up)的模擬,即用於模擬在數位化模塊中累積的輸出。

visualization – 可視化包 
用於顯示探測器幾何、粒子徑跡、單步追蹤和碰撞,它也提供了與外部圖形系統銜接的可視化驅動接口。

g3tog4 – 幾何轉換包 
可選包,用於在程序中讀取由 GEANT3 所產生的幾何描述。


G4 設計時只有 17 個包:16 個基本包和一個 g3tog4。至 10.3 版本,又逐漸增加了如下的包:

parameterisations – 參數化包 
這個包作為幾何包(geometry)的一個補充,用於實現複雜的參數化幾何設置,比如相似幾何的多重複制,等等。自 3.0.0 版本引入。

analysis – 分析包 
分析包用於將數位化碰撞、讀出等的內容以指定的外部工具輸出。最初,自 3.0.0 版本引入時只有針對 JAS 的接口,在 4.0.0 版本中被去除。隨著 G4模擬結果分析代碼的發展,從 9.5.0 版本中又重新引入了這個包,並逐漸豐富起來,包含了 hbook, root, csv, xml 等接口。

physics_lists – 物理列表包 
作為運行包的補充,預定義了一些較通用的和常用的物理列表。自 8.2.0 版本引入。在 8.2.0 版本以前,在 G4社區曾收集了一批用戶所編寫的物理列表,這些物理列表後來經過梳理,合併到了G4 正式發行版本中。

error_propagation – 誤差傳遞包 
作為追蹤包的補充,追蹤粒子在特定軌跡狀態下誤差的傳遞。自 9.0.0 版本引入。誤差傳遞在 G3 中是基於 EMC (Eurpeon Muon Collaboration) 的公式實現的。

externals – 外部包 
包含了 G4整體所依賴的那些特殊的外部庫。G4最初的依賴 CLHEP庫需要獨立安裝,需要解決版本匹配等問題。自 9.5.0版本引入此包,將匹配版本的 CLHEP 等包合併到 G4 中。


相關焦點

  • 【搞點Geant4】Geant4教程
    方案一 Visual Studio 2019+geant4+Qt安裝方法第一:Geant4的版本選擇了目前最新的geant4_10_06_p03,同時,需要將所有Data files下載下來。 第二:使用目前最新版編譯器,VS2019。之後所用到的ROOT和Qt均與這IDE相關。
  • 科學網—透過石墨烯一瞥精細結構常數
    在眾多數字中,精細結構常數無疑是最神秘的一個。它的含義是超快運動電荷與光線的耦合程度,或者說是電磁相互作用中電荷之間耦合強度的一種度量。 精細結構常數是物理學中一個重要的無量綱數,用希臘字母α表示,它與量子電動力學有著緊密的淵源。
  • 《科學》:透過石墨烯一瞥精細結構常數
    英國科學家最近利用可見光線射過單層的石墨烯(graphene),瞥到一個重要但神秘的宇宙基本常數——精細結構常數(fine structure constant)。相關論文在線發表於《科學》雜誌上。
  • 納米科學:原子內部一瞥!
    納米科學:原子內部一瞥!電子顯微鏡不僅可以像手機相機一樣拍照。電子顯微鏡對結構成像的能力 - 以及成像的成功程度 - 取決於您對結構的理解程度。通常需要複雜的物理計算來充分利用電子顯微鏡的潛力。石墨烯結構的圖像可以用這些電子。「一段時間以來,研究人員已經意識到「能量過濾透射電子顯微鏡 」(EFTEM)的原理。EFTEM可用於創建特定種類原子的非常特定的可視化,同時阻擋其他原子。因此,現在經常使用它來分析微觀樣品的化學成分。「射穿樣品的電子可以激發樣品的原子」,StefanLffler解釋道。「這會耗費能量,所以當從樣品中出現的電子出現時,它們比進入它時更慢。
  • QQ空間置頂的「溫柔仙句」:初見是驚鴻一瞥,怦然心動是你
    QQ空間置頂的「溫柔仙句」:初見是驚鴻一瞥,怦然心動是你 4、繞過江山錯落才發現你,是人間星火。 6、初見是驚鴻一瞥 怦然心動是你。 7、我會帶著月亮的溫柔和星星的光亮順著銀河進入你的夢裡。 8、見過這世間的喜樂紛至沓來,也願你披著榮耀緩緩歸來。
  • 訪客量暴增的QQ「溫柔仙句」,嘆這驚鴻一瞥 誤入眉眼 歡喜多時
    訪客量暴增的QQ「溫柔仙句」,嘆這驚鴻一瞥 誤入眉眼 歡喜多時。 4. 人生雖然艱難,生命畢竟可貴。莊子認為人生應該像鯤鵬展翅,扶搖而上九萬裡,絕雲氣,負青天!
  • Geant4入門講解篇-1
    模擬的意義在於通過計算機平臺工具去模仿真實的物理實際場景,我們在做實驗的時候想得到怎樣的信息,那麼我們同樣想在Geant4中得到同樣的信息。當然了,模擬的結果是不可能與實際實驗一模一樣的(越近似越準確),但是做定性的考量是沒有問題的,比如通過Geant4模擬的手段,你可以輕易比較出一斤重的鐵比一斤重的棉花更能有效地捕獲吸收輻射粒子= =。那麼,讓我們從B1例子出發,探討核輻射探測器的Geant4模擬。
  • 度娘都搜不到的溫柔仙句:神武道驚鴻一瞥,一念橋逢魔遇仙
    度娘都搜不到的溫柔仙句:神武道驚鴻一瞥,一念橋逢魔遇仙 4.懶散度日的感覺就像吻一樣,只有偷來的才甜美。
  • 那些驚鴻一瞥的神仙網名 具有特殊含義
    那些驚鴻一瞥的神仙網名 具有特殊含義
  • 願「仙鶴訪石」不只是驚鴻一瞥
    白鶴給予了石獅驚鴻一瞥,那是靈犀一瞥。只願來往莫相猜,年年還復來! (吾提)
  • 「一瞥驚鴻」的溫柔仙句:你是踩入星光,落入我夢境的一袋幻想
    「一瞥驚鴻」的溫柔仙句:你是踩入星光,落入我夢境的一袋幻想 1.你是踩入星光 落入我夢境的一袋幻想 2.一覺醒來以為自己長高了 原來是被子蓋橫了。
  • 「一瞥驚鴻」的溫柔仙句:月是人間散客,卿是人間絕色,亦是人間難得
    「一瞥驚鴻」的溫柔仙句:月是人間散客,卿是人間絕色,亦是人間難得 4.幸好我是個小胖子,難過的時候還可以摸摸肚子。
  • 克卜勒太空望遠鏡的最後一瞥,定格在地球流浪的方向
    克卜勒望遠鏡最後一瞥美國宇航局的艾莉森·霍克斯(Alison Hawkes)寫道:「克卜勒在最後一次觀測活動中,(4)2017年,發現「超級地球」LHS 1140b,它的地面溫度與地球差不多,科學家已經確認有氧氣,還沒確認是否有水,它距離地球只有39光年。據NASA稱,克卜勒太空望遠鏡傳回的資料都在檔案館中,並且可以公開查閱。
  • 「驚鴻一瞥」的溫柔仙句:我攜星辰贈予你,仍覺星辰不及你
    「驚鴻一瞥」的溫柔仙句:我攜星辰贈予你,仍覺星辰不及你 1、今天的不開心到此為止 明天依舊萬丈光芒 2、光陰的齒輪總是微妙 三月裡江南的瓦磚 3、夏天,有梅子味的晚霞和兩三顆啤酒味的星,
  • 研究:通過簡單一瞥能判斷一個人的性取向
    一項新的研究發現,也許用不了1秒鐘,人們便能夠通過簡單一瞥準確判斷出一個人的性取向。這一發現建立在一個逐漸成熟的理論之上,即下意識的思維判斷能夠對人的行為產生更多的指引,而這是人們之前未曾想到的。      人類非常善於對他人作出迅速判斷。
  • 臺北古董市場「一瞥」
    臺灣旅遊,自然惦記這一方的古董市場,然行色匆匆,無暇做深入考察,只能是「一瞥」而已。最先觸到臺灣「古董市場」的話題,是在臺北故宮博物院,與一位在陶瓷館工作的朋友聊起市場瓷器的價格,他搖頭輕嘆:「今天的臺灣市場,已經找不到像樣的東西,除了有熟人帶領到賣家看貨,價錢也高不可攀。」承他熱心指點,我先到了臺北「大路貨」集中的八德路。
  • 「一瞥驚鴻」的溫柔仙句:我的夜空裡本無星辰,遇見你之後星河長明
    「一瞥驚鴻」的溫柔仙句:我的夜空裡本無星辰,遇見你之後星河長明 1、你總說那年桃花的驚豔,在我眼裡倒也不及你的一眼萬年。 2、這人間煙火,風花雪月太好看,愛恨情仇都浪漫。
  • 願「仙鶴訪石」不只是驚鴻一瞥|西伯利亞|白鶴|溼地公園|石獅
    白鶴給予了石獅驚鴻一瞥,那是靈犀一瞥。只願來往莫相猜,年年還復來!(吾提)—— 分享新聞,還能獲得積分兌換好禮哦 ——
  • 「一瞥驚鴻」的溫柔仙句:夏天真好,溼潤的風混著透明的雨,穿過樹梢
    「一瞥驚鴻」的溫柔仙句:夏天真好,溼潤的風混著透明的雨,穿過樹梢
  • 「一瞥驚鴻」的溫柔仙句:林深時見鹿,海藍時見鯨,夢醒時見你
    「一瞥驚鴻」的溫柔仙句:林深時見鹿,海藍時見鯨,夢醒時見你 1、你是闖進我平生八九遺憾心事裡,唯一的美滿。 2、希望擁有一個在我想打退堂鼓的時候悄悄把鼓藏起來的人。