ScintillationAndOptical

Содержание

Оптические процессы в 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 — длина для данной энергии.

Edit page