geant4基礎(chǔ)學(xué)習(xí)知識(shí)_第1頁(yè)
geant4基礎(chǔ)學(xué)習(xí)知識(shí)_第2頁(yè)
geant4基礎(chǔ)學(xué)習(xí)知識(shí)_第3頁(yè)
geant4基礎(chǔ)學(xué)習(xí)知識(shí)_第4頁(yè)
geant4基礎(chǔ)學(xué)習(xí)知識(shí)_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Geant4基礎(chǔ)知識(shí)G4模擬粒子過(guò)程:建立一次模擬,在 G4中稱(chēng)為一次Run ; Run建立后,需要對(duì)幾何結(jié)構(gòu)、物 理過(guò)程進(jìn)行初始化;初始化完成后就開(kāi)始模擬過(guò)程了,首先發(fā)射一個(gè)粒子。在G4中,發(fā)射一個(gè)(或一系列)粒子到所有次級(jí)粒子死亡的過(guò)程成為一次Event。而每次發(fā)射的初始粒子則有粒子發(fā)射器進(jìn)行控制。而在每一個(gè)event過(guò)程中,粒 子與材料反應(yīng)后會(huì)可能生成多個(gè)次級(jí)粒子,每個(gè)粒子都會(huì)有一條徑跡,稱(chēng)之為track ;而每一個(gè)粒子(初始的或次級(jí)的)的徑跡又是由很多步組成的,稱(chēng)之為 step oG4模擬的基本算法:A Run Start -初始化物理模型/幾何模型- An Event Start -

2、 調(diào)用粒子發(fā)射器發(fā)射粒子- A Track Start A Step Start A Step End Next Step Start基礎(chǔ)知識(shí) All Step End- A Track End- Next Track Start- - All Track End- An Event End - Next Event Start- - All Event End(All Primaries Shot) - A Run End - Next Run Start- 1) main()中應(yīng)該包括的內(nèi)容Geant4是一個(gè)探測(cè)器模擬工具,但它對(duì)于某個(gè)特定的模擬程序沒(méi)有固定的main()函數(shù),用戶(hù)在建立模

3、擬程序的過(guò)程中需要提供自己的main()函數(shù).一個(gè)最基本的main()函數(shù)需要包括以下幾個(gè)方面:G4RunManager( 模擬整個(gè)過(guò)程)G4VUserDetectorConstruction(定義探測(cè)器材料,幾何形狀,靈敏區(qū)和基礎(chǔ)知識(shí)讀出方案)G4VUserPhysicsList( 定義粒子種類(lèi)和物理過(guò)程,還有截?cái)鄥?shù))G4VUserPrimaryGeneratorAction( 定義了源粒子的種類(lèi),能量,出射方向等)一個(gè)最簡(jiǎn)單的main()函數(shù)如下:#include G4RunManager.hh”#include G4UImanager.hh”#include ExN01Detector

4、Construction.hh”#include ExN01PhysicsList.hh”#include ExN01PrimaryGeneratorAction.hhint main()/ Construct the default run managerG4RunManager* runManager = new G4RunManager;基礎(chǔ)知識(shí)/ set mandatory initialization classesrunManager-SetUserInitialization(newExN01DetectorConstruction);runManager-SetUserInit

5、ialization(new ExN01PhysicsList);/ set mandatory user action classrunManager-SetUserAction(new ExN01PrimaryGeneratorAction);/ Initialize G4 kernelrunManager-Initialize();/ get the pointer to the UI manager and set verbositiesG4UImanager* UI = G4UImanager:GetUIpointer();UI-ApplyCommand(/run/verbose 1

6、);UI-ApplyCommand(/event/verbose 1);UI-ApplyCommand(/tracking/verbose 1);基礎(chǔ)知識(shí)/ start a runint numberOfEvent = 3;runManager-BeamOn(numberOfEvent);/ job terminationdelete runManager;return 0;main()首先生成一個(gè) G4RunManager 類(lèi),這個(gè)類(lèi)是在主程序中用以初始化模擬信息,用來(lái)連接子程序,連接方式是通過(guò)Set函數(shù)來(lái)完成。例如:BDetectorConstruction* detector = new

7、 BDetectorConstruction;runManager-SetUserInitialization(detector);先構(gòu)造一個(gè)探測(cè)器幾何,再用 SET函數(shù)初始化。用new申請(qǐng)的空間,在程序完成后需要釋放空間,否則出錯(cuò)。注意: GEANT4中,在runManager上面說(shuō)明的其他類(lèi)會(huì)自動(dòng)釋放。所以不需要一一釋放。其 他類(lèi)按照重要性分為強(qiáng)制類(lèi)和可選類(lèi)。 其中幾何結(jié)構(gòu)類(lèi)基礎(chǔ)知識(shí)(DetectorConstruction )、物理設(shè)定類(lèi)(PhysicsList )、源描述類(lèi)(PrimaryGenerator )都屬于強(qiáng)制類(lèi),缺少任一個(gè)程序都無(wú)法運(yùn)行。而事件處理類(lèi)(EventAction

8、 )、步數(shù)據(jù)處理類(lèi)( SteppingAction )、徑跡處理類(lèi) (TrackingAction )、運(yùn)行處理類(lèi)(RunAction )都屬于可選類(lèi),用戶(hù)可以通過(guò)設(shè)定這些類(lèi)來(lái)獲取感興趣的數(shù)據(jù),可以按照自己的需要添力口。包含強(qiáng)制類(lèi)之后程序就可以運(yùn)行了,但只能檢驗(yàn)幾何結(jié)構(gòu)的完備性,所以為了獲得數(shù)據(jù)必須設(shè)定可選類(lèi)。1. Geant4的類(lèi)結(jié)構(gòu)Geant4程序代碼是根據(jù)這個(gè)類(lèi)結(jié)構(gòu)建立起來(lái)的,類(lèi)結(jié)構(gòu)如下圖所示.下面就是Geant4中每個(gè)類(lèi)的簡(jiǎn)單說(shuō)明.基礎(chǔ)知識(shí)Geant4Run 和 Event這些類(lèi)與模擬事件相關(guān),產(chǎn)生次級(jí)粒子,為粒子徑跡模擬器提供粒子.Tracking 和 Track根據(jù)粒子在探測(cè)器材料

9、中的物理過(guò)程模擬粒子運(yùn)行的軌跡,給出粒子特定時(shí)間段在空間的位置,或者粒子空間時(shí)間的分布.Geometry, Magnetic Field 和 CAD-Interface基礎(chǔ)知識(shí)這三個(gè)類(lèi)就是用來(lái)描述探測(cè)器幾何結(jié)構(gòu)和探測(cè)器中電磁場(chǎng)的分布.為了使探測(cè)器幾何結(jié)構(gòu)可以在CAD系統(tǒng)中進(jìn)行修改,Geant4的幾何體模型完全與ISO STEP標(biāo)準(zhǔn)一致.將來(lái)Geant4中幾何結(jié)構(gòu)的設(shè)計(jì)將從程序設(shè)計(jì)中獨(dú)立出來(lái) .面 向?qū)ο笤O(shè)計(jì)的方法可以讓用戶(hù)在不影響程序其他部分的同時(shí)改變幾何參數(shù)和場(chǎng).Particle Definition 和 Matter這兩個(gè)類(lèi)用于定義粒子和探測(cè)器材料.Physics它提供了粒子與探測(cè)器材料相

10、互作用時(shí)所發(fā)生物理過(guò)程的模型,允許用戶(hù)為每次反應(yīng)或每個(gè)反應(yīng)道添加物理模型 .用戶(hù)根據(jù)粒子的種類(lèi),探測(cè)器材料和 能量范圍選擇不同的物理模型.Geant4有電磁物理過(guò)程和強(qiáng)子物理過(guò)程模型 , 同時(shí)也提供了散射截面數(shù)據(jù)庫(kù).Hits 和 Digitization這個(gè)兩個(gè)類(lèi)用于對(duì)用戶(hù)定義的靈敏區(qū)內(nèi)的響應(yīng)進(jìn)行采樣和分析.Visualization它顯示了探測(cè)器幾何形狀,粒子軌跡和碰撞過(guò)程.由于采用了面向?qū)ο笤O(shè) 計(jì)技術(shù)來(lái)設(shè)計(jì)可視化部分,這允許用戶(hù)獨(dú)立開(kāi)發(fā)可視化工具,如:OpenGL和 OpenInventor( 為 X11 和 Windows 設(shè)計(jì)),DAWN, Postscript(via DAWN)和

11、VRML.基礎(chǔ)知識(shí)Interfaces支持可視化用戶(hù)界面以及和外加程序的交流(OODBMS, reconstruction User Verbose output class,定義了rerbos讓y 變量;Run manager ,定義了一個(gè)運(yùn)行管理器 runManager ;User Initialization cla sses (mandatory) , 設(shè)置兩個(gè)強(qiáng)制類(lèi)ExN02DetectorConstruction 和 ExN02PhysicsList ;User Action classes ,設(shè)置用戶(hù)干涉!ExN02PrimaryGeneratorAction、ExN02RunA

12、ction 、ExN02EventAction 和 ExN02SteppingAction ;Initialize G4 kernel,runMar-ageirialize(),初GEANT4 內(nèi)核。構(gòu)造探測(cè)器,生成物理過(guò)程,計(jì)算截面以及其他;Get the pointer to the User Interface managerU| mWS的指針;batch mode ,定義了批處理模式;interactive mode : define visualization and UI terminal定義了交互模式的可視化和UI終端;.構(gòu)建模型:基礎(chǔ)知識(shí)在Geant4中首先要建立一個(gè)最大的盒子

13、,稱(chēng)為 World Volume ,然后往這個(gè) 大盒子里面放各種各樣的小盒子(部件),然后每個(gè)小盒子 (部件) 里面還可 以放更小的盒子 (零件),放入的小盒子將自動(dòng)代替大盒子原有部分。在 Geant4中,將大盒子稱(chēng)為 Mother Volume (母體),小盒子稱(chēng)為 Daughter Volume (子體)。除了 World Volume 之外,每個(gè) Volume (體)都必須且 只能有一個(gè)母體,但可以沒(méi)有子體,也可以有多個(gè)子體。Geant4的這種盒子模 型的要求是:“不交不超”。Geant4中每個(gè)這樣的盒子的安放又分為兩步。第一步是構(gòu)建盒子,稱(chēng)為L(zhǎng)ogical Volume (邏輯體);第

14、二步是將盒子擺放到正確位置,變?yōu)?Physical Volume (物理體)。構(gòu)建盒子又分為兩步,第一步是確定盒子形狀,第二步是確定盒子的材料等屬性。形狀在Geant4中被稱(chēng)為Solid。在Geant4 中提供了多種固有的形狀,如球形、長(zhǎng)方體、錐體等,可以在$G4INSTALL/source/geometry/solids 里 面查找。 用戶(hù)也可以通過(guò) G4VSolid類(lèi)構(gòu)建自己的形狀,參見(jiàn):$G4INSTALL/source/geometry/management/include /G4VSolid.hh。此外,對(duì)于一些復(fù)雜的形狀,用戶(hù)也可以利用基本形狀通過(guò)交并補(bǔ)等布爾運(yùn)算方 式 完 成,

15、布 爾 運(yùn) 算 的 方 式 請(qǐng) 參 考 $G4INSTALL/source/geometry/solids/Boolean。確定了盒子形狀后,就是設(shè)置盒子的材料、磁場(chǎng)等屬性。這些屬性的設(shè)置通過(guò)10基礎(chǔ)知識(shí)G4LogicalVolume類(lèi)來(lái)完成,設(shè)置方法如下:G4LogicalVolume(G4VSolid* pSolid, / 形狀G4Material* pMaterial, / 材料const G4String& name, /邏輯體名字G4FieldManager* pFieldMgr=0, / 場(chǎng)管理G4VSensitiveDetector* pSDetector=0, / 是否 SD

16、探測(cè)器G4UserLimits* pULimits=0, / 用戶(hù)限制G4bool optimise=true); /是否優(yōu)化盒子造完了就該擺放盒子了。擺放盒子也有兩種方法,一種是直接構(gòu)建物理體,另一種是指定擺放方法。直接構(gòu)建物理體是通過(guò) G4VPhysicalVolume 類(lèi),其定義方法如下:G4VPhysicalVolume(G4RotationMatrix *pRot, /旋轉(zhuǎn)方式const G4ThreeVector &tlate, / 擺放坐標(biāo)const G4String &pName, /物理體名字G4LogicalVolume *pLogical, /對(duì)應(yīng)的邏輯體11基礎(chǔ)知識(shí)G4

17、VPhysicalVolume *pMother); / 母體如果pMother=0 就表明這個(gè)體是一個(gè) World Volume , World Volume 必須 且只能有一個(gè)。在實(shí)際應(yīng)用中,我們通常采用指定擺放方法的方式來(lái)完成物理體的構(gòu)建。指定擺 放方法是通過(guò) G4PVPlacement 類(lèi)完 成。G4PVPlacement 類(lèi)是G4VPhysicalVolume 的派生類(lèi),該類(lèi)提供了多種方法描述Logical Volume的擺放方法。具體可以參考:$G4INSTALL/source/geometry/volumes/include/G4PVPlacement.hh 。用這種方法可以建立

18、具有相同 Logical Volume的物理體,同時(shí)給可以給每個(gè) 物理體分配一個(gè)編號(hào),以便區(qū)分具有相同Logical Volume 的物理體。這些編號(hào) 在UserSteppingAction 等類(lèi)中處理數(shù)據(jù)時(shí)有時(shí)會(huì)非常有用處。需要注意的是,在Geant4中擺放坐標(biāo)都是指的相對(duì)坐標(biāo),是子體中心相對(duì)母體 中心的坐標(biāo)。而 World Volume 建立后就等于建立了幾何模型的絕對(duì)坐標(biāo)系。.定義材料1)基本概念自然界中,材料(化合物,混合物)一般是由元素組成,而元素由同位素組成.Geant4中有三個(gè)類(lèi)用來(lái)定義探測(cè)器材料的12基礎(chǔ)知識(shí)類(lèi)G4Element描述了原子屬性:原子量,原子核中質(zhì)子數(shù),原子質(zhì)量,

19、殼層 能量,還有每個(gè)原子的散射截面等.類(lèi)G4Material描述了材料的宏觀(guān)屬性:密度,狀態(tài),溫度,壓強(qiáng),還有輻射 長(zhǎng)度,平均自由程,dE/dx等.2)定義單質(zhì)材料如下例,給出材料名稱(chēng),密度,摩爾質(zhì)量和原子量,定義了液態(tài)氮./G4double density =1.390*g/cm3;G4double a = 39.95*g/mole;G4Material* lAr = new G4Material(name=liquidArgon, z=18., a, density);/這就可以用來(lái)確定所定義的邏輯塊的材料:G4LogicalVolume* myLbox = new G4LogicalVo

20、lume(abox, lAr, Lbox, 0, 0, 0);13基礎(chǔ)知識(shí)3)定義化合物如例,定義水(H2O):/a = 1.01*g/mole;G4Element* elH = new G4Element(name=Hydrogen, symbol=H, z=1, a);a = 16.00*g/mole;G4Element* elO = new G4Element(Oxygen, O, z=8, a);density=1.0*g/cm3;G4Material* H2O = new G4Material(water, density, ncomponents=2);H2O-AddElement

21、(elH, natoms=2);H2O-AddElement(elO, natoms=1);14基礎(chǔ)知識(shí)/4)定義混合物如例,定義空氣(Air):/a = 14.01*g/mole;G4Element* elN = new G4Element(Nitrogen, N, z=7, a);a = 16.0*g/mole;G4Element* elO = new G4Element(Oxygen, O, z=8., a);density = 1.290*g/cm3;G4Material* Air = new G4Material(Air, density, ncomponents=2);Air-Ad

22、dElement(elN, fractionmass=70*perCent);Air-AddElement(elO, fractionmass=30*perCent);15基礎(chǔ)知識(shí)/在/home/username/geant4.7.0/examples/novice/N03/ExN03DetectorConstruction.cc文件中介紹了所有定義材料的方法.指定粒子一般概念Geant4能夠模擬多種粒子.基本粒子:電子,質(zhì)子,和gamma 等.短壽命的共振粒子:媒質(zhì)介子和delta重子.核子:笊,alpha粒子和重離子等.夸克,D夸克和膠子.G4ParticleDefinition類(lèi)提供了粒

23、子的定義,而且每種粒子都有自己的類(lèi)粒子主要分為6個(gè)大類(lèi):輕子(lepton)介子(meson) 強(qiáng)子(baryon)16基礎(chǔ)知識(shí)波色子(boson)短壽命粒子(shortlived)離子(ion)G4ParticleDefinition類(lèi)包含了單個(gè)粒子的屬性:名稱(chēng),質(zhì)量,帶電電荷,自旋等.其中大部分的屬性都不可修改,除非重新建立庫(kù).Geant4定義了上百 種粒子用于不同的物理過(guò)程,在一般應(yīng)用中,用戶(hù)不需要自己定義粒子.粒子在 連接的過(guò)程中注冊(cè)啟用了,用戶(hù)不須要(也不能)自行執(zhí)行注冊(cè)粒子.2)指定粒子和物理過(guò)程G4VUserPhysicsList類(lèi)讓用戶(hù)可以指定粒子以及它們的物理過(guò)程,用戶(hù)還可以

24、指定截?cái)鄥?shù).一個(gè)用戶(hù)從G4VUserPhysicsList中創(chuàng)建自己的類(lèi)要利用以下幾個(gè)步驟:ConstructParticle():調(diào)用粒子ConstructPhysics():調(diào)用粒子的物理過(guò)程SetCuts():設(shè)置粒子的截?cái)嘀涤脩?hù)利用ConstructParticle()來(lái)調(diào)用所需要的粒子的函數(shù),如用戶(hù)需要質(zhì)子和geantino,代碼如下:/17基礎(chǔ)知識(shí)/void ExN01PhysicsList:ConstructParticle()(G4Proton二ProtonDefinition();G4Geantino二GeantinoDefinition();/ /Geant4中預(yù)先定義的

25、粒子有100多個(gè),用戶(hù)不可能用這種方法來(lái)調(diào)用每一 個(gè)粒子的函數(shù),Geant4中有一些類(lèi)可以讓用戶(hù)調(diào)用一類(lèi)粒子,相對(duì)于6個(gè)粒子大 類(lèi),總共有6個(gè)類(lèi)來(lái)調(diào)用這批粒子.他們是:G4BosonConstructorG4LeptonConstructorG4MesonConstructorG4BarionConstructorG4IonConstructor18基礎(chǔ)知識(shí)G4ShortlivedConstructor使用方法如下例:/void ExN04PhysicsList:ConstructLeptons()(/Construct all leptonsG4LeptonConstructor pCons

26、tructor;pConstructor.ConstructorParticle();/3)設(shè)定截?cái)嘀涤脩?hù)必須為每個(gè)粒子設(shè)定截?cái)嘀?所謂截?cái)嘀?就是程序在粒子輸運(yùn)距離 為截?cái)嘀禃r(shí)記錄粒子位置,能量的信息.在一般的模擬程序中,用戶(hù)可以為所有 的粒子設(shè)定一個(gè)截?cái)嘀?如下:/19基礎(chǔ)知識(shí)/void ExN04PhysicsList:SetCuts()(/ the G4VUserPhysicsList:SetCutsWithDefault()methodsets/ the default cut value for all particle typesSetCutsWithDefault();/系統(tǒng)默

27、認(rèn)的截?cái)嘀禐?*mm,當(dāng)然用戶(hù)可以為自己調(diào)用的粒子和物理過(guò)程 設(shè)定不用的默認(rèn)值.如下:/ExN04PhysicsList:ExN04PhysicsList():G4VUserPhysicsList()(/ default cut value (1.0*mm)20基礎(chǔ)知識(shí)defaultCutValue = 1*mm;)/用戶(hù)可以為gamma射線(xiàn),電子,正電子,或者為不用的幾何區(qū)域設(shè)定不同的截 斷值.這種情況下,由于Geant4的物理過(guò)程(特別是計(jì)算能量損失的物理過(guò)程) 是根據(jù)特定的截?cái)嘀稻帉?xiě)的,它們輸出就會(huì)改變,所以用戶(hù)應(yīng)I特別小心.為不同粒子設(shè)定不同截?cái)嘀档睦尤缦拢?void ExN03Ph

28、ysicsList:SetCuts()(/ set cut values for gamma at first and for e- second and next for e+,/ because some processes for e+/e- need cut values forgammaSetCutValue(defaultCutValue, gamma);21基礎(chǔ)知識(shí)SetCutValue(defaultCutValue, e-);SetCutValue(defaultCutValue, e+);/ set cut value for proton and anti_proton

29、before all other hadronsvalue for/ because some processes for hadrons need cut proto/anti_protonSetCutValue(cutForProton, proton);SetCutValue(cutForProton, anti_proton);/ set cut value for other particlesSetCutValueForOthers(defaultCutValue);/.指定物理過(guò)程22基礎(chǔ)知識(shí)1)物理過(guò)程物理過(guò)程描述了粒子與材料的相互作用.Geant4中提供了電磁,強(qiáng)子和其他的反

30、應(yīng)過(guò)程.有7個(gè)物理過(guò)程大類(lèi):電磁物理過(guò)程(electromagnetic)強(qiáng)子物理過(guò)程(hadronic)輸運(yùn)過(guò)程(transportation)衰減(decay)光學(xué)過(guò)程(optical)光輕子-強(qiáng)子過(guò)程(photolepton_hadron)參數(shù)化過(guò)程(parameterisation)G4VProcess是最基本的物理過(guò)程的類(lèi),每一個(gè)物理過(guò)程有三個(gè)DoIt方式來(lái)描 述:AtRestDoItAlongStepDoItPostStepDoIt還有三個(gè)響應(yīng)方式:23基礎(chǔ)知識(shí)AtRestGetPhysicallnteractionLengthAlongStepGetPhysicallnterac

31、tionLengthPostStepGetPhysicallnteractionLength下面給出了用于單個(gè)物理過(guò)程的基本的類(lèi):G4VAtRestProcess ( 僅適合于A(yíng)tRestDoIt方式的物理過(guò)程)G4VContinuousProcess ( 僅適合于A(yíng)longStepDoIt 方式的物理過(guò)程)G4VDiscreteProcess ( 僅適合于PostStepDoIt 方式的物理過(guò)程)另外4個(gè)類(lèi)(如G4VContinuousDiscreteProcess)用于復(fù)雜的物理過(guò)程.2)指定物理過(guò)程用戶(hù)通過(guò)G4VUserPhysicsList來(lái)調(diào)用模擬程序中的粒子以及它們的物理過(guò)程.用戶(hù)

32、通過(guò)ConstructPhysics()方式利用G4VUserPhysicsList 為每一個(gè)所調(diào)用的粒子創(chuàng)建自己的物理過(guò)程類(lèi).i)添加輸運(yùn)方式如果沒(méi)有添加粒子的輸運(yùn)方式,程序就不能描述粒子在時(shí)空的輸運(yùn),以及 不能記錄粒子輸運(yùn)過(guò)程中的軌跡,所以用戶(hù)就必須為所有的粒子調(diào)用G4Transportation. 如下:24基礎(chǔ)知識(shí)/void G4VUserPhysicsList:AddTransportation()/ create G4TransportationG4Transportation*theTransportationProcessnewG4Transportation();/ loop

33、 over all particles in G4ParticleTable and register the/ transportation processtheParticleIterator-reset();while(*theParticleIterator)()G4ParticleDefinition*particletheParticleIterator-value();G4ProcessManager*pmanagerparticle-GetProcessManager();25基礎(chǔ)知識(shí)/ adds transportation to all particles except s

34、hortlived particlesif (!particle-IsShortLived()pmanager - AddProcess(theTransportationProcess);/ set ordering to the first for AlongStepDoItpmanager-SetProcessOrderingToFirst(theTransportationProcess,idxAlongStep);/ii)調(diào)用物理過(guò)程以ConstructProcess() 方式為G4Geantino 類(lèi)調(diào)用輸運(yùn)物理過(guò)程如下:26基礎(chǔ)知識(shí)/void ExN01PhysicsList:C

35、onstructProcess()(/ Define transportation processAddTransportation();/為gamma射線(xiàn)添加物理過(guò)程如下:/void MyPhysicsList:ConstructProcess()(/ Define transportation processAddTransportation();27基礎(chǔ)知識(shí)/ electromagnetic processConstructEM();)void MyPhysicsList:ConstructEM()(/ Get the process manager for gammaG4Particl

36、eDefinition*particleG4Gamma:GammaDefinition();G4ProcessManager* pmanager = particle-GetProcessManager();/ Construct process for gammaG4PhotoElectricEffect* thePhotoElectricEffect= newG4PhotoElectricEffect();G4ComptonScattering* theComptonScattering= newG4ComptonScattering();G4GammaConversion* theGam

37、maConversion= newG4GammaConversion();28基礎(chǔ)知識(shí)/ Register process to gammas process managerpmanager-AddDiscreteProcess(thePhotoElectricEffect);pmanager-AddDiscreteProcess(theComptonScattering);pmanager-AddDiscreteProcess(theGammaConversion);/.產(chǎn)生初始事件1)初始事件G4VUserPrimaryGeneratorAcrion可以讓用戶(hù)創(chuàng)建自己的初始事件類(lèi)用戶(hù)提供初

38、始事件的狀態(tài),如:出射粒子的種類(lèi),出射能量,方向等.如下:/#include ExN01PrimaryGeneratorAction.hh”29基礎(chǔ)知識(shí)#include G4Event.hh#include G4ParticleGun.hh#include G4ParticleTable.hh#include G4ParticleDefinition.hh#include globals.hhExN01PrimaryGeneratorAction:ExN01PrimaryGeneratorAction()G4int n_particle = 1;/設(shè)定每次事件出射粒子的數(shù)量particleTa

39、bleparticleGun = new G4ParticleGun(n_particle);G4ParticleTable*G4ParticleTable:GetParticleTable();G4String particleName;particleGun-SetParticleDefinition(particleTable-FindParticle(particleName=geantino);設(shè)定出射粒子的種類(lèi)30基礎(chǔ)知識(shí)particleGun-SetParticleEnergy(1.0*GeV);/設(shè)定出射粒子的動(dòng)能particleGun-SetParticlePosition(

40、G4ThreeVector(-2.0*m, 0.0, 0.0);/設(shè)定出射粒子的出射位置ExN01PrimaryGeneratorAction:ExN01PrimaryGeneratorAction()delete particleGun; void ExN01PrimaryGeneratorAction:GeneratePrimaries(G4Event* anEvent)G4int i = anEvent-GetEventID() % 3;G4ThreeVector v(1.0,0.0,0.0);switch(i)31基礎(chǔ)知識(shí)(case 0:break;v.setY(0.1);break;

41、v.setZ(0.1);break;)particleGun-SetParticleMomentumDirection(v);/設(shè)定出射粒子的方向particleGun-GeneratePrimaryVertex(anEvent);)/32基礎(chǔ)知識(shí)2) G4VPrimaryGeneratorGeant4 中有兩個(gè) G4VPrimaryGenerator 的獨(dú)立的類(lèi),一個(gè)是G4ParticleGun, 另一個(gè)是 G4HEPEvtInterface. G4ParicleGun用來(lái)給用戶(hù)確定出射粒子的動(dòng)能和位置.方式如下:void SetParticleDefinition(G4ParticleDe

42、finition*)void SetParticleMomentum(G4ParticleMomentum)void SetParticleMomentumDirection(G4ThreeVector)void SetParticleEnergy(G4doule)void SetParticleTime(G4double)void SetParticlePosition(G4ThreeVector)void SetParticlePolarization(G4ThreeVector)void SetNumberOfParticles(G4int)執(zhí)行模擬程序.命令總目錄/control/UI

43、控制命令.33基礎(chǔ)知識(shí)/units/單位./geometry/ 幾何形狀控制命令./tracking/軌跡和步長(zhǎng)控制命令/event/事件控制命令./run/運(yùn)行控制命令./random/隨機(jī)數(shù)狀態(tài)控制命令/particle/粒子控制命令./process/物理過(guò)程控制命令./hits/靈敏區(qū)和采樣/gun/粒子源控制命令./vis/可視化命令. 一些常用命令/control/execute說(shuō)明:執(zhí)行一個(gè)宏文件.34基礎(chǔ)知識(shí)/control/loop說(shuō)明:多次執(zhí)行宏文件/units/list說(shuō)明:列出所有存在的量綱./tracking/verbose說(shuō)明:設(shè)置記錄粒子軌跡信息的級(jí)別./run/beamOn說(shuō)明:開(kāi)始運(yùn)行模擬程序.如果沒(méi)有初始化 G4內(nèi)核,它將自動(dòng)初始化.默認(rèn) 運(yùn)行的事件數(shù)為1,第二第三個(gè)參數(shù)可以讓用戶(hù)在每次事件結(jié)束后執(zhí)行一個(gè)宏文 件.如果第二個(gè)參數(shù)(例:宏文件名)存在,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論