Page tree
Skip to end of metadata
Go to start of metadata

Вместо того что бы моделировать что не попадя в GEANT4, можно использовать его как калькулятор электромагнитных процессов.

Однако нужно учесть некоторые особенности, не смотря на то что мы ничего не собираемся симулировать, мы должны все равно совершить все шаманские действия по подготовке симуляции. Это связано с тем что ЭМ-калькулятор используется для внутренних расчетов и без инициализации сеанса симуляции работать не будет (Alexander Nozik - вот он явный пример ужаса geantовской архитектуры).

Соответственно мы создаем минимальную геометрию, пушку и физический лист и пользовательский класс по управлению сеансом (наследник G4UserRunAction). Именно в последнем и будет работать наш калькулятор. Так рекомендует делать пример extended/electromagnetic/TestEm0. Обращу внимание что нас интересуют не get методы (которые используются предрасчеты для конкретных объемов), а compute  методы позволяющие определять сечения и dE/dx "на лету". Также для того чтобы калькулятор мог работать с поиском по материалам (то есть в том случае когда  мы передаем в калькулятор не объект, описывающий материал, а строку-имя) нужно предварительно инстанцировать этот материал. Пример использования калькулятора приведен ниже:

EM-calculator
void RunAction::BeginOfRunAction(const G4Run* aRun){
    G4EmCalculator emCalculator; //создаем калькулятор
    G4Material* mat = G4NistManager::Instance()->FindOrBuildMaterial("G4_H"); //истанцируем водород
    cout<< mat->GetDensity()/ (gram/cm3)<<endl;
    double runwayEnergy = emCalculator->ComputeTotalDEDX(1*MeV, "e-", "G4_H");// считаем dE/dx для одномэвного электрона в водороде (поиск по имени элемента работает только потому что я создад водород раннее.
//    emCalculator->PrintDEDXTable(G4Electron::Definition());
    cout<<"Runway energy: " << runwayEnergy/ (MeV/mm)<<endl;
}


  • No labels

2 Comments

  1. Не очень понял, что ты с этим хочешь делать. Для расчета электромагнитных полей есть гораздо лучшие инструменты. Тот же Comsol.

    1. Это калькулятор сечение и ионизационных потерь.