Geant4學習記錄(一)

2021-10-05 05:25:51 字數 3333 閱讀 5833

物理模型初始化。我認為就是個清單,對粒子出射槍,runaction,eventaction和steppingaction都要進行setuseraction就可以了。

對於b4bactioninitialization::build(),多執行緒模式下,每個執行緒的工作器都使用這種方法,這些工作器的動作類是本地執行緒。

void b4bactioninitialization:

:buildformaster()

對於b4bactioninitialization::buildformaster(),多執行緒模式下,執行動作類例項化為全域性執行緒。

void b4bactioninitialization:

:build()

g4vphysicalvolume* b4detectorconstruction:

:construct()

/*探測器建立類*/

先建立world,再建立輪廓形狀solid,再建立logicalvolume,再建立physicalvolume.

最後總是返回physicalworld.

建立粒子槍,設定預設粒子型別,動能,方向和初始位置。

設定每個事例的列印id。設定分析管理器,利用分析管理器建立直方圖和元組。並在析構函式中將管理器刪除(delete g4analysismanager::instance();)。

在run開始時,建立開啟乙個輸出檔案。

在run結束時,判斷是匯流排程還是區域性執行緒,列印統計所得圖表並寫入輸出檔案中。關閉檔案。

=>寫乙個返回值為g4run型別(b4brundata)的類,這個」值」可以畫好圖表。

在event開始時,將b4brundata重置。fedep和ftracklength是兩個二維陣列(有兩個元素)。所以這時fedep = ,ftracklength = 。

fedep[0]和ftracklength[0]分別是absorber(吸收體)的能量沉積和路程。fedep[1]和ftracklength[1]是gap的…

在event結束時,對fedep[ ]和ftracklength[ ]的元素進行直方圖和元組的填充。

獲取b4brundata中需要的探測器部分對應的體積,能量沉積和步長。

void b4bsteppingaction:

:usersteppingaction

(g4step* step)

判定step前後點之間的volume與absorber還是與gap相等,然後對fedep[ ]和ftracklength[ ]的0列或1列元素進行迭加。

auto rundata = static_cast

(g4runmanager:

:getrunmanager()

->

getnonconstcurrentrun()

);if(volume == detectorconstruction->

getabsorberpv()

)if(volume==detectorconstruction->()

)

規定了對fedep[ ]和ftracklength[ ]中各個元素的操作,包括初始化和直方圖填充。

由runaction建立histogram,建立開啟」b4」輸出檔案。

由eventaction將fedep[ ]和ftracklength[ ]各元素初始化為0。

由steppingaction對fedep[ ]和ftracklength[ ]的第0列或第1列元素更新。

end:

由steppingaction對fedep[ ]和ftracklength[ ]的兩列元素進行n次更新(每次更新一列)

fedep = 			ftracklength =
由eventaction畫出histgram:

(一次endofevent)

fillh1(0, edep1)  /*absorber能量沉積*/

fillh1(1, edep2) /*gap能量沉積*/

fillh1(2, tracklength1) /*absorber路程*/

fillh1(3, tracklength2) /*gap路程*/

(n次endofevent後)

fillh1(0, edep3)	fillh1(1, edep4)	fillh1(2, tracklength3)	fillh1(3, tracklength4)

fillh1(0, edep5) fillh1(1, edep6) fillh1(2, tracklength5) fillh1(3, tracklength6)

fillh1(0, edep7) fillh1(1, edep8) fillh1(2, tracklength7) fillh1(3, tracklength8)

.......

這樣在0,1,2,3號圖中分別都畫好了histogram。由runaction判斷是區域性run還是全域性run,輸出各圖的mean和rms值。

建立exampleb4b可執行程式

=>這樣在b4b資料夾中就生成了b4.root

在b4.root所在的資料夾中開啟乙個命令視窗

$ root -l plothisto.c
執行結果如下:

Geant4教程學習(一)

在前面的帖子中,獲取了geant4的lib和dll檔案,下面就是建立新的工程,學習geant4程式設計 在vs2010環境下 1.在vs2010下建立乙個空的工程名字為geant4test。2.在專案屬性,鏈結器中新增之前編譯過的lib檔案和openinventor 的lib,如果怕麻煩可以從例子的...

geant4構造粒子 Geant4基礎知識

geant4 基礎知識 g4模擬粒子過程 建立一次模擬,在 g4中稱為一次 runrun 建立後,需要對幾何結構 物理過 程進行初始化 初始化完成後就開始模擬過程了,首先發射乙個粒子。在g4 中,發射乙個 或一系列 粒子到所有次級粒子死亡的過程成為一次 event 而每次發射的初始粒子則有粒子發射器...

geant4構造粒子 Geant4基礎知識

可複製 編制,期待你的好評與關注!geant4 基礎知識 g4模擬粒子過程 建立一次模擬,在 g4中稱為一次 runrun 建立後,需要對幾何結構 物理過 程進行初始化 初始化完成後就開始模擬過程了,首先發射乙個粒子。在g4 中,發射乙個 或一系列 粒子到所有次級粒子死亡的過程成為一次 event ...