粒子数据和识别码

Particle的Python项目详细描述


particle

粒子:PDG粒子数据和识别码

PyPIhttps://zenodo.org/badge/DOI/10.5281/zenodo.2552429.svgBuild StatusCoverageTestsBinder

粒子为Particle Data Group(pdg)提供了一个pythonic接口。 粒子数据表和粒子识别码。

pdg定义了标准粒子标识(id)编号方案。 包提供了PDGID类,实现对这些pdg id的查询。 这些查询也可以通过模拟 C++接口。

Particle类将信息包装在pdg粒子数据表中,并 提供面向对象的界面和强大的搜索和查找实用程序。

当前版本的包反映了 heppid和heppdt版本3.04.01中定义的实用功能, 见http://lcgapp.cern.ch/project/simu/HepPDT/

安装

像任何其他python包一样安装particle

pip install particle

或者类似的(如果愿意,可以使用--uservirtualenv等)。

严格依赖性

变更日志

有关显著变化的历史,请参见changelog

入门:pdgids

>>>fromparticleimportPDGID>>>>>>pid=PDGID(211)>>>pid<PDGID:211>>>>pid.is_mesonTrue>>>pid=PDGID(99999999)>>>pid<PDGID:99999999(is_valid==False)>

为了方便起见,PDGID类的所有属性都可用作独立函数:

>>>fromparticle.pdgidimportis_meson>>>>>>is_meson(211)True

pdgid文本为最常见的粒子提供(PDGIDclass)别名,名称易于识别。 例如:

>>>fromparticle.pdgidimportliteralsaslid>>>>>>lid.pi_plus<PDGID:211>>>>>>>fromparticle.pdgid.literalsimportLambda_b_0>>>Lambda_b_0<PDGID:5122>>>>Lambda_b_0.has_bottomTrue

您可以使用以下命令行快速显示pdgid信息:

$ python -m particle pdgid 323
<PDGID: 323>
A              None
J              1.0
L              0
S              1
Z              None
abspid         323
charge         1.0
has_bottom     False
...

入门:粒子

可以使用多种方法获取粒子。如果你知道pdgid号码 您可以直接获取粒子,也可以使用搜索:

>>>fromparticleimportParticle>>>Particle.from_pdgid(211)<Particle:name="pi+",pdgid=211,mass=139.57061±0.00024MeV>>>>>>>Particle.findall('pi')[0]<Particle:name="pi0",pdgid=111,mass=134.9770±0.0005MeV>

可以使用关键字参数搜索属性,其中包括 pdg_namenamemasswidthchargethree_chargeanti_flagrankIJGPquarksstatusmass_uppermass_lowerwidth_upperwidth_lower。 您可以传递任何属性的可调用或完全匹配。 参数particle也可以设置为True/False, 限制对粒子或反粒子的搜索。 您还可以使用第一个位置自己构建搜索 参数,它接受给定粒子对象本身的可调用项。 如果第一个位置参数是字符串,则它将与 粒子的name。替代的.find()只需要一个 搜索返回的匹配项,如果多于或少于一个,则将引发错误 找到匹配项。

以下是可能的复杂搜索:

>>># Print out all particles with asymmetric decay width uncertainties>>>ps=Particle.findall(lambdap:p.width_lower!=p.width_upper)>>>forpinps:...print(p.name,p.pdgid,p.width_lower,p.width_upper)>>>>>># Find all antiparticles with 'Omega' in the name>>>Particle.findall('Omega',particle=False)# several found>>>>>># Find all antiparticles of name=='Omega'>>>Particle.findall(name='Omega',particle=False)# none found>>>>>># Find all antiparticles of pdg_name=='Omega'>>>Particle.findall(pdg_name='Omega',particle=False)# only 1, of course[<Particle:name="Omega~+",pdgid=-3334,mass=1672.5±0.3MeV>]>>>>>># Find all neutral beauty hadrons>>>Particle.findall(lambdap:p.pdgid.has_bottomandp.charge==0)>>>>>># Find all strange mesons with c*tau > 1 meter>>>fromhepunitsimportmeter>>>Particle.findall(lambdap:p.pdgid.is_mesonandp.pdgid.has_strangeandp.ctau>1*meter,particle=True)[<Particle:name="K(L)0",pdgid=130,mass=497.611±0.013MeV>,<Particle:name="K+",pdgid=321,mass=493.677±0.016MeV>]

一旦有了粒子,就可以访问任何属性以及几个方法。 虽然它们不是真正的属性,但是您可以访问is_name_barredspin_type。 你也可以.invert()一个粒子。

有很多打印颗粒的选择: ^{TT33}$,^{TT34}$,^{TT35}$,^{TT36}$,笔记本中的HTML打印输出, 当然还有reprstr支持。

你也可以从粒子中得到.pdgid。 对粒子进行分类将把最低的abs(pdgid)放在第一位。

粒子文本为最常见的粒子提供(Particleclass)别名, 名字容易辨认。例如:

>>>fromparticle.particleimportliteralsaslp>>>lp.pi_plus<Particle:name="pi+",pdgid=211,mass=139.57061±0.00024MeV>>>>>>>fromparticle.particle.literalsimportLambda_b_0>>>Lambda_b_0<Particle:name="Lambda(b)0",pdgid=5122,mass=5619.60±0.17MeV>>>>Lambda_b_0.J0.5

可以使用命令行快速搜索粒子 (注意:可以使用/需要引号,但在Windows上只能使用双引号):

$ python -m particle search "K*0"
<Particle: name="K*(892)0", pdgid=313, mass=895.55 ± 0.20 MeV>
<Particle: name="K*(1680)0", pdgid=30313, mass=1718 ± 18 MeV>
<Particle: name="K*(1410)0", pdgid=100313, mass=1421 ± 9 MeV>

如果通过搜索或给定pdgid号仅选择一个粒子,则可以看到有关 粒子:

$ python -m particle search 311
Name: K0             ID: 311          Latex: $K^{0}$
Mass=497.611 ± 0.013 MeV
Width= -1.0 MeV
Q (charge)=0       J (total angular)=0.0      P (space parity)= -
C (charge parity)= ?       I (isospin)=1/2      G (G-parity)= ?
    SpinType: SpinType.PseudoScalar
    Quarks: dS
    Antiparticle name: K~0 (antiparticle status: Barred)

高级:加载自定义表

如果需要,可以控制粒子数据表。可以使用t附加新的数据表他遵循语法:

>>>fromparticleimportParticle>>>Particle.load_table('new_particles.csv',append=True)

还可以使用append=False(默认值)完全替换粒子表。

高级:转换

可以使用particle.particle.convert中的实用程序转换和更新粒子表。这需要 pandas包,并且仅使用python 3进行测试。运行以下命令获得更多帮助:

$ python3 -m particle.particle.convert --help

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
传递Java处理类类型参数的方式的参数   java安卓中间层admob在logcat中导致大量GC_FOR_ALLOC释放消息   java Vert。x Http请求未将参数分配为配置   java中多线程的输出不正确   如何减少java本地线程的冗余   java不完全分块结果   使用OpenCv时java中的Mat数据类型不受支持错误   Java中的正则表达式不工作,而同一正则表达式在shell中工作   java如何从数组中删除元素?   JDBCJava。sql。SQLException:[Microsoft][ODBC Microsoft Access驱动程序]操作必须使用可更新的查询   java如何以对角线打印字符串变量的字符?   SonarQube 5.2的java自定义插件生成NoClassDefFoundError   macos使用Java应用程序打开浏览器选项卡