Содержание |
Оптические процессы в Geant4
Страничка (http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/TrackingAndPhysics/physicsProcess.html#5.2.5) из официальной документации по G4. Если что-либо не сказано и здесь, и там, то больше можете даже не пытаться искать — в интернете вы на свой вопрос ответа не найдете.
Итак
Оптическими процессами называется подмножество джеантовских процессов, имеющих дело с частицами opticalphoton. Это не то же самое, что и gamma, и обычные эффекты, имеющие место при пролете гамма-кванта, с этими opticalphoton не происходят. То есть фотоэффект от видимого света в g4 смоделировать не удастся.
Вот процессы, дающие или берущие opticalphoton:
G4Cerenkov -- Излучение Вавилова-Черенкова G4Scintillation -- Сцинтилляция G4OpAbsorption -- Равномерное поглощение потока световых фотонов G4OpRaleigh -- Рэлеевское рассеяние G4OpBoundaryProcess -- Различные эффекты на границе сред, в том числе отражение и преломление
Необходимые шаги по включению оптических процессов:
1)Зарегистрировать класс оптических фотонов
G4OpticalPhoton::OpticalPhotonDefinition();
2)Подключить для них нужные процессы (в основном цикле подключения процессов Geant4)
G4ParticleDefinition* particle = theParticleIterator->value(); G4ProcessManager* pmanager = particle->GetProcessManager(); G4String particleName = particle->GetParticleName(); if (theCerenkovProcess->IsApplicable(*particle)) { pmanager->AddContinuousProcess(theCerenkovProcess); } if (theScintillationProcess->IsApplicable(*particle)) { pmanager->AddProcess(theScintillationProcess); pmanager->SetProcessOrderingToLast(theScintillationProcess, idxAtRest); pmanager->SetProcessOrderingToLast(theScintillationProcess, idxPostStep); } if (particleName == "opticalphoton") { pmanager->AddDiscreteProcess(theAbsorptionProcess); pmanager->AddDiscreteProcess(theRayleighScatteringProcess); pmanager->AddDiscreteProcess(theBoundaryProcess); }
(Естественно, этот код только схема.)
3) Настроить оптические параметры интересующей среды. Без этого шага ни один из процессов работать не будет, а данные, которые могут понадобиться, найти крайне сложно. Делается это в том же месте, где определяются материалы. Существует класс G4MaterialPropertiesTable, который инкапсулирует свойства двух типов: числа и массивы. Каждое такое свойство индексируется именем. Для каждого материала надо создать такую G4MaterialPropertiesTable и затем прикрепить ее к объекту материала:
G4MaterialPropertiesTable *mpt = new G4MaterialPropertiesTable; // Заполняем таблицу свойствами... // Заполняем, заполняем... my_material->SetMaterialPropertiesTable(mpt);
Числовые свойства назначаются следующим образом:
mpt->AddConstProperty("NAME", value); // NAME -- имя, value -- число
С массивами посложнее.
double x[] = {1, 2, 3, 4, 5}; double y[] = {1, 4, 9, 16, 25}; mpt->AddProperty("QUAD", x, y, sizeof(x));
Здесь мы определили свойство с именем QUAD, значение которого представляет собой два массива x и y, и при этом y=x^2.
Сцинтилляция
Сцинтилляция в G4 сделана примерно так: при пролете через вещество частица теряет часть своей энергии, и эта энергия идет не в EnergyDeposit, а выделяется в виде оптических фотонов. Последние рождаются неодновременно, с некоторым спектральным распределением, которое эволюционирует со временем. Эта эволюция задается двумя опорными точками — быстрой и медленной компонентой. В принципе, спектр рожденных фотонов в каждый момент времени равен сумме быстрого и медленного спектра. Следующие свойства необходимо задать для работы сцинтилляции:
SCINTILLATIONYIELD Выход сцинтилляции (число фотонов на МэВ). RESOLUTIONSCALE Параметр, характеризующий статистический разброс числа рожденных фотонов. На это число умножается вычисленная по закону Гаусса ст. ошибка: S = ResolutionScale*sqrt(Edep*Yield). FASTTIMECONSTANT Время уменьшения в e раз быстрой компоненты сцинтилляции. SLOWTIMECONSTANT То же для медленной. YIELDRATIO Процент фотонов, рожденных в быстрой компоненте (остальное -- в медленной). Это число от 0 до 1. FASTCOMPONENT Массив, где x -- энергия световых фотонов, у -- нормированное число фотонов с данной энергией в быстрой компоненте сцинтилляции. SLOWCOMPONENT То же для медленной.
Поглощение (G4OpAbsorption)
Это просто уменьшение потока световых фотонов при прохождении. Определяется одним параметром, ABSLENGTH, то есть длиной на которой поток уменьшается в e раз. Это может быть одно число, либо массив, где x — энергия световых квантов, y — длина для данной энергии.