0
点赞
收藏
分享

微信扫一扫

【G4基础03】2.3 How to Specify Materials in the Detector

niboac 2022-04-08 阅读 35
c++

文章目录


两个类

定义单质

//通过指定其名称,密度,每摩尔质量和原子序数,创建液态氩.
G4double z, a, density;
density = 1.390*g/cm3;
a = 39.95*g/mole;
G4Material* lAr = new G4Material(name="liquidArgon", z=18., a, density);
//指向材质的指针lAr 将用于指定给定logical volume 的内容
G4LogicalVolume* myLbox = new G4LogicalVolume(aBox,lAr,"Lbox",0,0,0);

定义分子/化合物

//通过指定分子中的原子数量,水(H2O)由其组件构建而成
G4double z, a, density;
G4String name, symbol;
G4int ncomponents, natoms; //ncomponents指定有几种原子, natoms指定每种原子的个数
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(name="Oxygen" ,symbol="O" , z= 8., a);
density = 1.000*g/cm3;
//H2O由2个H原子、1个O原子构成
G4Material* H2O = new G4Material(name="Water",density,ncomponents=2); //由H和O两种原子构成
H2O->AddElement(elH, natoms=2); 
H2O->AddElement(elO, natoms=1);

定义混合物

//通过定义空气成分的质量分数来生成空气
G4double z, a, fractionmass, density;
G4String name, symbol;
G4int ncomponents;
a = 14.01*g/mole;
G4Element* elN = new G4Element(name="Nitrogen",symbol="N" , z= 7., a);
a = 16.00*g/mole;
G4Element* elO = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a);
density = 1.290*mg/cm3;
G4Material* Air = new G4Material(name="Air ",density,ncomponents=2);
Air->AddElement(elN, fractionmass=70*perCent); //70% N
Air->AddElement(elO, fractionmass=30*perCent); //30% O

通过G4材料库定义材料

G4NistManager* man = G4NistManager::Instance();
G4Material* H2O = man->FindOrBuildMaterial("G4_WATER");
G4Material* Air = man->FindOrBuildMaterial("G4_AIR");

通过基础材料定义新材料

在现有base material的基础上构建新材料
特别是对电磁物理学有用,可以为所导出的材料确定所有校正数据、基础材料的停止功率、横截面的预先计算表格。

G4double density;
density = 1.05*mg/cm3;
G4Material* water1 = new G4Material("Water_1.05",density,"G4_WATER");
density = 1.03*mg/cm3;
G4NistManager* man = G4NistManager::Instance();
G4Material* water2 = man->BuildMaterialWithNewDensity("Water_1.03","G4_WATER",density);

打印材料信息

G4cout << H2O; // 打印指定材料
G4cout << *(G4Material::GetMaterialTable()); // 打印材料列表

访问G4材料库

/material/nist/printElement Fe // 按名称打印element
/material/nist/printElementZ 13 // 按原子序数打印element
/material/nist/listMaterials type // print materials type = [simple | compound | hep | all] 
/material/g4/printElement elmName // 按名称打印实例化的element
/material/g4/printMaterial matName // 按名称打印实例化的Material
举报

相关推荐

0 条评论