GEANT4 安装的数据库中,有一个文件夹 RadioactiveDecay5.x,里面文件格式 z[xx].a[xx],每个文件对应一个核素,z 后面的数值为其质子数,a 后面的数值为核子数。
我们以 60Co 为例,
该数据库为给定原子核的衰变信息。
在每个文件中,以 “#” 开头的行都是注释。
以 “P” 开头的行是数据头,表示原子核的激发态/基态,它可能是进一步衰变的母核。“P” 之后的第一个数字是以 keV 为单位的激发能,后面跟着一个表示浮动能级的字符。如果这是符号 “-”,则假定该能级是固定的;如果是 +X、+Y、+Z、+W、+U 或 +V,则能级是浮动的或未确定的。之后的数字是半衰期(秒)。
“P” 行下的缩进行是该态的衰变方式。这里有几种类型的记录,按列数区分。第一列为衰变模式;第二列为子核激发能;第三列为能级是否浮动(可为空);第四列为衰变分支比;第五列为 Q;在 β- 或 β+ 衰变的模式下,通常会有第六列描述特定衰变道的“禁戒”。这由标签firstForbidden、secondForbidder、thirdForbidded、uniqueFirstForbiddent、uniqueSecondForbiddend、uniqueThirdForbid表示,它们决定了 β 能谱的形状。
默认情况下,会读取文件夹 RadioactiveDecay5.x 里面的数据。但是对于前沿的研究来说,数据通常是存在不足的。这里介绍一个调用自己修改数据的方式。
main.cc
// 这里省略
G4VisManager* visManager = 0;
G4UImanager* UImanager = G4UImanager::GetUIpointer();
// 代码里,找到以上两行代码。在这两行代码之后添加数据
// userDecayData
UImanager->ApplyCommand("/process/had/rdm/setRadioactiveDecayFile 27 60 wu_z27.a60");
// 其中 27 为质子数, 60 为核子数, wu_z27.a60 为数据文件
文件 wu_z27.a60 中,修改了基态衰变到 2158.632 和 2505.753 的分支比。
60Co 基态,衰变放出 gamma。测量 Ge 探测器上的能谱。
void wuPrimaryGeneratorActionAll::GeneratePrimaries(G4Event* anEvent)
{
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
G4ParticleDefinition* pp = 0;
// -------------------------
//自定义带电粒子
G4int IonZ = 27;
G4int IonA = 60;
G4double IonEstar = 0.0*keV; //exitition energy
G4double IonQ = 1;
pp = particleTable->GetIonTable()->GetIon(IonZ, IonA, IonEstar);//4.10.01版本强制 G4IonTable.hh
particleGun->SetParticleCharge(IonQ);
if(pp)
particleGun->SetParticleDefinition(pp);
else
G4cout<<"##Null pp in wuPrimaryGeneratorAction::SetParticleGun()"<<G4endl;
//primary particle kinetic energy
particleGun->SetParticleEnergy(0.0*MeV);
// 这里省略代码
// 。。。。。。
// 粒子各向同性发射
}
典型数据输出如下:
能看到 beta 衰变发射的电子和中微子, 它的物理过程描述为 RadioactiveDecayBase。
统计 gamma 在 Ge 上的能量沉积,需要剔除衰变的电子。
蓝色和黑色是 GEANT4 默认数据库的结果,其中蓝色没有剔除衰变的电子(实际测量中,由于探测器存在外壳及源有封装结构,电子几乎无法到达探测器晶体)。红色为修改衰变数据的结果。
!date
!jupyter nbconvert RadioactiveDecay.ipynb --to html
!jupyter nbconvert RadioactiveDecay.ipynb --to html
2024年 05月 03日 星期五 19:05:47 CST [NbConvertApp] Converting notebook RadioactiveDecay.ipynb to html [NbConvertApp] Writing 567121 bytes to RadioactiveDecay.html [NbConvertApp] Converting notebook RadioactiveDecay.ipynb to html [NbConvertApp] Writing 567121 bytes to RadioactiveDecay.html