Урок ??: Продвинутая геометрия (Возможно разбить на два-три)
Описание геометрии с помощью внешнего источника
Описание геометрии эксперимента в виде с++ кода может быть не удобно по нескольким причинам. Основной можно считать тот факт, что приходится делать двойную работу: описывать геометрию эксперимента в инженерных чертежах, и снова описывать геометрию в симуляции Хорошо было бы иметь возможность экспортировать
Неоднородное поле
Для того, чтобы определить поле с собственной конфигурацией, пользователь должен унаследовать абстрактный класс G4Field
(или его потомка) и реализовать метод GetFieldValue
. Метод принимает на вход два массива - один содержит 4 числа, координаты точки и момент времени, для которых нужно рассчитать значение поля. Во второй массив внутри метода должен быть записан набор значений, задающих поле в заданной точке.
В качестве примера расмотрим создание неоднородного электрического поля. В заголовочном файле мы определим наш класс NonUnoformField
, наследуясь от класса G4ElectricField
- абстрактного класса электрического поля. В конструкторе класса мы установим параметры неоднородности.
Расмотрим реализацию метода GetFieldValue
. Поскольку электрическое поле это частный случай электромагнитного поля, то массиву в который мы записываем вычисленное значение полей, соответсвует следующая легенда: первые три значения будут восприниматься как компоненты вектора магнитной индукции, а следующие три как компонеты вектора напряжености электрического поля. Поскольку мы реализуем чисто электрическое поле мы обнуляем первые три компонета массива. Следует отметить что с точки зрения GEANT4 электрическое поле отличается от магнтного возможностью совершать работу, это отличие фиксируется с помощью логической переменной в классе G4ElectricField
.
Детекторы
GEANT4 включаетя в себя несколько шаблонных детекторов
Last updated