Модели сцинтилляционных гамма-спектрометров, построенные по чертежам и паспортам, и проверенные против измеренных данных, а не только собранные.
Правило, которого держится репозиторий: у каждого размера есть источник, а там,
где источника нет, в коде стоит слово ДОПУЩЕНИЕ. Числовые данные — выходы
линий, коэффициенты ветвления, коэффициенты ослабления — не берутся из
справочников по памяти, а считаются тем же Geant4, что и транспорт.
| детектор | кристалл | геометрии проб | состояние |
|---|---|---|---|
| Гамма-1С | NaI(Tl) 63×63 в свинце 50 мм | маринелли 1 л, «Дента», Петри, точечные 5 и 25 см | проверена по 5 геометриям; расхождения локализованы в моделях сосудов, причина не найдена — отчёт |
| RadiaCode 101–103 | CsI(Tl) 10×10×10 | авторские маринелли 200 и 500 мл | кривые построены и сверены; три пункта протокола не выполнены — подробности |
Оба прибора сверялись с кривыми ЛСРМ в маринелльной постановке и дали близкие нормировочные коэффициенты (0,858 и 0,833). Это не признак общей систематики метода: у Гамма-1С точечные геометрии показали, что модель детектора верна, а превышение принадлежит геометрии сосуда. Совпадение двух чисел, полученных в одной и той же постановке, ничего про метод не доказывает — см. оговорку в карточке RadiaCode.
Геометрии проб, матрицы и библиотека разбора не принадлежат детектору: сосуд Маринелли 1 л и матрица ОИСН-16 понадобятся следующему прибору, а чтение спектров и подгонка кривой — вообще всем. Поэтому они вынесены наверх, а не лежат внутри папки прибора.
common/
src/ каркас модели: физлист, накопление спектра, счёт испущенных квантов
cmake/ общий шаблон сборки
py/ библиотека разбора: becqmoni.py, contam.py, paths.py
docs/ методика, ловушки, протокол проверок — общие для всех моделей
detectors/<прибор>/
geometry/ macros/ drivers/ analysis/ results/ reference/ drawings/
geometries/ общие геометрии проб: маринелли, «Дента», Петри, точечная
materials/ общие матрицы проб: ОИСН-16, РИСН-379, вода
tools/ обезличивание, проверка перед публикацией, загрузчики данных
docs/ титульная страница и статья по RadiaCode
Расчётные спектры не коммитятся. Их сотни файлов и десятки мегабайт; вместо
них лежат манифест прогонов и готовые кривые в results/. Чтобы взять
эффективность на нужной энергии, собирать Geant4 не требуется.
Эталонные данные лежат здесь целиком. Комплект поверки Гамма-1С, кривые
ЛСРМ, усреднённые фоны и паспорта эталонов — в
detectors/Gamma-1S/reference/lsrm/, в двух форматах: приборном двоичном
.spe и BecqMoni XML. Форматы взаимозаменяемы, это проверяется скриптом
analysis/xml_vs_spe.py. Репозиторий самодостаточен: внешние источники нужны
только для обновления данных.
Из спектров и паспортов убраны фамилии участников измерений и серийные номера приборов и источников. Соответствие псевдонимов подлинным значениям не публикуется. Фамилии в списках литературы сохранены — это авторы книг и методик, а не участники измерений.
Пути берутся из переменных окружения, в коде нет ни одного пути, привязанного к машине. Все скрипты запускаются сразу после клонирования, без единой переменной: если данных для расчёта нет, скрипт объясняет, чего не хватает, а не падает трассировкой.
| переменная | что задаёт | обязательна |
|---|---|---|
GEANT4_ROOT |
корень Geant4 для CMake | для сборки модели |
G4MODELS_BUILD_<ДЕТЕКТОР> |
каталог расчётов одного прибора, например G4MODELS_BUILD_GAMMA_1S |
нет |
G4MODELS_BUILD |
то же, когда прибор один; понимается и как корень с подкаталогами по приборам | нет |
G4MODELS_REF |
каталог со скачанными эталонными данными; без неё берётся закоммиченный набор | нет |
G4MODELS_MEASURED |
личные измерения оператора (в репозитории их нет) | только для RadiaCode |
SPECTRAVIBE_ROOT |
корень gamma-spectrum-analysis: штатные читатели форматов ЛСРМ | для чтения сырых .spe |
ANON_MAP |
карта обезличивания, вне репозитория | только при публикации |
cmake -S detectors/Gamma-1S/geometry -B build/Gamma-1S -G Ninja
cmake --build build/Gamma-1SДальше — драйверы прогонов в detectors/<прибор>/drivers/ и разбор в
analysis/. Порядок и смысл каждого шага — в отчёте модели.
ANON_MAP=<карта.json> python tools/check_paths.pyПроверка ищет локальные пути, фамилии, серийные номера, почту и токены — в содержимом файлов, включая заголовки двоичных спектров, и в именах файлов. Попав в историю git, такие данные оттуда сами не исчезают. Подробности и правила обезличивания — в tools/TOOLS_INVENTORY.md.
История заморожена. Репозиторий подключён сабмодулем к стороннему проекту, и закреплённый снаружи коммит перезалив истории уничтожает — падает не у нас, а у каждого, кто клонирует потребителя. Правила и порядок правок, который из этого следует, — в common/docs/consumers.md.
- common/docs/validation.md — обязательный протокол проверок. Модель без него — не модель, а картинка.
- common/docs/pitfalls.md — ловушки, каждая из которых уже стоила ошибки в разы, с признаками и лечением.
- common/docs/consumers.md — кто берёт репозиторий сабмодулем, что это запрещает и в каком порядке чинить остаток аудита.
Код — MIT. Чертежи и паспорта приборов принадлежат их изготовителям и приведены в объёме, необходимом для воспроизводимости расчёта. Эталонные спектры — ЛСРМ и ЗАО НПЦ «АСПЕКТ», ссылки в отчётах моделей.