Radyasyon taşınımı ve gama ışını spektroskopisini öğretmek için kullanılan iki modeli keşfedin. Parametreleri değiştirin, grafikleri yorumlayın ve ardından örneklerin kodlarını inceleyin.
Foton zayıflaması
Homojen bir levhadan geçen dar, tek enerjili bir demet için etkileşmeden geçen foton oranı I/I₀ = exp(−μx) bağıntısına uyar. μ doğrusal zayıflama katsayısı, x levha kalınlığıdır. İşaretçi, seçilen kalınlıktaki sonucu gösterir.
Geçen foton oranı: %13,5
Deneyin μ = 0,20 cm⁻¹ için 5 cm ve 10 cm’yi karşılaştırın. Kalınlığı iki katına çıkarmak geçen oranın karesini verir. Bu analitik karşılaştırmada saçılan fotonlar hesaba katılmaz.
Gama ışını spektrumu
Gauss dağılımından örneklenen sentetik bir 661,7 keV piki, düzgün dağılımlı arka plana eklenir. Dedektör çözünürlüğünü yarı yükseklikteki tam genişlik (FWHM) cinsinden değiştirin. Değişimi karşılaştırmak için her hesaplamada aynı rastgele sayı tohumu kullanılır.
Deneyin 20 keV ile 80 keV’yi karşılaştırın. Model aynı sayıda sinyal olayıyla başlarken pik daha fazla kanala yayılır. Bu sentetik örnek gerçekçi Compton sürekliliğini ve dedektör yanıtını içermez.
Kod örnekleri
Geant4
G4ParticleGun kullanan bir Geant4 uygulamasında tek enerjili foton kaynağını ayarlayın. Makro kaynak ayarlarını içerir. Analitik eğriyle karşılaştırmak için levha geometrisini tanımlayın, elektromanyetik etkileşimleri etkinleştirin ve çıkışta etkileşmemiş birincil fotonları sayın.
Kaynak kodu göster
# For a Geant4 application that uses G4ParticleGun.
# Example geometry assumption: a slab normal to z, downstream of z = -10 cm.
# Change source position to match your geometry.
/run/initialize
/gun/particle gamma
/gun/energy 661.7 keV
/gun/position 0 0 -10 cm
/gun/direction 0 0 1
/run/beamOn 100000
TH1D histogramını Gauss piki ve düz arka planla doldurup ROOT’ta görüntüleyin. Makro tarayıcı örneğiyle aynı modeli, ROOT’un kendi rastgele sayı üreteciyle uygular.
root -l gamma_spectrum.C
Kaynak kodu göster
#include <TCanvas.h>
#include <TH1D.h>
#include <TRandom3.h>
// Run with: root -l gamma_spectrum.C
void gamma_spectrum() {
constexpr double peakEnergyKeV = 661.7;
constexpr double fwhmKeV = 40.0;
TRandom3 random(42);
auto* spectrum = new TH1D("synthetic_gamma", "Synthetic spectrum;Energy (keV);Counts / 10 keV", 80, 0, 800);
for (int event = 0; event < 1800; ++event)
spectrum->Fill(random.Gaus(peakEnergyKeV, fwhmKeV / 2.35482));
// A uniform background makes the peak easier to study independently.
for (int event = 0; event < 5000; ++event)
spectrum->Fill(random.Uniform(0.0, 800.0));
auto* canvas = new TCanvas("gamma_spectrum_canvas", "Gamma spectrum", 820, 460);
spectrum->SetLineColor(kBlue + 2);
spectrum->Draw("HIST");
canvas->Update();
}
Makalelerin yöntemlerine dayanan bu alıştırmaları kendi verilerinizle uygulayabilirsiniz.
Geant4 ve XCOM · Kaplamalı pamuk gabardin
Bileşimi ve birim alan başına kütleyi sabit tutarak homojen bir levhayı kaplama ve kumaşı ayrı ayrı temsil eden geometriyle karşılaştırın. Etkileşmeden geçen fotonları dedektör sayımlarından ayrı kaydedin.
Su ve kurşun için XCOM katsayılarını dışa aktarın. ROOT’ta her kısmi katsayıyı, aynı malzeme ve enerjideki toplam katsayıya bölün. Oranları logaritmik enerji ekseninde çizip en büyük katkının nerede değiştiğini belirleyin.
Makalede kaplamalı kumaş ve cam, kobalt-60’ın 1173 ve 1332 keV gama enerjilerinde incelendi. İki enerji penceresi kullanarak arka plan düzeltmeli geçirgenliği her enerji için ayrı hesaplayın.
C++ ve ROOT · Yüklü parçacıklarda durdurma gücü ve menzil
Aynı ortamda iki parçacık türü için durdurma gücü tablolarını kullanın. C++ ile ortak bir enerji aralığında durdurma gücünün tersinin integralini sayısal olarak hesaplayın, ardından menzilleri ROOT’ta çizin. Tutarlı birimler kullanıp enerji aralığını belirtin.