主题:【第八届原创】用TOPAS校正XRD高角峰被Knife edge阻挡后的强度和峰形

浏览0 回复12 电梯直达
iangie
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
维权声明:本文为iangie原创作品,本作者与仪器信息网是该作品合法使用者,该作品暂不对外授权转载。其他任何网站、组织、单位或个人等将该作品在本站以外的任何媒体任何形式出现均属侵权违法行为,我们将追究法律责任。
在XRD谱图中,低角(<5度)的背景常常很高。这部分强度计数主要是来源于空气散射。
<---比如网上的这张XRD谱图, 低角背景很高,影响了Bragg峰的测量
为了扣除空气散射,布鲁克Bruker开发了一种Motorised Knife Edge,其原理是悬在平板样品上刀片随着2theta逐渐升高。这个自动刀片的高度通过严格的几何公式计算,由程序控制,以保证不会阻挡入射X光束和反射X光束,只阻挡空气散射。

但是,不是人人都买了这个先进设备的。。。以前大多数用户用的是手动调节高度的fix Knife edge。只扫低角的就把刀片调低点,需要扫到高角就把刀片调高点。(仔细点的用户会用点高中几何公式来计算不同狭缝宽度在某2tehta下的入射束高度。但毕竟是很麻烦的事情,不是每个XRD用户都关心仪器设置的。):

现在的问题是虽然Fix knife edge低角的背景扣除确实很给力,但是它不会自动升起,在高角有可能阻挡Bragg信号。
那么高角被阻挡的Bragg信号怎么校正呢?
有两方面校正需要考虑到:一是当刀片阻挡入射束以后,样品受照面积下降,以至于Bragg峰强度下降。二是平板样品受照长度的减小使平板样品峰形非对称程度减小。所以,强度和峰形都要校正。
哈哈, 又到了TOPAS 大显神通的地方了,我计算了入射束高度随2theta的变化,并把这个公式写成TOPAS macro。
-------------论坛吃回车---手动分割线------------
使用固定发散狭缝模式的用户可以使用这两个校正macro (只需要给这两个macro两个参数:1)发散狭缝divang;2)固定刀片高度keh):
'Fix_Divergence_Shape_Correction: divang = divergence angle (EDFA); keh = knife edge height;
macro Fix_Divergence_Shape_with_knife_edge(divang, keh)
{one_on_x_conv = If(Rs Sin(divang/2 Deg) / Cos(Th - divang/2 Deg) < keh, -(Deg/2)/Tan(Th) divang^2, -2 keh^2 (Cos(Th))^3/Sin(Th) Rad/Rs^2);}
-------------论坛吃回车---手动分割线------------
'Fix_Divergence_Intensity_Correction: divang = divergence angle (EDFA); keh = knife edge height;
macro Fix_Divergence_Intensity_with_knife_edge(divang, keh)
{scale_pks = If(Rs Sin(divang/2 Deg) / Cos(Th - divang/2 Deg) < keh, 1, 2 keh Cos(Th)/Deg/divang/Rs);}
-------------论坛吃回车---手动分割线------------
使用渐开发散狭缝模式的用户可以使用这两个校正macro:(渐开狭缝是保证样品受照长度v不随2theta变化的扫描模式)(只需要给这两个macro两个参数:1)样品固定受照长度v;2)固定刀片高度keh):
'Variable_Divergence_Shape_Correction: v = footprint (EDFL); keh = knife edge height;
macro Variable_Divergence_Shape_with_knife_edge(v, keh)
{one_on_x_conv = If(Th < 2*ArcTan(2keh/v), -v^2 Sin(2 Th) Rad/(4 Rs^2), -2 keh^2 (Cos(Th))^3/Sin(Th) Rad/Rs^2);}
-------------论坛吃回车---手动分割线------------
'Variable_Divergence_Intensity_Correction: v = footprint (EDFL); keh = knife edge height;
macro Variable_Divergence_Intensity_with_knife_edge(v, keh)
{scale_pks = If(Th < 2*ArcTan(2keh/v), Sin(Th), 2 keh/v Cos(Th));}
-------------论坛吃回车---手动分割线------------
TOPAS 用户只需要把上面两段macro,复制到TOPAS安装文件夹下的local.inc中,就可以在自己的inp 文件中使用了。
欢迎大家使用,在楼下给出宝贵意见。
-------------论坛吃回车---手动分割线------------
又及:各位看官可能会问,以前不是在探测器端有Anti-scattering slit吗?
对!但那是为闪烁计数器等0维探测器准备的,在那个时代,最好是用Motorised Anti-scattering Slit,跟Motorised Divergence Slit配合使用,可得到非常低的低角背景。 但自从1维 高速线性探测器盛行以来,Motorised Anti-scattering Slit会阻挡大部分1维线性探测器的通道,降低探测器效率,所以在用了1维探测器的设备上,扣除空气散射的任务最好是由Knife edge完成。
为您推荐
您可能想找: X射线衍射仪(XRD) 询底价
专属顾问快速对接
立即提交
大陆
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
赞!有个小问题,Fix_Divergence_Shape_with_knife_edge 程序是topas自带的,还是版主自己写的?
iangie
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
原文由 大陆(handsomeland) 发表:
赞!有个小问题,Fix_Divergence_Shape_with_knife_edge 程序是topas自带的,还是版主自己写的?


呵呵, 当然是自己写的~
以第一个macro为例:
'Fix_Divergence_Shape_Correction: divang = divergence angle (EDFA); keh = knife edge height;
macro Fix_Divergence_Shape_with_knife_edge(divang, keh)
{one_on_x_conv = If(Rs Sin(divang/2 Deg) / Cos(Th - divang/2 Deg) < keh, -(Deg/2)/Tan(Th) divang^2, -2 keh^2 (Cos(Th))^3/Sin(Th) Rad/Rs^2);}
以prime '开头的都是comments
macro 表示Variable_Divergence_Shape_with_knife_edge为宏名, divang与keh为宏参数
宏{}中只有一个语句one_on_x_conv 是调整峰形非对称的卷积,后面的If( ,  ,  )是条件语句,即在临界角度之前用常规的平板样品卷积-(Deg/2)/Tan(Th) divang^2, 在临界角度之后用被knife edge阻挡后的平板样品卷积-2 keh^2 (Cos(Th))^3/Sin(Th) Rad/Rs^2
临界条件Rs Sin(divang/2 Deg) / Cos(Th - divang/2 Deg) = keh 中Deg表示Pi/180, Th=θ,divang表示α 很容易通过基本几何得到。
大陆
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
原文由 iangie(iangie) 发表:
呵呵, 当然是自己写的~
再赞一次!
七月
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
iangie
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
原文由 七月(shadow_hlr) 发表:
我可以称你为高级玩家吗?这是程序猿的工作吧


本科生以上都学过C语言的
TOPAS的公式与C语言相比简单多了
正如minecraft这个游戏为什么这么火一样,就是因为它提供了一个平台,让玩家实现自己的各种自动化设想。
同样,
TOPAS是唯一允许用户自己定制精修模型的Rietveld软件,不火都不行:(以国际晶体学联合会的八本权威杂志为例)


七月
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
原文由 iangie(iangie) 发表:
本科生以上都学过C语言的
TOPAS的公式与C语言相比简单多了
正如minecraft这个游戏为什么这么火一样,就是因为它提供了一个平台,让玩家实现自己的各种自动化设想。
同样,
TOPAS是唯一允许用户自己定制精修模型的Rietveld软件,不火都不行:(以国际晶体学联合会的八本权威杂志为例)



我只学过最基础的VB语言·····
允许修改之后,当然更应该关注用户自己的修正方案是否合适吧,而关于这点有没相应的评价方式?

iangie
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
原文由 七月(shadow_hlr) 发表:


在创造了一个自动化的装置之后 minecraft并不会给玩家评价 “你的模型是对的”或者“你的模型不对”。
只要能实现你想达到的功能,任何模型都是对的!
同样在TOPAS中,只要你自定义的精修模型能够得到更好的拟合水平(即更小的残差Rwp),并且模型产生的结果符合物理意义。
那么你模型就是对的,并且你创造的这个模型是可发表的。
对于没信心创造进修模型的XRD的初学者,可以使用TOPAS的GUI (Graphic User Interface) 模式,里面所有常用模型都是表格化的(这是给初学者使用的),正如minecraft为玩家准备了 生存模式 一样。
七月
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
原文由 iangie(iangie) 发表:
在创造了一个自动化的装置之后 minecraft并不会给玩家评价 “你的模型是对的”或者“你的模型不对”。
只要能实现你想达到的功能,任何模型都是对的!
同样在TOPAS中,只要你自定义的精修模型能够得到更好的拟合水平(即更小的残差Rwp),并且模型产生的结果符合物理意义。
那么你模型就是对的,并且你创造的这个模型是可发表的。
对于没信心创造进修模型的XRD的初学者,可以使用TOPAS的GUI (Graphic User Interface) 模式,里面所有常用模型都是表格化的(这是给初学者使用的),正如minecraft为玩家准备了 生存模式 一样。
谢谢楼主深入解析。
pertplus
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
正在学习Topas, 这个之前都做背低拟合了,现在可以试试搂主的程序
iangie
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
原文由 pertplus(pertplus) 发表:
正在学习Topas, 这个之前都做背低拟合了,现在可以试试搂主的程序


本文的两个macro都是对峰的校正,一个校正峰强,一个校正峰形。跟背景没有关系。
猜你喜欢最新推荐热门推荐更多推荐
品牌合作伙伴