Skip to content
Snippets Groups Projects
  • Zhou Zhihao's avatar
    Update 3 files · 291183ff
    Zhou Zhihao authored
    - /src/MyPhysicsMessenger.cc
    - /README.md
    - /README_English.md
    291183ff

G4EmCaptureCascadeWithMudirac

项目简介

Geant4默认使用波尔模型计算mu-和介子被原子俘获后跃迁释放的能量,仅仅使用缪子的质量替换电子的质量。这个模型计算得到的Muonic X-ray的能量与实验得到的结果存在一定的偏差,ISIS的研究人员开发的mudirac程序能够提供更好的结果。本项目使用mudirac计算得到Muonic X-ray的能量替换原有的使用玻尔模型计算得到的能量。

生成数据的方式

  1. 从下面的仓库下载并编译mudirac。编译完成后,配置环境变量,将mudirac/bin的路径添加到PATH中
    https://github.com/muon-spectroscopy-computational-project/mudirac
  2. 使用PythonScripts中的脚本多进程地生成数据文件
    python3 PythonScripts/ParseOutputToDat.py N(N是可用的核心数,N is the number of available CPU cores)
    python Xrout2Data.py N(N是可用的核心数,N is the number of available CPU cores)
  3. 默认情况下,上述脚本执行完成后,会在PythonScripts中创建一个muonicxraydata子文件夹,且所有可用的数据都被保存在这个子文件夹中。如果要修改默认位置,可以修改Xrout2Data.py中的路径。

使用方式

  1. 编译生成共享对象(shared object)即.so文件
    mkdir build
    cd build
    cmake ..
    make
  2. 在自己的项目中使用此动态链接库
  • 在PhysicsLists被初始化之前,创建一个MyPhysics对象,并调用RegisterPhysics成员函数
    MyPhysics* myPhysics = new MyPhysics;
    physicsList->RegisterPhysics(myPhysics);
  • 修改自己的项目的CMakeLists.txt,添加当前项目的include路径并使自己的target链接到本项目产生的.so文件;
  • 将.so文件的路径添加到环境变量LD_LIBRARY_PATH之后以使得程序可以找到该.so文件
    export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:xxx(xxx表示编译本项目生成的.so文件所在的文件夹的绝对路径)
  • 在宏文件中添加命令行
    使用Mudirac的文件
    /EmCaptureCascade/mudirac/useData true
    使用Geant4默认的过程
    /EmCaptureCascade/mudirac/useData false
  1. 设置环境变量,配置环境变量MUONCAPCAS_DIR,指定mudiracdata的路径
    export MUONCAPCAS_DIR=xxx/mudiracdata
    这个路径既可以是自己运行Xrout2Data.py得到的数据的路径,也可以是解压mudiracdata得到的数据的路径。

示例

以G4beamline-3.06为例

  1. 在${g4bl_source_path}/g4bl/BLCMDphysics.cc中引入头文件MyPhysics.hh
  2. 在 G4VModularPhysicsList pl = dynamic_cast<G4VModularPhysicsList>(physicsList);下面添加
    MyPhysics* myPhysics = new MyPhysics();
    pl->RegisterPhysics(myPhysics);
  3. 修改${g4bl_source_path}/g4bl/CMakeLists.txt
    1> 添加include_directories(/path_to_MyMuonMinusAtomicCapture/include)和link_directories(/path_to_libMyMuonMinusAtomicCapture.so) 2> 修改
    target_link_libraries(g4bl ${LIBS})

    target_link_libraries(g4bl ${LIBS} libMuDiracMuonMinusAtomicCaptureCascade.so)
  4. 编译G4beamline
  5. 在输入文件中添加/EmCaptureCascade/mudirac/useData true,进行测试。