ScintillationAndOptical

Revision as of 10:06, 1 Aug 2006
213.131.7.83 (Talk | contribs)

← Go to previous diff
Revision as of 10:48, 1 Aug 2006
213.131.7.83 (Talk | contribs)

Go to next diff →
Line 13: Line 13:
G4OpBoundaryProcess -- Различные эффекты на границе сред, в том 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 Параметр, характеризующий статистический
 + разброс числа рожденных фотонов. Это число
 + вычисляется по закону Гаусса как
 + N = ResolutionScale*sqrt(Edep*Yield).
 + FASTTIMECONSTANT Время уменьшения в e раз быстрой
 + компоненты сцинтилляции.
 + SLOWTIMECONSTANT То же для медленной.
 + YIELDRATIO Процент фотонов, рожденных в быстрой
 + компоненте (остальное -- в медленной). Это
 + число от 0 до 1.
 + FASTCOMPONENT Массив, где x -- энергия световых фотонов,
 + у -- нормированное число фотонов с данной
 + энергией в быстрой компоненте сцинтилляции.
 + SLOWCOMPONENT То же для медленной.
 +
 +===Поглощение (G4OpAbsorption)===
 +Это просто уменьшение потока световых фотонов при прохождении. Определяется одним параметром, ABSLENGTH, то есть длиной на которой поток уменьшается в e раз. Это может быть одно число, либо массив, где x — энергия световых квантов, y&anbsp;— длина для данной энергии.

Revision as of 10:48, 1 Aug 2006

Содержание

Оптические процессы в 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     Параметр, характеризующий статистический 
                    разброс числа рожденных фотонов. Это число
                    вычисляется по закону Гаусса как
                    N = ResolutionScale*sqrt(Edep*Yield).
FASTTIMECONSTANT    Время уменьшения в e раз быстрой
                    компоненты сцинтилляции.
SLOWTIMECONSTANT    То же для медленной.
YIELDRATIO          Процент фотонов, рожденных в быстрой
                    компоненте (остальное -- в медленной). Это
                    число от 0 до 1.
FASTCOMPONENT       Массив, где x -- энергия световых фотонов, 
                    у -- нормированное число фотонов с данной 
                    энергией в быстрой компоненте сцинтилляции.
SLOWCOMPONENT       То же для медленной.

Поглощение (G4OpAbsorption)

Это просто уменьшение потока световых фотонов при прохождении. Определяется одним параметром, ABSLENGTH, то есть длиной на которой поток уменьшается в e раз. Это может быть одно число, либо массив, где x — энергия световых квантов, y&anbsp;— длина для данной энергии.

Edit page