add: random algorithm

This commit is contained in:
liuyihui 2022-05-15 17:47:31 +08:00
parent 26f8223362
commit 3b2b20209d
1 changed files with 23 additions and 2 deletions

View File

@ -206,10 +206,10 @@ $$
### 质子与俘获辐射
由于模型较为复杂,且需要发射的粒子种类繁多,因此该部分的粒子使用`G4ParticleGun`生成,关键是生成各向同性(在球面上均匀分布)的位置、方向和符合能谱的能量分布。
1. `Inverse Transform Method``ITM`
1. `Inverse Transform Method``ITM`
对于一个在$[a, b]$的分布,设其概率密度函数(PDF)为$F(x)$,对其积分可获得累积分布函数(CDF),记为$y=C(x)=\int_a^x F(u)\mathrm{d}u$,其反函数为$C^{-1}(y)$。设$y$为$[0, 1)$上均匀分布的随机数,则$x=C^{-1}(y)$满足$F(x)$的分布。
2. `Acceptance-Rejection Method``ARM`
2. `Acceptance-Rejection Method``ARM`
对于一个在$[a, b]$的分布,设其概率密度函数(PDF)为$F(x)$,首先生成一个均匀分布随机数$X \sim U(x_{min}, x_{max})$,随后独立生成另一个均匀分布随机数$Y \sim U(y_{min}, y_{max})$,如果$Y \le F(X)$,则保留$X$,保留下来的$X$满足$F(x)$的分布。
`ITM`也被称为反演法,关键是需要获取累积分布函数的逆函数,效率较高;`ARM`本质上是一种模拟算法,效率较低,但是适应性更广,特别是对于一些复杂分布函数。`GCR`质子和俘获辐射粒子的模型有三类,其中`GCR`质子的函数较为简单,其余两类较为复杂,因此分别采用`ITM`和`ARM`。
@ -222,6 +222,27 @@ $$
</div>
1. 位置生成
而发射位置要求在球面上均匀分布。由于球面的面积元$\mathrm{d}\Omega=\sin\theta\mathrm{d}\phi\mathrm{d}\theta$是$\theta$的函数,如果位置向量$\vec{r}(\rho, \phi, \theta)$的$\phi$和$\theta$是在$\phi\in[0, 2\pi)$和$\theta\in[0, \pi]$上均匀分布,选取的点将会在两极较为密集(即),因此可以采用`ITM`方法生成$\theta$$C^{-1}(z)=\cos^{-1}(z)$。
```c
double u = rand();
double v = rand();
double phi = 2 * pi * u;
double theta = arccos(2 * v - 1);
double x = rho * sin(theta) * cos(phi);
double y = rho * sin(theta) * sin(phi);
double z = rho * cos(theta);
```
2. 发射方向
在`Geant4`中,假定粒子的位置矢量为$\vec{r}$,则以$\vec{r}$反方向作为$z$轴正方向建立右手坐标系,粒子的指向为:
$$
P_x = -\sin\theta\cos\phi \\
P_y = -\sin\theta\sin\phi \\
P_z = -\cos\theta
$$
为了保证发射方向是朝向球面内,因此需要限制$\theta$的最大角度为$90^{\circ}$。
## 空间站建模
1. 尺寸与分区[^6]
<div align=center><img src="docs/size.webp" style="max-width: 50%;"></div>