Студопедия — Определение объявленного в файле DetectorConstruction.hh класса DetectorConstruction находится в файле DetectorConstruction.c
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Определение объявленного в файле DetectorConstruction.hh класса DetectorConstruction находится в файле DetectorConstruction.c






DetectorConstruction.cc

Создание материалов выглядит следующим образом:

G4Element* elH = new G4Element(“Hydrogen”,”H”,1,1.01*g/mole); G4Element* elC = new G4Element(“Carbon”,”C”,1,12.01*g/mole); C14H12 = new G4Material(“C14H12”,1.16*g/cm3,2); C14H12->AddElement(elC,14); C14H12->AddElement(elH,12);

В приведённом коде создается элемент с именем Hydrogen и символом H, с атомным числом (эффективным зарядом) 1 и молярной массой 1.01 г/моль. Аналогично для углерода. Затем создается материал с именем C14H12, плотностью 1.16 г/см3, состоящий из 2-х компонент: 12-ти элементов водорода и 14-ти элемента углерода.

Но есть и другой, более простой, способ задания материалов. Geant4 уже содержит базу данных по большому количеству материалов. Получить материал из этой базы можно следующим образом:

G4Material* Water = G4NistManager::Instance() -> FindOrBuildMaterial("G4_WATER");

В начале всех материалов из базы Geant4 содержится префикс G4_

Геометрия системы описывается в Geant4 в виде иерархии тел. Наибольшее тело называется Мировым (World) и содержит все остальные тела геометрии. Тело содержащее в себе другие тела называется материнским.

Описание тела состоит из задания его типа (параллелепипед, цилиндр, сфера,...) и размеров, материала из которого оно состоит, материнского тела и координат относительно материнского тела.

Пример описания параллелепипеда:

Параллелепипед с полуразмерами сторон вдоль осей X, Y и Z в 1 м. (Длина грани будет 2м)

G4Box* world = new G4Box("world", 1*m, 1*m, 1*m);

Заполняем его материалом “G4_Galactic” (Вакуум)

G4LogicalVolume* logicworld = new G4LogicalVolume(world, “G4_Galactic”, "world");

И помещаем в центр координат.

G4VPhysicalVolume* physicworld = new G4PVPlacement(0, G4ThreeVector(), logicworld, "world", 0, false, 0);

Создадим мишень:

G4Box *Tgt = new G4box(“Tgt”, 50*mm, 50*mm, 10*mm); G4LogicaVolume *logicTgt = new G4LogicaVolume(Tgt, G4NistManager::Instance() -> Find0BuildMaterial(“G4_POLYETHYLENE”),”Tgt”);G4PVPlacement *physiTgt = new G4PVPlacement(0,G4ThreeVector(0,0,0), ”Tgt”, logicworld, false, 0);

Логический объем G4LogicalVolume содержит информацию о материале и магнитных свойствах среды. В данном случае никаких магнитных свойств нет.

Физический объем G4PVPlacement содержит информации о положении объекта относительно материнского, то есть World.

Выше задана мишень в виде параллелепипеда с размерами 100мм*100мм*20мм, заполненная полиэтиленом, расположенная в центре Мирового объема.

Функция G4ThreeVector(x, y, z) задает положение в пространстве заданного тела.

Создадим объем для детектора.

G4Box *Det = new G4box(“Det”, 50*mm, 50*mm, 10*mm); G4LogicaVolume *logicDet = new G4LogicaVolume(Det, G4NistManager::Instance() -> Find0BuildMaterial(“G4_POLYETHYLENE”),” Det”); G4PVPlacement *physiDet = new G4PVPlacement(0, G4ThreeVector(0,0,0), ”Tgt”, logicworld, false, 0);

Первый параметр отвечает за поворот тела относительно оси вращения.

Для того чтобы детектор реагировал на пролет частиц, он должен быть назначен так называемой чувствительной областью. Для этой цели в G4LogicalVolume есть специальное поле SensitiveDetector, которое содержит указатель на объект класса G4VSensitiveDetector. Этот объект автоматически вызывается каждый раз, когда очередной шаг моделирования частицы попадает внутри данного объема. Соответствующим образом программируя класс SensitiveDetector можно получать выходные данные моделирования.

SensitiveDetector *detector = new SensitiveDetector(“detector”);

Объект SensitiveDetector должен быть зарегистрирован в G4SDManager.

G4SDManager* SDman = G4SDManager::GetSDMpointer(); SDman->AddNewDetector(detector);

Здесь SensitiveDetector сопоставляется полиэтиленовому детектору.

logicDet->SetSensitiveDetector(detector);

Стенки объекта World делаются прозрачными, чтобы не мешали на визуализации.

world->getLogic()->SetVisAttributes (G4VisAttributes::Invisible);

Чтобы закрасить цветом какой-либо объект необходимо поступить следующим образом.

G4VisAttributes* mycolor = new G4VisAttributes(G4Colour(0.0, 0.0, 0.0)); logicDet ->SetVisAttributes (mycolor);

Функция G4Colour(0.0, 0.0, 0.0) позволяет установить цвет.

0 0 0 соответствует черному цвету, 1 1 1, соответствует белому цвету.

В конце концов успешно выполнившаяся функция Construct должна возвратить указатель на физический объем объекта World.

return world->getPhysic(); }

 







Дата добавления: 2015-08-11; просмотров: 411. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

Разновидности сальников для насосов и правильный уход за ними   Сальники, используемые в насосном оборудовании, служат для герметизации пространства образованного кожухом и рабочим валом, выходящим через корпус наружу...

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

Словарная работа в детском саду Словарная работа в детском саду — это планомерное расширение активного словаря детей за счет незнакомых или трудных слов, которое идет одновременно с ознакомлением с окружающей действительностью, воспитанием правильного отношения к окружающему...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия