My Avatar

Xiaofei

信仰共产主义,后现代主义者,结构主义者,奇妙发现世界~~

开放研究是如何直面命题

2019年02月22日 星期五

  正如《西西弗斯》中加缪所言,自杀是一个哲学命题,这里将对这一命题的进行一点点讨论,以便对人们的一些想法进行一定的解释。 为避免歧义,这里所指的自杀并非结束自己的生命,而是指一个人选择思想停滞的方式,也就是作为人类思想的一个特有行为来进行解读,缩小了讨论的范围,新命名为“自戕”。

  首先介绍人类的一些思想的特质,如人拥有记忆,人有反思的能力,人的思维是可以通过反思进行自我调节和改变的等等。这时我们必须提到的是,社会中总有一些人认为社会的某些现象是无法改变甚至是轮回的,因此这些人认为这样的事情可以用一种思维理解就是“你必须这样做”或言“你只有这样做”,举例为吃苦的轮回问题,这些人认为“我吃过这样的苦,你只有也尝尝甚至尝个够才能明白”,这些人所为并不是为了这种苦头的避免而是认为这种苦头是轮回的是无法改变的,其实纵观社会的发展社会总是不断变化的不断发展的,正如马克思所言“一切现在的都是要灭亡的”,那么为什么这些人形成了“就是这样”的无法做任何改变的想法了呢?

  分析可以得到,他们的思想选择了停滞,这种停滞一方面来自于自己的无办法另一方面来自外界的无帮助,似乎是可以理解的,然而,生命的本质就是在于不断地发展,更何况于有着思想的人类呢?所以这种停滞即违反了人的生命的初衷,违反了生命,而且是出于个体的主动,是有人自发地说“有些事情就是这样无法改变的”,正是走向了“自戕”,这是一种思维上的精神上的情感上的主动选择的思维停滞,因此我们这里用了双引符号。

  这里可以进行一些讨论,因为这些话语并非是他们自己内心的自述,而是没完没了地灌输于他人还要说给别人听,如传统研究中所讲“只有问才行才能学到东西,只有你去问别人才有交流”,这当然是普遍发生的,可是上述这种“你只有这样做”等等的说法,由上一段的讨论后已经得出是一种“自戕”,那自己选择思想停滞就得了为何要说给别人听?这时候说给别人听了,其意义即”陪葬诉求“,这正是人矛盾的一面,明明是”自戕“却需要他人来一同见证,自己进行了选择不行非要拉别人一起垫背不可,这也正说明了从古至今所阻碍人类社会发展的封建意识形态为何可以一再地存续,“陪葬诉求”正是其传染性本身。

  从上面所言可以看出,所谓“你只能怎样”正是“自戕”的疯狂所伴随的“陪葬诉求”,那么如何避免和转变这样恐怖的思维呢?这里当然,语言本身就反映了思维的框架,所谓“只能”或“你应该”完全是限定性的,而且是非常紧迫的限定,只要打破这一限定即可以找到新的思维。最简单直接的方式,就是换新的语言词汇,如“你可以”,“你尝试”,“你试着”,“你参考一下”,这种新的语言范式,虽然看起来简单而无趣,却实有本质的不同。开放研究所要采用的正是这样的语法。本质上这与冗余理论是相契合的,保证了对冗余存在的肯定,给发展(生命)留下了空间。开放研究的发展这是一个长期的过程,并且非常容易面临冲击,采用这种新的语言方式则是非常有帮助的。

  当然有些人可能说,上面所讲的太极端了,比如“你只能这样做才可以”,即使“只能”一词是限定性的,可是具体的“这样做”本身,也不是完全限定的,也是可以想新的花样可以有丰富的细节。这种想法也是正确的,上面的讨论本身也不能陷入怪圈,成为一种新的限定性的办法,这不就回到出发点了吗?所以说,一旦你提出这种疑问,就说明你已经开始尝试上述讨论的思维过程了,参与即完成了一次思想交流。上面所讨论的所有东西,都是给予一个方法,这正揭示了开放研究的一些思想,也就是尽力地给予人们研究问题的科学方法,这一段的这个例子也即是说明了其重点不在研究内容而在于研究方法。你可以套用上述方法在很多的问题上,尤其希望在你遇到重大困难时绝不会孤立无援,在思想上能够助你一臂之力。

~~继续思考~~

-------开放研究之所以可能

阅读全文

试对开放研究的评论2

2019年06月21日 星期一

AOD还有类似的机构都可以直接在网络上参与,CERN和LIGO等实验均有开放的数据

随着社会发展,越来越多的人将会走上终身学习的道路,而不断出现的新生儿们他们所接受的教育质量在不断提升,后来人学习领悟知识和创新的速度会不断提高,客观上导致比我们更小的年轻人正在光速追赶甚至很快就会在各方面超越,这恐怕是客观上将要发生的事情。比如在网上我有认识的小孩,现在刚刚上大一就已经对linux系统信手拈来就搞个桌面程序,他们的网络视野非常宽广。另外的话,就拿明年来说,2020年中国就要消灭绝对贫困,一个这样没有贫困人口的国家,在2020年中出生的小朋友们无疑是历史上的黄金一代,所谓的人工智能也不断涌现。面对这样的情况,先来人的我们必然面临淘汰,如果没有适当的淘汰机制则意味着冲突,在21世纪的今天冲突无疑不是我们所追求的,那么能化解和促进这样问题的,无疑就是开放研究。这也就是开放研究出现的客观情况,我想也是社会发展的必然。

可以看一下CERN的Opendata Portal,在17年的11月份左右就建立这样的系统了。CC0协议,是Opendata Portal 所采用的版权协议,恰巧从小米手机”小米CC“的翻译上我们也可以看到CC还可以翻译成Chic & Cool,很有趣。

现在刚开始有零星的尝试,随后继续发展到open notebook也是有可能的,等到那个时候,每个人都有机会开展自己的研究,那时又可以说物理学依然是科学界最为先锋的学科之一,这样也将会赢得历史的尊重。

~~继续思考~~

-------开放研究之所以可能

阅读全文

开放研究之所以可能(二)

2018年10月31日 星期三

(不是引言)以下全文所讨论的错误系统其名字容易给人产生误导,晚上和同学聊天的过程中,同学指出逻辑上构建的系统并不是隐含着错误,而是逻辑系统本身是没有错误的,这种系统的描述可能无法完备,所以这里其实应将错误系统名字修改一下,为冗余系统。这是一个恰当的名字,但是由于下面内容均是参考,所以尊重作者以下依然成为错误系统,当然其实并没有什么错,而是有一些发展的可能,即冗余。

为了更好地了解和思考开放研究的可能性,这里引入一些概念来进行讨论,对科学研究过程中出现的一些问题进行所谓消避错,并且重新讨论消避错过程中的可信任问题。之所以看到错误系统这本书,只是闲来瞎逛碰到的

一、错误存在的判别规则和变动规律

1.定义与描述

定义1.1  设 ,,,,其中S是一个时间集,K是空间集,Z是专业组成的集,M是目的集. 显然,开放研究的发展是时间的函数.

定义1.2  这里定义规则,设G是一组规则,,若映射,则称f是错误判别规则函,简称规则函数,记为, 规则函数的理解:

a.解释为,空间和领域和目的一定时,规则仅为时间的函数.

b.解释为,时间和领域和目的一定时,规则仅为空间的函数.

c.解释为常数规则记为.

定义1.3    义规则函数的运算律,有

定义1.4    定义规则函数的交互作用,设的论域分别为,,G3是U3上规则函数,且有,若且对有错误值z1,z2,z3且,则称G1与G2对于论U3是无错误交互作用,否则有交互作用.

定义1.5   若p是一个命题,则称称为p的非,记为-p,若对规则,则记 .

命题1.1   规则的负满足,由此规则可以得到自由.其实我们这里可以定义.

定义1.6   设G是U上一组无错误规则,若,a对于G的错误值是t,而对于U上任意一组无错误规则Gi的值是ti,且均有成立,则称G是U上一组完备规则,记为. 对这样的一组完备规则G,可称之为论域U上有资格的规则.

定义1.7   首先这里定义错误判别规则的等价,若有,则称G1与G2等价记作G1~G2.接上,若有两等价规则,且G1是G2的真子集,则G1优于G2,可以记作. 在论域U中,若G1在U上完备,G2在U上不完备,则G1优于G2,还有如果G1比G2更容易实施,则G1优于G2.

2.错误判别规则的建立或识别错误的模式.

二、错误系统的基本结构和特点 1.基本特点 层次等级性和多侧面性,也就是说错误系统中研究的对象是有层次有等级,反映出随着问题探讨的深度与方面,会呈现出不同的等级,反映出不同的侧面,像洋葱一样. 2.错误系统的基本结构及拓铺 串联型与连锁性 并联型与扩缩性 反馈型与循环性 蕴含型与中心性

3.系统的基本分类 整体错误系统 因果错误系统 错误系统的独立与联系 循环错误

三、消避错的基本形式 错误系统的结构变换

要素与打断 产生与消除 置换与增加

四、可信任问题的讨论 论域与规则的变换

可信任问题的论域与规则

五、可计算与示例 简单问题的计算与示例

以上内容参考自《错误系统》(郭开仲著)

~~未完待续~~
-------开放研究之所以可能

阅读全文

试对开放研究的评论1

2018年03月15日 星期三

(引言)为什么要有开放研究与开放科学两个名字呢?在我的小站里就写成是开放研究了,因为觉得“研究”二字既是名词也是动词,而开放科学是一个不断发展的概念,所以用动词“研究”来描述更有活力一些。

一、同文艺评论的类比

  我们在欣赏艺术作品时,难免会想这个作品的水平是怎么样的?这个作品相比于其他的有什么异同?有哪些优秀的方面?有什么历史渊源?长久以来的艺术形式太多,纷繁复杂,如何鉴赏艺术作品这一问题已经不单单是看的好看听着好听那样简单了,鉴赏家们逐渐引导人们建立了有效的评价方式,也就被称为_文艺评论_,其形式多种多样,有非常专业的方法。所以下面,同样地,对于开放研究这种富有个人特质的、每个人自由选择研究方式的活动,也可以试着对其进行一些评论,寻找其中的风格和特色,我想这将是非常有趣的,这也是对过往所看到的一些东西的梳理。

二、从几个人来看

  首先,来看看,王垠。垠神所擅长似乎是编程语言的开发,他对计算机科学有很深入的了解,曾在数个顶尖的学校学习,并且在微软google英特尔都有工作经历。其为人谦虚,他曾经想把计算机的基本结构讲一讲,后来觉得水太深就放弃了,曾说自己实在不擅长写书,然而,他的博文已经写了100多篇,其实还有很多未收录的篇幅网络上有,这些内容放在一起已经成书而且是带着他的一部分人生来书写的,很了不起。他对自动驾驶的简单论断,一语中的,自动驾驶案的结案确是惊慌失措。

  第2位,阮一峰。本博客就是从阮一峰的文章起步的,字里行间可见他对自由软件运动的信心,并持之以恒地写东西。

  第3位,李杀。这一位写的东西,则像很多人写的东西有点读不懂,有点神经质有点重口味,但是从这里开始引起我注意的正是下面的内容,钱。

  是的,李杀的网站下面有链接patreon,他的网站是收费的;看一下王垠网站的二维码,也是收费;阮一峰的广告位?当然是收费的。可是他们的内容不是隐藏的,而是开放人人可读的,知识付费固然可取,然而人言可畏,“有不虞之誉,有求全之毁”。生活所迫,纷纷扰扰,开放研究者对金钱是如何看待的?“君子爱财,取之有道”,同样是选择方式做开放研究,这几位无疑做了最为大胆的探索。

三、个人特质与我们的生活

  开放研究有一些基本想法,而究竟如何做?如何发展?不会有限定的答案,否则将违背了开放本身。可是总归从一些人身上,我们可以读到很多东西。传统研究将人视为历史和社会的部分,可是辩证不可违,其矛盾面在这样片面的观点下正茁壮成长,发展为人格特质,二者相互激励。开放研究正是遵循这一基本规律,其开放本质与人格特质相结合,从裁定和规范人创造的科学研究行为转变为以发展的眼光,允许各自选择方式方法进行科学研究。其实这一过程也正在我们各自的生活中发生着。

  在全球化下,人们相互之间的沟通益深,行业在欢迎每个人加入,人工智能的出现也在帮助这方面的发展,比如grammar软件,可以用来做英语词汇纠错和简单的语法匹配,虽然高级功能是收费的,但其实普通功能就很好用了;还比如知识分享的社区,经过对信息的筛选可以训练其背后的人工智能,来更快地获取方法,当然对于信息分享的态度也都是各有办法,V2EX不允许删除历史记录,豆瓣知乎等无历史记录可随意更改;甚至包括音乐上的分享,有musescore这样的平台,将各自或写或听得的乐谱上传上来,还有google magenta和google主页上的编曲小游戏,人工智能可以辅助作曲非常有趣,这些音乐是开放的每个人都可以玩一下。

  可以看到,在这样那样的平台下,人人可以选择自己分享知识方法的方式方法,这种特别即是直接反映和肯定了每个人的人格特质,使每个人都有机会把握自己的生活。

四、开放研究的有趣之处

  3天之前,也就是19年3月12日,正值(WWW)万维网诞生30周年,蒂姆·伯纳斯·李提出互联网概念的初衷就是分享知识,然而出于对互联网健康发展的愿景,这位出生于1955年的英国勋爵再次重出江湖意图重振互联网。李勋爵重新建立了公司Inrupt,然后推行了[Contract of Web协议]和[SOLiD]的去中心化的新互联网服务,分别对应了守则和技术,当网速飞快提升,中心化趋势似成必然之时,依然坚守自己的道路。正好今天是315晚会,今年消费者所遇到的问题,正好就是印证了李勋爵的观点,而无疑他早早走在了大家的前面,计算机科学有这样的人在确实令人惊叹。

  另外一个有趣的地方在于,所谓问题出在哪里?其实就如我这样普通人来说,又能提出什么问题呢?所谓出问题,最可怕的就是一大群人,他们早已知晓你的问题在哪里,甚至早已得到答案,然而他们不说不提,他们只是在旁边冷笑,常常会看到这种冷笑,这是非常之有趣的,这就是开放科学的一个有趣之处。当然可以看到做开放科学的人不会是这样的,他们多少要发一点声音,也许是帮助也许是无聊,甚至是胡闹,也可能是默不作声,但是他们报以理解,他们不会冷笑。

  另外一个有趣的地方在于,所谓交流的概念?其实就如我这样普通人来说,又该如何参与交流呢?所谓交流,最可怕的就是一大群人,他们忘记了交流是相互的,从来交流都带着条件,条件呢又是不成文的规则(笑),硬生生把交流搞成了单流,规则呢则是有趣的,目的呢是高端的游戏,谈笑间跳起娇柔扭捏的舞蹈。开放研究则不同,是无任何趣味可言的,游戏是绝然没有的,开放的交流先要做的是分享是共享,尽量排除双方的任何条件,双方主动参与,然而他们是奇怪的,在此基础上所谓分歧他们是不懂的,所谓创造也只是他们的心跳,所谓科学也只是他们的呼吸也没有在意,他们竟然也是不会笑的,他们只是下棋,棋面则是最后达成的合同,写成一份文件作为棋谱,名为协议。

  当人们困惑之时,却极易发现开放研究的乐趣,就在于那些想要帮助我们的人,正在不遗余力地进行着奋斗,我们只要张开双臂拥抱他们就可以了,那么轻松那么自然。可是有些人,当邻居家煮了一些饺子敲敲门想让我们尝尝,我们却大叫,“什么意思?难道嘲笑我不会煮饺子吗?”,却因此而噤若寒蝉,莫非是一种高端的幽默吗?

~~继续思考~~

-------开放研究之所以可能

阅读全文

高能物理实验展望

2018年10月13日 星期六

高能物理实验目前虽然自己已经接触到了,但是由于仅仅是做实验数据统计分析,所以只是做了一个螺丝钉,久而久之极易忘却物理本身。这里试着快速抄一点东西看一看,以便使自己尽可能成为实验物理研究的一员。最近也看到是北京正负电子对撞机建成30周年,也祝愿中国的高能物理事业蒸蒸日上。 在之前杨振宁的文章中我们可以看到,其对加速器物理不无悲观态度,提出应该探寻新型加速器的可能。自己懂不多,这里分成两种,一是新的技术旧的物理过程,二是探索新的物理过程。

##旧的对撞,新的加速器技术 首先要提及的是旧的对撞是什么意思,也就是要看一看大体上世界上的对撞机都是什么基本粒子的对撞。 旧的对撞也就是带电粒子通过电磁相互作用进行操纵后进行对撞,新的技术,则可以了解一下激光加速。

激光尾波场加速原理,有很大的加速梯度,粒子团簇中的粒子数目,发散角,能谱宽度都是重要的指标,目标是产生能量单色性好的电子束。大振幅静电波,等离子体波,等离子体电子密度,相速度与最大振幅有关。尾波场模式与激光脉冲长度有关

##新的对撞 对撞的基本粒子与过去不同,这样的讨论有许多,如gamma-e,或者e-p,等等。

~~继续思考~~

-------开放研究之所以可能

阅读全文

试做名词解释

2019年05月30日 星期四

这里试着对一些接触到的名词进行了解,避免因为专业词汇产生障碍,当然很多可能理解错误随着学习会再修改。这里绝不做科普,所以可能需要数学描述和公式的展示,或者易于了解的参考文献,但是碍于水平依然要之后修改。最近刚刚配置兼容了公式。

  • 连续区?共振区?原子核反应理论?
  • 词源分析: Topology? 拓扑topo一词的词源是“处所”的概念[希腊空间概念的发展],后来发展为“空间”,而在数学中由于对空间的研究引申为“几何”,在对几何的分析中发现需要对几何进行刻画又有了“分类”的意思。计算机常用该词来描述网络的连接和分布情况。至于为何高能物理实验中对衰变道的描述要使用这词,首先想到的是分类的概念,即对粒子的衰变情况进行分类,而至于是否有说明衰变前后双方的数学空间有在连续的变换下不变的性质有可能。
  • 了解什么是龙格库塔方法?了解什么是Hough transform?霍夫变换 可能是数值计算偏微分方程的一个算法,经过共形变换霍夫变换后,可用来帮助径迹拟合,得到更精确的结果。
  • 了解什么是龙格楞次矢量? 想起来面试时候问到龙格库塔方法,我还以为是问隆格楞次矢量,我们都知道关于动量守恒的扩展,有角动量守恒,还有一个守恒的动量,中心立场下LRL矢量(拉普拉斯-隆格-楞次矢量)和哈密顿量対易。另外在量子力学中,在回答中,讨论有关薛定谔方程计算氢原子外自由电子体系简并自由度如果只考虑角动量,则为2l+1,因此单单角动量数学空间是不够的需要加入该LRL矢量,这时才得到了正确的简并度,也说明了LRL矢量的重要性,不应忽略。 如果没有理解数学空间?那在21世纪的今天,所谓数学恐怕就白学了,忘记了就再看看吧数学之旅
  • 了解什么是轻子普适性?Lepton universal 在标准模型拉氏量中,三代轻子与其他场的耦合均有相同的耦合常数,也就是参与相互作用的强度是相同的。实验上用比值来进行测量,和CP破坏的算式有些类似。
  • 了解什么是R值?
  • 了解什么是MCtruth信息?
  • 了解什么是Double Counting? 什么是Crossover概念?

Double Counting 从名字上看就是数了两次,当产生两个不同的ExclusiveMC时,虽然看起来是不相同的物理衰变过程,但是如果其中的衰变有交叉的物理过程,则可能重复数了一次,这时我们要想办法减少一次以便和物理符合。 (之前的错误理解)Crossover Background 有些类似,当研究两个不同的衰变时,由于这两个衰变之间有共轭的关系,则有可能一个衰变成为另一个衰变的本底,这个时候可以使用其中一个衰变的MC来对另一个过程进行检验,如出现峰值背景则有可能出现了交叉本底的情况。

  • 了解什么是Hidden Charm?Open Charm?

这个名字起的很有意思,这里来看看。首先这个是在粲物理中常用的名词,这里的Charm指粲夸克(c),这两个名字指代不同的能区,能区的分界线由该能区粒子的衰变产物所描述,也就是D介子,D介子是携带粲夸克的最轻粒子,在此能区之上将会可能产生由粲夸克参与构成的粒子如可衰变为DDbar,在此能区之下所产生的粒子则难以包括粲夸克(DDbar产生不了了),并且两个能区的衰变道不同是分开的。这个名字起的非常有趣,过度解读一下,可能是由于我们不知道这粲夸克去哪了所以我们说它藏起来了(Hidden),能量转化竟然变成其他的夸克。当然我们现在知道并不一定如此,也有前述的能量阈值之上的粒子与之下的衰变发生较强的耦合,这种粒子我们称之为奇特态(exotic state)。

由此推想,还可以继续起名字,即Open Bottom,Hidden Bottom。在B物理中,存在同样的特殊的衰变产物,Upsilon介子,是携带b夸克的最轻的粒子,那么我们可以称可以产生Upsilon介子的能区为Open Bottom,能区之下难以产生则称之为Hidden Bottom。这里我们还可以注意的是,首次观测到的b夸克物质就是Upsilon介子,而首次观测到的粲夸克物质是J/psi粒子而不是D介子,这是由于D介子多由$D D\bar$能区产生,该能区高于J/psi粒子产生的能区,因而首次发现的含粲夸克的粒子即为J/psi粒子。

  • 了解什么是Fast Simulation?什么是Full simulation?

两个都是指粒子物理实验常用的随机模拟方法,其中Full Simulation非常厉害,基本上在建造实验装置前可以用它来进行很全面的模拟,可以对实验目标的可行性和设计方案给出一定的评估。原因就是,这个Full说明了它在进行模拟时,可以构造探测器的几何结构还可以配置其中的物质成分,当实验发生时可以用构造一个模拟系统,来利用现有的相互作用理论模拟其中的粒子发生相互作用的一些基本过程,可以考虑几何结构,就可以对实验设计的具体情况进行调整和评估。在探测器运行阶段,则如可以使用Geant4[https://linkinghub.elsevier.com/retrieve/pii/S0168900203013688]通过模拟来估计探测器响应,现在似乎已经出来Geant5了。

Fast Simulation,就是仅仅考虑了实验可能得到的结果,基于ROOT的TGenPhaseSpace来做简单的相空间模拟,对于探测器结构也基本用ROOT就可以做出,然后物理特性用Smear的方法,对预计的物理分布进行展宽,这样模拟考虑的没有Full那样全面,只能看看可行性,只用相空间产生的话有些实验可能不够,只是进行粗略的估计。 当然其实这是做模拟的才明白,自己是做数据分析仅做了解。

~~继续思考~~
-------开放研究之所以可能

阅读全文

如何问问题?

2018年07月18日 星期三

什么是一个好问题?

想要搞清楚这个非常之难,是反映水平的直接方式,听报告自己没有问过问题,主要听听别人怎么问,这里只能管窥。一个好的问题,我想可以问该研究中关注的重点,有想法也可以提供帮助对策,也可以问及自己研究与该研究有交集的部分,如果能为听闻的所有人都有帮助也很不错,或者对该研究想法的延伸和见解。还有经验丰富的人对新手的关照和严格要求也是很好的问题,类似于围棋中的执导棋,例如有老师问过:分析中出现了运动学拟合,那么在运动学拟合之后粒子动量的“测量精度”是变好了?还是变坏了?答案是变好了,可能还要继续问其程度会约有多大能不能量化有没有百分比?还没有搞懂,需要待了解后再答。

可以问一些什么问题?

  • 当然其实只要有问题想问就能问,不过不要’为了问’而问,要动脑子而不是走形式。

  • 当探测相同的例子或衰变道时,如出现几个费曼图来表示多个物理过程在一起测量时,可以询问是否在实验中考虑了overlap。这是因为在散射截面的测量中,量子力学给出不同振幅的叠加会出现相干项,振幅不是平方相加的而是相加后再平方。而在实际的实验中,有时候这种overlap项是探测装置不容易捕获进行分析的,所以有时候需要进行特殊处理。

  • 当拟合出来的不变质量谱出现明显不明“身份”的峰值,可以问一问是什么,涉及背景分析,一般好的研究都会了解每个峰值背景的贡献成分是什么,不会放着不管的,当然有时候是大家都知道就不说了,也可以问问身边的人。除此之外,看到的实验分布若有意料之外的形状改变(没错,应该在画出图之前先预想一下物理分布是什么样的),都意味着实验探测对原物理分布做了修正,这种修正也是实验非常关心的,都是大家想要探讨清楚的内容。

~~继续思考~~

-------开放研究之所以可能

阅读全文

如何用ROOT做联合拟合?

2019年05月30日 星期一

“你本来不该知道这些的,可是现在我们没有更好的工具,所以得这样弄一下……”

如何做联合拟合?

首先这里就是应用Roofit的例子(Tutorials)来学习做联合拟合(SimutaneousFit),这是一个比较常用的东西,当利用多个衰变道来重建共同的共振态时,可能要share一些变量,这样在拟合中可以得到描述该共振态共同的变量值,进而完成拟合。

这里就试着来看看例子

首先这里是个声明,在总的ROOT体系里使用了[LGPL2.1协议](https://root.cern.ch/license),这位WouterVerkerke贡献了该例子
//////////////////////////////////////////////////////////////////////////
//
// 'ORGANIZATION AND SIMULTANEOUS FITS' RooFit tutorial macro #501
//
// Using simultaneous p.d.f.s to describe simultaneous fits to multiple
// datasets
//
// 07/2008 - Wouter Verkerke
//
/////////////////////////////////////////////////////////////////////////

// 头文件,名字起的很有代表性,大家用的程序要有编程规范,不然容易乱套
// 其实主要是需要编译时最需要,不过编译好久没有用了,现在我不太会了忘记了,一般找个MakeFile比较好
// CMake是用来写MakeFile的编译工具,很有意思,MakeFile用来指挥编译按步骤进行,CMake用来写指挥MakeFile如何写

#ifndef __CINT__
#include "RooGlobalFunc.h"
#endif
#include "RooRealVar.h"
#include "RooDataSet.h"
#include "RooGaussian.h"
#include "RooConstVar.h"
#include "RooChebychev.h"
#include "RooAddPdf.h"
#include "RooSimultaneous.h"
#include "RooCategory.h"
#include "TCanvas.h"
#include "TAxis.h"
#include "RooPlot.h"

// 命名空间,像一种局部用的目录,防止重名,当然没遇到重的所以暂时还不懂
using namespace RooFit ;

void rf501_simultaneouspdf()
{
  // C r e a t e   m o d e l   f o r   p h y s i c s   s a m p l e
  // -------------------------------------------------------------
  // Create observables
  // 这里首先定义了变量x用来构建实验分布的模型
  RooRealVar x("x","x",-8,8) ;

  // Construct signal pdf
  // 定义了信号的概率密度函数,这里有中心值、sigma自变量x一起构造高斯函数
  // 经常有听到拿“形状”,指的其实就是概率密度函数的形状
  RooRealVar mean("mean","mean",0,-8,8) ;
  RooRealVar sigma("sigma","sigma",0.3,0.1,10) ;
  RooGaussian gx("gx","gx",x,mean,sigma) ;

  // Construct background pdf
  // 类似于前面构造二阶切比雪夫作为本底概率密度函数,a0和a1作为其中系数
  RooRealVar a0("a0","a0",-0.1,-1,1) ;
  RooRealVar a1("a1","a1",0.004,-1,1) ;
  RooChebychev px("px","px",x,RooArgSet(a0,a1)) ;

  // Construct composite pdf
  // 再次定义变量f,作为最后构造的物理分布模型的自变量,所得值为上两函数的和,用了RooArgList类
  RooRealVar f("f","f",0.2,0.,1.);
  RooAddPdf model("model","model",RooArgList(gx,px),f);

  // C r e a t e   m o d e l   f o r   c o n t r o l   s a m p l e
  // --------------------------------------------------------------
  // Construct signal pdf.
  // NOTE that sigma is shared with the signal sample model
  RooRealVar mean_ctl("mean_ctl","mean_ctl",-3,-8,8) ;
  RooGaussian gx_ctl("gx_ctl","gx_ctl",x,mean_ctl,sigma) ;

  // Construct the background pdf
  RooRealVar a0_ctl("a0_ctl","a0_ctl",-0.1,-1,1) ;
  RooRealVar a1_ctl("a1_ctl","a1_ctl",0.5,-0.1,1) ;
  RooChebychev px_ctl("px_ctl","px_ctl",x,RooArgSet(a0_ctl,a1_ctl)) ;

  // Construct the composite model
  // 这里可以看到,不同的“形状”代表了不同的实验分布,分别反映了信号概率密度函数形状,探测器分辨等
  // 然后将他们“组合”也就是卷积在一起,来表达该物理过程我们想要了解的实验分布
  RooRealVar f_ctl("f_ctl","f_ctl",0.5,0.,1.) ;
  RooAddPdf model_ctl("model_ctl","model_ctl",RooArgList(gx_ctl,px_ctl),f_ctl) ;

  // G e n e r a t e   e v e n t s   f o r   b o t h   s a m p l e s
  // ---------------------------------------------------------------
  // Generate 1000 events in x and y from model
  RooDataSet *data = model.generate(RooArgSet(x),100) ;
  RooDataSet *data_ctl = model_ctl.generate(RooArgSet(x),2000) ;

  // C r e a t e   i n d e x   c a t e g o r y   a n d   j o i n   s a m p l e s
  // ---------------------------------------------------------------------------
  // Define category to distinguish physics and control samples events
  // 这里定义了一个目录其中命名均为字符串,所以名字里面空格会识别为字符,所以要谨慎,加不加空格是两个名字
  RooCategory sample("sample","sample") ;
  sample.defineType("physics") ;
  sample.defineType("control") ;

  // Construct combined dataset in (x,sample)
  // 将数据导入到RooDataSet里面,其中有目录Index(sample),还有变量x,并将目录中的名字与数据集关联起来
  RooDataSet combData("combData","combined data",x,Index(sample),Import("physics",*data),Import("control",*data_ctl)) ;

  // C o n s t r u c t   a   s i m u l t a n e o u s   p d f   i n   ( x , s a m p l e )
  // -----------------------------------------------------------------------------------
  // Construct a simultaneous pdf using category sample as index
  // 这里我们将之前定义的目录送入RooSimultaneous类中去,然后
  RooSimultaneous simPdf("simPdf","simultaneous pdf",sample) ;

  // 这里将之前定义的分布模型放到RooSimultaneous类的sample里面去,
  // Associate model with the physics state and model_ctl with the control state
  simPdf.addPdf(model,"physics") ;
  simPdf.addPdf(model_ctl,"control") ;

  // 这里将数据进行拟合,拟合的目标物理分布的模型就是前面的
  // P e r f o r m   a   s i m u l t a n e o u s   f i t
  // ---------------------------------------------------
  // Perform simultaneous fit of model to data and model_ctl to data_ctl
  simPdf.fitTo(combData) ;
  // 到此为止,就完成了拟合的计算过程,其实已经结束了,只是不直观要画图
  // 可以看出,RooSimultaneous就是一个类中包含了多个模型,这些多个模型的公共参数用来描绘共同的一个物理分布。
  // 这种多个模型,可以来自于不同衰变道,也可以来自于不同的样本如例子中随机产生的物理分布和控制样本。

  // P l o t   m o d e l   s l i c e s   o n   d a t a    s l i c e s
  // ----------------------------------------------------------------
  // Make a frame for the physics sample
  // 画图的RooPlot,用来载入画图的内容,在这里定义了分bin
  RooPlot* frame1 = x.frame(Bins(30),Title("Physics sample")) ;

  // Plot all data tagged as physics sample
  // 将数据画在上面定义的frame1中,并且通过Cut条件只看physics目录的内容
  combData.plotOn(frame1,Cut("sample==sample::physics")) ;

  // Plot "physics" slice of simultaneous pdf.
  // NBL You _must_ project the sample index category with data using ProjWData
  // as a RooSimultaneous makes no prediction on the shape in the index category
  // and can thus not be integrated
  simPdf.plotOn(frame1,Slice(sample,"physics"),ProjWData(sample,combData)) ;
  // 这里可以看到是又画了一次,这次是单独画的本底用的kDashed的线,可以按后面给的方法搜索类型继续看
  simPdf.plotOn(frame1,Slice(sample,"physics"),Components("px"),ProjWData(sample,combData),LineStyle(kDashed)) ;

  // 定义第二个图的画图的frame
  // The same plot for the control sample slice
  RooPlot* frame2 = x.frame(Bins(30),Title("Control sample")) ;
  combData.plotOn(frame2,Cut("sample==sample::control")) ;
  simPdf.plotOn(frame2,Slice(sample,"control"),ProjWData(sample,combData)) ;
  simPdf.plotOn(frame2,Slice(sample,"control"),Components("px_ctl"),ProjWData(sample,combData),LineStyle(kDashed)) ;

  // 定义好画布,将前面的frame调用Draw()成员函数,就画图了
  TCanvas* c = new TCanvas("rf501_simultaneouspdf","rf403_simultaneouspdf",800,400);
  c->Divide(2) ;
  c->cd(1) ; gPad->SetLeftMargin(0.15) ; frame1->GetYaxis()->SetTitleOffset(1.4) ; frame1->Draw() ;
  c->cd(2) ; gPad->SetLeftMargin(0.15) ; frame2->GetYaxis()->SetTitleOffset(1.4) ; frame2->Draw() ;
}
`</pre>

实际上,我们看完上面的内容就可以了解到**其实我们什么都没有做!**我们做的仅仅是:

<pre>`头文件
函数{
  定义预期的多个模型model(RooAddPdf)
  数据data(DataSet),按照样本目录加载
  调用联合拟合类(RooSimultaneous).fitTo(data)
  画图,信号本底
}
`</pre>

其他的当然也是类似,是计算机帮我们完成了这些操作,当然如涉及到其背后是如何工作的则要继续了解simultaneous背后的数学是如何工作的,比如具体的误差它是如何计算的?整体上参数是如何传递,计算是如何迭代的?编程?不存在的,可以放后去了解。这也学就是我们称之为脚本的原因吧,之所以使用脚本文件,就是相应的程序包提供了简易的借口,可以对应用的用户功能进行自定义。那么有没有办法不写这么多字呢好头大啊?有的,有的人用Python来自动写脚本,有的人直接用PyROOT。

**使用Vim**

如何使用vim?

这个实际上吧vim的手册简单看一下,然后了解一下计算机发展过程,“文本”这个概念是如何发展的,就可以更好地使用vim,我自己在两年用了杨振伟老师推荐的一个简单的vimrc文件[易水博客](http://easwy.com/),还有重新编译了vim用来安装了[vim-snippets](https://github.com/cuixiaofei/vim-snippets)后,再没有怎么搞过了,我想snippets应该已经功能很强大了。
想起来第一次用vim其实就和我小时候玩游戏一样,上来就键盘挨个按一遍,软件也是,把菜单打开所有按钮按一遍,这就是我从来看任何计算机相关东西的所谓“窍门”。

**继续试着学ROOT有什么方便的方法?**

如果有机会找人教,可以问一下别人,或者有人给脚本,就可以学的很快,因为大家公用的东西都是比较成熟的。在简单用了之后,还要继续学懂一些,或者看到别的ROOT脚本文件有时候发现看不懂,甚至受到了惊吓,下面的一点内容我们试着想一想办法。

首先想到的就是,看一看例子tutorial,ROOT官方带有许多的例子,只要稍加更改就可以学到很多东西,上面篇幅中做联合拟合的内容就是依据这样的方式来做的,下面还有。

一个是搜索使用的类的定义和继承关系,在网站这里[ClassIndex](https://root.cern.ch/doc/master/annotated.html),比如可以试着搜索ProjWData这个成员,也可以在[ClassList](https://root.cern.ch/doc/master/annotated.html)用搜索框或者是按类找名字ctrl+f,这样搜索可以找到ROOT编程的详细内容。
可以看到,其定义有两个如下:

第一个定义可以看出,其可有两个变量,一是数据集RooDataSet(RooAbsData三个成员中的一个),从下面的继承图可以清楚地了解到程序的调用关系,第二个可能用于分bin的问题,![](/assets/img/RooAbsData.png)

<pre>`RooFit::ProjWData  ( const RooAbsData &amp; projData,
Bool_t  binData = kFALSE
)
`</pre>

从这里上下两个定义可以看出,ROOT软件包整体内部命名是十分规范的,我们在使用的时候也要尽量把变量函数名写的清楚易懂有一定的规范。如BES合作组的BOSS分析环境,可以查看BOSS定义的基本的类和继承图[BOSS Class Reference Documentation](http://bes3.to.infn.it/Boss/7.0.2/html/classes.html),这里可以清楚看到很多分析中使用的内容。当然,如果有较为统一的规范是不容易的,因为在传统研究中各种不同群体都有可能产生各自内部的“独特语言系统”。

第二个定义可以看出,其可有三个变量,一是从数据集里取数据的方法(RooCategory是其中一个),第二个见上,第三个可能用于分bin的问题

<pre>`RooFit::ProjWData  ( const RooArgSet &amp; projSet,
const RooAbsData &amp; projData,
Bool_t binData = kFALSE
)
`</pre>

可以看出我们这里使用了两次,一次第一个定义,一次第二个定义,并且没有用bin变量。
这样我们通过查看这些的定义关系,有助于梳理清楚他们的调用关系,用起来就不会发怵。
所谓计算机程序就是一大堆的相互调用,从ifelse编译一直调用到逻辑门基本不会出错,如果出现问题,就查看定义看哪里调用跑丢了,如果能够解决好把调用的类型放对了,一般程序都能正常运行,就像喂小猫一样。
如果想要训练一下编程时候的脑子,其实有更直观一点的编程比如说用G语言LabVIEW,你可以看数据流,并且简单的编程结构也比较直观,实际应用也比较广泛,比如BESIII值班室的用户界面系统,可以看到很多都是使用LabVIEW编的。另外甚至可以通过一些软件也能训练,如[Zachronic](http://www.zachtronics.com)公司旗下的软件都很硬核,还有辅助学习各种编程语言的网站[酷代码](www.codingame.com)非常有趣,很全各种计算机语言都能找到。

可以在网上[ROOT Forum](https://root-forum.cern.ch)看别人遇到了什么问题,如果身边没人也可以试着问,还可以看看同行都在关心什么问题?
这里提供一个问问题模板[参考](https://root-forum.cern.ch/t/how-to-automatically-generate-classes-code/4667):

<pre>`Hi,
I want to do sth.
I have learned "sth. or some class" which helps me in doing sth. This looks like it could help me but I don't know HOW.
I need to to do similar processing but for a different "sth.? dataset?".
Could some body guide me to the Documentation or Tutorials for doing this?

Thanks
"yourname"

Sample: "your sample idea"
Code:"your sample code"

可以找一个改改用,也可以直接随便问(English),毕竟是论坛嘛。主要是可以看看大家都在关心什么问题,可以了解一下。

~~继续思考~~

-------开放研究之所以可能

阅读全文

开放研究之所以可能(一)

2018年04月23日 星期日

开放研究之所以可能(一)

开放研究?这是过去和现在很多人都做过的事情,这里放在一起想, 得出下面的基本方向,是通过对开放研究类似活动的一种再次发现与总结。 这里的“开放研究”是一个专有名词,并不是泛泛的“开放地研究”或者“开放的研究”

开放研究的基本方向:

  1. 把实干放在开放研究的第一位,实干具体就是下面这些,
  2. 对于任何人,不得干涉或要求其进行开放研究。
  3. 肯定每个人都有做自然科学或社会科学研究的能力。
  4. 尊重每人的个人守则,尊重对开放研究自由的定义。
  5. 要选定协议编辑科学研究的内容进行传播,尤其对具体科学研究的方法进行开放。
  6. 对一直以来的传统科学研究的资料,阐述其中隐藏的研究方法,进一步简化和开放。
  7. 进一步阐述历史和文化,搞清楚开放研究的历史和现实意义。
  8. 采取各种合作的方式和方法进行和发展开放研究。
  9. 这里每一条均可以进行修改或删除,视情况而定。
~~继续思考~~

-------开放研究之所以可能

阅读全文

开放研究个人守则

2018年04月09日 星期日

开放研究个人守则

1.

~~继续思考~~

-------开放研究之所以可能

阅读全文

什么是开放研究?

2017年12月24日 星期日

什么是开放研究?

科学的所指这里包括自然科学与社会科学,中国科学可能还不是最发达,很多人目前也和科学研究是接不上的。更进一步讲,可以说即使科学发达的国家(如现在欧美?),这种发达也不是每个人所能触及的。

科学在的历史发展长河中更由那些聪明的人、有天赋的人、勤奋努力的人、富有的人、善于交际的人等等特别的一些人所主导和影响,这些人被称之为科学工作者或择其优者—科学家。

随着时代发展,人们不断将不断从旧的工作生活中脱离出来,投奔至新的生活,逐渐地,所谓科学研究,社会的对其需求相应会不断增大。

那么一系列的问题就随之而来,等待着我们解答: 科学研究的基本方法是什么呢?有怎样的规律? 科学研究与教育之间是怎样的关系呢? 科学知识的传递与新知识的发现和运用又是怎样的过程呢? 科学研究的方法是怎样演变的呢?要走向何处呢?

这些问题是当然是难以回答的。但可以看到传统研究的学术交流在其中是十分重要的,在17世纪,首先出现了学术期刊,就是用来科学工作者之间进行交流的。尔后不断有各种科学交流的活动产生,学术活动、团体、组织。直到现代,通讯工具的发展,各个科学研究团体的会议、组织,作为标志性的如开放期刊,预印本等开放获取的期刊不断出现,包括开放源代码的计算机技术发展,等等,都在促进着科学研究更加广泛深入的交流。

开放研究的具体内容?

开放研究(Open Research)或者叫开放科学(Opne Science),是使得科学研究的方法和内容的全面传播成为可能的一种活动。

通过这一活动,鼓励出版机构出版开放获取人人可得的研究文献(open access),鼓励科学工作者开放研究笔记(open notebook science)等等,并使得科学研究相关的资料获取成为每个人的可能。

更加具体的内容,如果有空闲还要继续了解和思考,这个博客所写的所有东西都会不断更新,开放研究中最重要的部分也莫过于开放研究笔记。 破除只有科学工作者能够搞科学、只有科学工作者才会搞科学研究、只有科学工作者才配搞科学的片面认识。 其实道理我们都懂,就是“授之以渔而非授之以鱼”。那么真正做起来可能吗?真的可能吗? 那么何为科学本身呢?何为对科学的追求呢?如何实现呢是不是假大空的?难以回答

但是我想,现在有了一条新的道路愿意面对这些类似的问题,就是开放研究。开放研究希望能在传统研究的基础上增加一个维度。 这就像是科学研究领域的极限运动,在“刀尖”上行走,一个不小心就出问题就会“摔死了”,如果把握的好,那么也许还能继续看到“明天中午za亮的太阳”。

对于一个人来说,这是一个可以直达科学研究大门的机会,自己从不认为只有那些特别的人才能进行科学研究,不是那些只有会的或擅长的人才能进行科学研究,况且历史上又那么多的大科学家并不是为了所谓“成就”来进行这一活动的,在今天的社会,这是有办法有可能有条件来创造机会,使得科学研究变得易于接近的。

现有科学研究的发展正在突飞猛进,我们可以相信,已经逐步有了科学研究的基本地图,那么如何在这张地图上行走,能否有一个导航?能否可以指一个大致的方向来帮助容易迷路的人们,使迷途不再忧伤。

任何一个人当然都是无法进行这样的事情的,但是确实一直以来有许多人找到了这样的方向,他们在进行这开放科学的相关工作,这里也对他们致敬。

本是无意,将要收笔之时,才突然发现今天是2018年考研,作为纪念我就把上面写的东西发出去。

~~继续思考~~
-------开放研究之所以可能

阅读全文

文件修改忘记改了什么怎么办?使用git

2019年06月23日 星期二

”—-你本来不该知道这些的,可是现在我们没有更好的工具,所以得这样弄一下……”

这里主要就是解决一个问题: 在平时对纯文本进行编辑时,不论这文本是程序代码还是文字,任何人都容易在编辑时出错,那么如何看出一个文件我们改了什么?什么时候改的?这时就要用到git这个工具,来做一下简单的版本控制。

阅读全文

开始篇

2020年06月19日 星期日

本博客改编自https://liungkejin.github.io, 感谢梁窠金的个人博客带我入门。

小站源代码增加了一些说明,只需要修改名字和一些变量他人就可以重复使用,修改后存放于github,欢迎issues,继续修改中敬请期待~~

小站使用jekyll还有bootstrap搭建!个人页面应用了 resumecard项目!

同时和粱窠金一样也要感谢Monkey Snatch Banana 博客,最初模板是人家的。其他模板将来可能会更新使用。

gitpage类似的主要写东西比较简洁直接进行表述,可以参考如HEP note,如王垠博客。借鉴的博文还有: 阮一峰garfielder007雨知,也可以上V站看看。当然STFW亦可。

小站现已更新,内容基本选用CC-BY-SA协议,这一协议保证了本博客内容的版权。 小站文档分为建档和更新档,建档与更新档不同,网站中直接看到的是更新时间(每篇文字独立更新!!!,找找更新了什么?),建档时间可在网页源码中查看,建档和修改历史需到github查看。

小站现已加入中文独立博客列表,已更新支持RSS订阅和在线评论。电脑坏了一次丢失了大量的文件,不过还好,脑子并没有丢掉。

本小站博客的标题看起来只是一些最基础的东西,简直是个笑话,但是开放研究不注重分享内容而是方法,所以其中的所写其实是类似的东西如何有方法学习和继续发展,这样就符合了小站建立的初衷。

感谢 github 提供的 Github Pages 功能!

阅读全文