回答某一個(gè)同學(xué)Geant4問(wèn)題

文|梁佐佐

一:

要想熟練得使用Geant4,C++的基本知識(shí)是要掌握的,其學(xué)習(xí)參考教材可任意選,剛?cè)腴T(mén)的同學(xué)推薦比較薄的譚浩強(qiáng)版本《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》,網(wǎng)上資源也豐富,比如:https://blog.csdn.net/zdh1995/article/details/78215863,一個(gè)星期左右就能把基礎(chǔ)知識(shí)了解的差不多,然后再買(mǎi)本C++ primer(白皮的)有時(shí)間就慢慢看。在C++中,類(lèi)/對(duì)象可以看作是一種帶有很多自定義函數(shù)的數(shù)據(jù)類(lèi)型(像int,double等),這個(gè)概念本身簡(jiǎn)潔,但需要啃一啃C++基礎(chǔ)知識(shí)才印象深刻。類(lèi)是一種特殊的類(lèi)型,帶有成員函數(shù),成員變量(某一C++大佬是這么官方解釋的)。

好啦,讓我們回到要解決的問(wèn)題本身,“為什么我在B1SteppingAction.hh中已經(jīng)定義了fEventAction這個(gè)變量,但卻無(wú)法在B1SteppingAction.cc中正常使用fEventAction ->AddEdep()函數(shù)?”。

解決方案是:

1. ? 在B1SteppingAction.hh中定義fEventAction這個(gè)變量,注意fEventAction的數(shù)據(jù)類(lèi)型是B1EventAction;

2. ? ? 在直接定義fEventAction這個(gè)對(duì)象指針的類(lèi)(B1EventAction.hh)中,聲明AddEdep()這個(gè)函數(shù)。

用C++的語(yǔ)法解釋分析這個(gè)問(wèn)題,答案是:

1. fEventAction->AddEdep(),表明fEventAction是某一個(gè)對(duì)象(B1EventAction)的指針,而AddEdep()是該對(duì)象中聲明的一個(gè)public函數(shù);

2.B1SteppingAction.hh中聲明fEventAction時(shí),一定要先囊括B1EventAction這個(gè)對(duì)象/類(lèi),然后在private:中定義fEventAction,即B1EventAction*fEventAction;

3.? 在B1EventAction.hh中,聲明定義AddEdep()這個(gè)函數(shù)。

Geant4中具體的代碼表現(xiàn)為:


總結(jié)來(lái)看這個(gè)問(wèn)題:1)在調(diào)用某個(gè)對(duì)象指針的函數(shù)功能時(shí),確保該對(duì)象指針的聲明是合理的;2)G4中,SteppingAction中可以調(diào)用EventAction中的函數(shù)或變量,而EventAction中可以調(diào)用RunAction中的函數(shù)變量,即細(xì)節(jié)上的信息總是統(tǒng)計(jì)給上一級(jí)的沒(méi)那么細(xì)節(jié)的目標(biāo),具體的調(diào)用關(guān)系參見(jiàn)往期教程。

另外,Geant4.9.6版本與Geant4.10往后的版本相比較,最明顯的改動(dòng)是4.10后的“多線(xiàn)程RunManager”和4.10后的#include"G4SystemOfUnits.hh"。

二:

Geant4的學(xué)習(xí)入門(mén),兩三個(gè)月是需要的,熟練掌握B1例子至關(guān)重要,包括其中涉及的基本C++語(yǔ)法。然后過(guò)了這個(gè)階段后,就需要考慮怎樣發(fā)揮主觀能動(dòng)性去干實(shí)際的項(xiàng)目?通常的途徑包括:1)找學(xué)長(zhǎng)學(xué)姐要往屆的例子;2)學(xué)會(huì)谷歌檢索(關(guān)鍵詞當(dāng)然得英文),此公眾號(hào)后臺(tái)回復(fù)“學(xué)術(shù)”即可獲得教程,真是無(wú)比感謝那些無(wú)償作技術(shù)分享的人;3)多看Geant4自帶的例子。

ROOT同樣是開(kāi)源的數(shù)據(jù)分析工具,題主目前嘗試用ROOT畫(huà)一遍常見(jiàn)的SCI論文數(shù)據(jù)插圖,并將于今年年底前發(fā)送全部例子和代碼。ROOT的學(xué)習(xí)套路與G4一模一樣,大家堅(jiān)持。


喜歡的話(huà),分享一下吧~^o^~
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 307、setValue:forKey和setObject:forKey的區(qū)別是什么? 答:1, setObjec...
    AlanGe閱讀 1,722評(píng)論 0 1
  • 史上最全的iOS面試題及答案 iOS面試小貼士———————————————回答好下面的足夠了----------...
    Style_偉閱讀 2,576評(píng)論 0 35
  • 蘋(píng)果官方文檔翻譯 《Objective-C語(yǔ)言編程》(Programming with Objective-C) ...
    fever105閱讀 26,326評(píng)論 19 129
  • 讀過(guò)那么多序言,還是最喜歡黑塞在《德米安》里的這一篇序。很真,越讀越喜歡。 序里寫(xiě)道: 「每個(gè)人的生命代表一條通往...
    姑娘你很有前途耶閱讀 403評(píng)論 0 0
  • 2018-09-22 事件:與金六董事會(huì)的程遠(yuǎn)溝通,鼓勵(lì)大家都說(shuō)真話(huà);彼此坦誠(chéng)表達(dá)。 感受: 我的感受:平靜、輕松...
    老龍_8457閱讀 107評(píng)論 0 0

友情鏈接更多精彩內(nèi)容