跳转到主要内容

PYTHIA和NumPy之间的接口

项目描述

numpythia 已有一段时间没有积极维护。这主要是因为出现了新的替代品,这些替代品既更快又更灵活。例如

  • 官方Pythia 8 (SWIG)绑定可通过Conda获取。

  • impy项目实现了用于宇宙射线和高能粒子物理学的流行事件生成器的通用用户界面。

numpythia:PYTHIA和NumPy之间的接口

https://img.shields.io/pypi/v/numpythia.svg https://zenodo.org/badge/DOI/10.5281/zenodo.1471492.svg Test status

numpythia提供了一个接口,使您可以将事件生成为包含粒子四动量的NumPy数组。默认情况下,numpythia仅依赖于NumPy,并构建了PYTHIA和HepMC源代码的内部副本。

独立安装

简单地使用内置的PYTHIA和HepMC

pip install -v numpythia

您就可以开始了!

支持构建外部PYTHIA的支持在愿望清单中。

请注意,如果您使用的是MacOSX系统,则安装可能需要设置环境变量,具体说明请参见此处

严格依赖关系

入门

>>> from numpythia import Pythia, hepmc_write, hepmc_read
>>> from numpythia import STATUS, HAS_END_VERTEX, ABS_PDG_ID
>>> from numpythia.testcmnd import get_cmnd
>>> from numpy.testing import assert_array_equal

>>> pythia = Pythia(get_cmnd('w'), random_state=1)

>>> selection = ((STATUS == 1) & ~HAS_END_VERTEX &
            (ABS_PDG_ID != 12) & (ABS_PDG_ID != 14) & (ABS_PDG_ID != 16))

>>> # generate events while writing to ascii hepmc
>>> for event in hepmc_write('events.hepmc', pythia(events=1)):
>>>    array1 = event.all(selection)

>>> # read the same event back from ascii hepmc
>>> for event in hepmc_read('events.hepmc'):
>>>    array2 = event.all(selection)

>>> assert_array_equal(array1, array2)
True

任何粒子信息数组的dtype为

np.dtype([('E', 'f8'), ('px', 'f8'), ('py', 'f8'), ('pz', 'f8'), ('pt', 'f8'),
          ('mass', 'f8'), ('rap', 'f8'), ('eta', 'f8'), ('theta', 'f8'),
          ('phi', 'f8'), ('prodx', 'f8'), ('prody', 'f8'), ('prodz', 'f8'),
          ('prodt', 'f8'), ('pdgid', 'i4'), ('status', 'i4')])

有关喷射聚类,请参阅pyjet

教程

设置PYTHIA

可以通过三种方式传递PYTHIA设置:通过构造函数的**kwargs参数Pythia(…, **kwargs)

>>> pythia = Pythia(..., Beams_eCM=13000.)

或作为字典

>>> pythia = Pythia(..., params={'Beams:eCM':  13000.})

或通过Python命令文件

>>> pythia = Pythia(config='path/to/config.cmd')

完整的设置列表可以在PYTHIA主页上找到。

请注意,如果使用kwargs,则设置名称中的“:”被替换为“_”。kwargs优先于params,它们都优先于config。示例配置文件可以在numpythia.testcmnd目录下找到。

生成事件

要生成事件,请执行

>>> events = pythia(events=100)
>>> events
<generator at 0x10cf06f78>

其中events是一个包含所有生成的粒子的GenEvent生成器。

生成的粒子可以通过allfirstlast方法访问,它们有两个可选参数selectionreturn_hepmc。Selection是一个过滤器或过滤器的组合,通过位运算应用于事件中的粒子(如入门示例所示)。可用的过滤器包括

STATUS, PDG_ID, ABS_PDG_ID, HAS_END_VERTEX, HAS_PRODUCTION_VERTEX,
HAS_SAME_PDG_ID_DAUGHTER, IS_STABLE, IS_BEAM

当使用all时,return_hepmc默认设置为False

>>> for e in events:
>>>     array = e.all(selection)

返回一个描述如上所述的粒子数组。当使用first和last时,return_hepmc默认设置为True

>>> for e in events:
>>>     gen_part_f = e.first(selection)
>>>     gen_part_l = e.last(selection)

返回一个GenParticle

生成的粒子

GenParticleHepMC::GenParticle的numpythia接口,具有以下属性

pid, status, e, px, py, pz, pt, eta, phi, mass, theta, rap

GenParticle还具有以下方法:parentschildrenancestorsdescendantssiblings,它们都有之前描述的两个可选参数selectionreturn_hepmc。例如

>>> for e in events:
>>>     w = e.last((ABS_PDG_ID == 24) & HAS_END_VERTEX))
>>>     w.children()
array([(240.60708981, 115.76101664, 126.16766767, -169.03439984, 171.22760682, 0.5, -0.87228439, -0.87228739, 2.34974894, 0.82838703, 0., 0., 0., 0.,  3, 23),
   ( 52.59241372,   9.21296404,  50.77873929,  -10.01763001,  51.60774235, 1.5, -0.19283178, -0.19291222, 1.76252302, 1.39131523, 0., 0., 0., 0., -4, 23)],
  dtype=[('E', '<f8'), ('px', '<f8'), ('py', '<f8'), ('pz', '<f8'), ('pT', '<f8'), ('mass', '<f8'), ('rap', '<f8'), ('eta', '<f8'), ('theta', '<f8'), ('phi', '<f8'), ('prodx', '<f8'), ('prody', '<f8'), ('prodz', '<f8'), ('prodt', '<f8'), ('pdgid', '<i4'), ('status', '<i4')])

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

numpythia-1.3.1.tar.gz (11.1 MB 查看哈希值)

上传时间

支持