Моделирование энергетических спектров частиц.

advertisement
Белорусский государственный университет
Физический факультет
Кафедра ядерной физики
Практикум по компьютерному моделирования ядерных процессов с
использованием библиотеки GEANT4.
Методические указания к лабораторным работам
Моделирование энергетических спектров частиц.
Минск 2007
Авторы составители:
Корнеев А.Е.
Мечинский В.А.
Методические указания утверждены
Советом физического факультета
«_____» _______________2007г.Цель:
Научиться конструировать материалы, задавать геометрию установки и
получать энергетический спектр излучения с заданной аппаратурной
формой линии (АФЛ).
Описание экспериментальной установки.
Упрощенная модель любого ядерно-физического эксперимента состоит
из трех компонент:
1. Источник излучения
2. Объект исследования (образец)
3. Детектор излучения
В этой лабораторной работе мы проведем моделирование такой
упрощенной системы и познакомимся с каждым шагом создания программы
моделирования.
2
Источник
Поглотитель
(образец)
Детектор
Рис.1-- Геометрия экспериментальной системы
Итак, наша программа моделирования будет состоять из следующих
компонент (классов):
 PhysicsList: содержит список используемых частиц (гамма-кванты,
электроны, позитроны) и процессов в которых они могут участвовать
(фотоэффект, комптоновское рассеяние, образование электронпозитронных пар для гамма; рассеяние, ионизация, тормозное
излучение, аннигиляция для электронов/позитронов).
 DetectorConstruction: содержит описание используемых материалов,
геометрии системы, детектора, настройки визуализации.
 PrimaryGenerationAction: в этом классе описывается источник частиц, в
нашем случае это точечный источник гамма-квантов.
 RunAction: методы этого класса вызываются в начале и в конце
процесса моделирования, в нашей программе моделирования этот
класс выполняет создания гистограммы для хранения спектра энергий
перед началом моделирования, накопления событий в спектре в
процессе моделирования и сохранения гистограммы в файл в конце
моделирования.
 DetectorSD: методы этого класса вызываются при прохождении частиц
через детектор, и в нашем случае этот класс служит для подсчета
количества энергии оставленной частицами в детекторе.
RunManager
PhysicsList
DetectorConstruction
DetectorSD
RunAction
PrimaryGenerationAction
Рис. 2 -- Схема связи классов.
3
Детальное описание порядка выполнения программы моделирования
содержится в виде комментариев в исходных кодах программы. Здесь же мы
остановимся на общем описании компонентов программы моделирования.
Описание материалов и геометрии системы
Материалы задаются в следующем порядке: сначала описываются
составляющие их элементы, а затем эти элементы группируются в нужных
пропорциях.
G4Element* H = new G4Element("Hydrogen", "H" , 1, 1.01*g/mole);
G4Element* O = new G4Element("Oxygen" , "O" , 8, 16.00*g/mole);
G4Material* H2O = new G4Material("Water", 1.000*g/cm3, 2);
H2O->AddElement(H, 2);
H2O->AddElement(O, 1);
В приведённом коде создается элемент с именем Hydrogen и символом
H, с атомным числом (эффективным зарядом) 1 и молярной массой
1.01 г/моль. Аналогично для кислорода. Затем создается материал с именем
Water, плотностью 1 г/см3, состоящий из 2-х компонент: 2-х элементов
водорода и 1-го элемента кислорода.
Но есть и другой, более простой, способ задания материалов. Geant4
уже содержит базу данных по большому количеству материалов. Получить
материал из этой базы можно следующим образом:
G4NistManager* nistMan = G4NistManager::Instance();
G4Material* Water = nistMan->FindOrBuildMaterial("G4_WATER");
Получаем указатель на базу данных (*nistMan) и запрашиваем
материал "G4_WATER" (в начале всех материалов из базы Geant4
содержится префикс "G4_").
Геометрия системы описывается в Geant4 в виде иерархии тел.
Наибольшее тело называется Мировым (World) и содержит все остальные
тела геометрии. Тело содержащее в себе другие тела называется
материнским.
Описание тела состоит из задания его типа (параллелепипед, цилиндр,
сфера, ...) и размеров, материала из которого оно состоит, материнского тела
и координат относительно материнского тела.
Пример описания параллелепипеда:
Параллелепипед с полуразмерами сторон вдоль осей X, Y и Z в 1 м.
G4Box* world_box = new G4Box("world", 1*m, 1*m, 1*m);
4
Заполняем его материалом “Air”.
G4LogicalVolume* world_log = new G4LogicalVolume(world_box, Air, "world");
И помещаем в центр координат.
G4VPhysicalVolume* world_phys = new G4PVPlacement(0, G4ThreeVector(),
world_log, "world", 0, false, 0);
Создадим еще одно тело:
G4Tubs* det_tube = new G4Tubs("detector", 0, 20*cm, 10*cm, 0, 360*deg);
Это цилиндр с внутренним радиусом 0 см, внешним 20 см, полутолщиной
вдоль оси Z 10 см.
Заполняем его материалом “NaI”.
G4LogicalVolume* det_log = new G4LogicalVolume(det_tube, NaI, "detector");
И помещаем в мировой объем (world_log), со смещением на 50 см сдоль
оси Z относительно центр мирового объема.
G4VPhysicalVolume* det_phys = new G4PVPlacement(0, G4ThreeVector(0, 0,
50*cm), det_log, "detector", world_log, false, 0);
world
sample
detector
Иерархия тел в программе моделирования
Источник частиц
Источник частиц создается в классе PrimaryGeneratorAction:
particleGun = new G4ParticleGun(1);
particleGun->SetParticleDefinition(G4Gamma::GammaDefinition());
particleGun->SetParticleEnergy(100*keV);
particleGun->SetParticlePosition(G4ThreeVector(0, 0, 0));
particleGun->SetParticleMomentumDirection(G4ThreeVector(0, 0, 1));
Сначала мы создаем экземпляр класса G4ParticleGun, параметр
конструктора (1) – это количество частиц испускаемых источником за одно
5
событие. Далее устанавливается тип и энергия частиц, положение источника
и направление вылета частиц.
Непосредственное испускание частиц происходит в методе
GeneratePrimaries() класса PrimaryGeneratorAction. При этом испускаются
частицы исключительно с характеристиками заданными выше. Если
необходимо менять какую либо характеристику случайным образом
(например чтобы реализовать источник равномерно излучающий частицы по
всем направлениям), то это необходимо делать так:
Устанавливаем случайное направление движения частицы и запускаем ее.
void PrimaryGeneratorAction::GeneratePrimaries(G4Event* event)
{
particleGun->SetParticleMomentumDirection(G4RandomDirection());
particleGun->GeneratePrimaryVertex(event);
}
Метод GeneratePrimaries() вызывается в начале каждого события и
частицы сгенерированные этим методом проходят сквозь геометрию системы
до тех пор пока либо не потеряют всю энергию, либо вылетят за пределы
мирового объема.
Таким образом каждый запуск программы моделирования представляет
собой последовательную обработку набора событий.
Run (запуск)
Event
(событие)
Event
(событие)
Event
(событие)
Event
(событие)
...
Методические задания
1). Запустите Cygwin. Перейдите в каталог ~/hep/lab2.
2). Моделирование истинных спектров 137Cs, 40К.
2.1). Моделирование -спектра 137Cs.
-Линия 137Cs имеет значение энергии 661 кэВ. Чтобы смоделировать спектр 137Cs откройте в каталоге ~/hep/lab2 управляющий файл “run.mac”,
который имеет следующий вид:
/run/verbose 1
/event/verbose 0
/tracking/verbose 0
6
/gun/particle e/gun/energy 1000 keV
/run/beamOn 10000
Пояснения значений этих команд даны в лабораторной работе №1 –
«ОЗНАКОМЛЕНИЕ СО СРЕДОЙ МОДЕЛИРОВАНИЯ GEANT4».
Задаём в качестве источника частиц -кванты с энергией 661 кэВ и
увеличиваем количество событий до 1000000. При этом файл “run.mac” будет
следующим:
/run/verbose 1
/event/verbose 0
/tracking/verbose 0
/gun/particle gamma
/gun/energy 661 keV
/run/beamOn 1000000
Компилируем программу lab2:
user@localhost:~$ make
и запускаем её вместе с run.mac:
user@localhost:~$ lab2.exe run.mac
После выполнения программы появится выходной файл “spectrum.csv”,
содержащий два столбца цифр: первый – значение энергии, второй – число
отсчётов в данном канале. Всего используется 2000 каналов.
Переименуйте “spectrum.csv” в “spectrum_Cs_gamma.csv”!
Откройте файл “spectrum_Cs_gamma.csv” в Excel и посмотрите на
полученный спектр. Из каких основных частей он состоит?
2.2). Повторите ту же процедуру для -изотопа 40К. Энергия -квантов равна
1461 кэВ.
Переименуйте
сгенерированный
файл
“spectrum.csv”
в
“spectrum_K_gamma.csv”!
2.3). Определите эффективности регистрации -квантов 137Сs и
сцинтилляционным используемым детектором (в данном случае NaI).
Эффективность регистрации находится из формулы:
ε=
40
K
N / N0
Ω
где  – телесный угол, под которым из источника видна передняя грань
сцинтиллятора (в нашем случае 25 мм), N0 – число испущенных источником
-квантов (N0=106), N – число детектированных -квантов (сумма отсчётов по
7
всем каналам в полученных спектрах). Эту величину можно получить из
выходных файлов “spectrum_Cs_gamma.csv” и “spectrum_K_gamma.csv”
путём использования функции СУММА() Excel.
Телесный угол  рассчитывается по следующей формуле:

h
Ω = 2π1 

r 2 + h2





где h – расстояние от источника до сцинтиллятора (h = 25 мм), r – радиус
сцинтиллятора (r = 15 мм) – см. Рис.3.
Как изменилась эффективность регистрации -квантов при увеличении
энергии?
8
Рис.3 -- К определению эффективности регистрации -квантов.
2.4). Изучите влияние плотности материала сцинтиллятора на эффективность
регистрации -квантов.
По умолчанию в качестве сцинтиллятора моделировался кристалл
NaI(Tl). Смоделируем спектры -квантов от 137Сs при использовании
следующих сцинтилляторов:
а). NaI(Tl).
В файле “run.mac” задаём тип частиц -- -кванты (“gamma”), энергия –
661 кэВ. В файле ~/hep/lab2/src/DetectorConstruction.cc в строке 38 оставляем
тип сцинтиллятора – G4_SODIUM_IODIDE (т.е. NaI) – тот же.
В файле “run.mac” задаём тип кастиц – “gamma”, энергия 661 кэВ.
Компилируем программу, запускаем её с “run.mac” и полученный выходной
файл “spectrum.csv” переименовываем в “ spectrum_gamma_NaI.csv ”.
б). BaF2.
В файле ~/hep/lab2/src/DetectorConstruction.cc в строке 38 меняем тип
сцинтиллятора:
G4Material* detMaterial = nistMan->FindOrBuildMaterial(“G4_BARIUM_FLUORIDE”);
Компилируем программу, запускаем её с “run.mac” и полученный выходной
файл “spectrum.csv” переименовываем в “ spectrum_gamma_BaF2.csv ”.
в). PbWO4.
В файле ~/hep/lab2/src/DetectorConstruction.cc в строке 38 меняем тип
сцинтиллятора:
G4Material* detMaterial = nistMan->FindOrBuildMaterial(“G4_PbWO4”);
Компилируем программу, запускаем её с “run.mac” и полученный выходной
файл “spectrum.csv” переименовываем в “ spectrum_gamma_PbWO4.csv ”.
9
г). Антрацен.
В файле ~/hep/lab2/src/DetectorConstruction.cc в строке 38 меняем тип
сцинтиллятора:
G4Material* detMaterial = nistMan->FindOrBuildMaterial(“G4_ANTRACENE”);
Компилируем программу, запускаем её с “run.mac” и полученный выходной
файл “spectrum.csv” переименовываем в “ spectrum_gamma_antracene.csv ”.
2.5). Постройте в Excel на основе полученных спектров зависимость
эффективности детектирования -квантов от плотности вещества
сцинтиллятора.
Плотность антрацена – 1,283 г/см3, BaF2 – 4,89 г/см3, NaI – 3,667 г/см3, PbWO4
– 8,28 г/см3.
3). Моделирование реальных спектров частиц.
3.1). Учёт АФЛ в получаемом -спектре 137Сs.
Простейший вид АФЛ, который можно использовать, является
случайный разброс значений энергии детектируемых частиц по Гауссу
(нормальное распределение) с заданными средним значением и дисперсией.
Энергетическое разрешение спектрометра обратно пропорционально
корню квадратному из энергии:

1

E
E



Для того чтобы получаемые спектры имели случайный разброс
значений энергии с энергетическим разрешением 5%, необходимо открыть
для редактирования файл ~/hep/lab2/src/RunAction.cc и отредактировать
строки 22 и 23.
Исходно имеем:
hist->fill(energy/keV);
// hist->fill(energy/keV + G4RandGauss::shoot(0, 33));
Нужно раскомментировать первую из этих строк (т.е. убрать перед ней “//’) и
закомментировать вторую строку. Получим следующее:
//hist->fill(energy/keV);
hist->fill(energy/keV + G4RandGauss::shoot(0, 33));
Добавка G4RandGauss::shoot(0, 33) производит «размытее» значений энергии
регистрируемых частиц с нулевым средним значением (т.е. не происходит
сдвига спектра) и дисперсией в 33 кэВ. Из (1) получаем, что дисперсия  при
энергетическом разрешении 5% должна равняться:
10
 = 661*0.05= 33 кэВ,
т.е. то, что нам и нужно.
Отредактируйте файл «run.mac» для получения -спектра 137Сs (как это
описано в п. 2.1 заданий) с учётом АФЛ и перекомпилируйте пример.
Запустите скомпилированную программу с файлом «run.mac».
Полученный
выходной
файл
«spectrum.csv»
переименуйте
в
«spectrum_Cs_gauss.csv», откройте его и «spectrum_Cs_gamma.csv» в Excel и
постройте графики спектров. Как изменился вид спектра с учётом АФЛ по
сравнению с истинным спектром? Почему нужно использовать именно
Гауссово распределение для учёта АФЛ?
137
3.2). Изменение вида спектра -электронов от источника
Сs при
прохождении пучка электронов через различные толщи поглотителя.
Изотоп 137Сs испускает также -электроны с энергией 512 кэВ.
Определим изменение распределения электронов при прохождении через
поглотитель различной толщины.
Откройте
файл
~/hep/lab2/src/DetectorConstruction.cc
для
редактирования и измените в строке 43 значение толщины поглотителя на
значение 0,1 мм:
G4Double saThick = 0.1*mm
Сохраните изменения. Откройте файл «run.mac» и поменяйте тип
частиц на электроны с энергией 512 кэВ. Перекомпилируйте программу,
запустите её с файлом “run.mac”. Полученный выходной файл
“spectrum.csv” переименуйте в “spectrum_Cs_e-_0.1mm.csv”.
Получите спектры -электронов от 137Сs для значений толщин
поглотителя 0,3 мм, 0,5 мм, 1 мм, 3 мм. Не забывайте переименовывать
выходные файлы перед каждой последующей перекомпиляцией
программы! Постройте в Excel на одном графике полученные спектры. Как
изменяется вид спектра электронов с увеличением толщины поглотителя?
Почему?
11
Download