晶体实验
想象一下:在一个 27 公里长的环形管道中,管道沿着地下 100 多米处钻出的隧道延伸,两束数十亿质子加速到超过自身质量 14,000 倍的能量并正面碰撞,产生一个小的 大爆炸,其中数以百计新产生的粒子被猛烈地投射到四面八方。来自世界各地的数千名物理学家将搜索这些粒子,试图找到一些新的粒子,根据现代理论,这些粒子的存在将为宇宙最深层的对称性提供新的见解,并可能解释质量本身的起源。
这种近乎科幻的情景或多或少将在瑞士日内瓦附近的欧洲核子研究中心(CERN)(见资源 [1])发生,届时大型强子对撞机(LHC)将于 2005 年开始运行。科学家们将用来观察这些极高能量相互作用的仪器是两个巨大且极其复杂的粒子探测器,代号为 ATLAS 和 CMS,每个重达 10,000 多吨,位于质子碰撞点周围。
图 1. 这张照片展示了约 100,000 个钨酸铅闪烁晶体中的一个,这些晶体将用于 CMS 实验的电磁量能器中。
我们的实验物理小组目前正在参与一个多学科的研发项目(见资源 [2]),该项目与两个探测器之一 CMS(紧凑型缪子螺线管)的建造有关。特别是,我们正在研究一种新型晶体——钨酸铅或 PWO 的特性,当粒子撞击它时,它会发出可见光。大约 100,000 个小的 PWO 棒(图 1)将构成 CMS 探测器的一部分,称为“电磁量能器”,它将测量碰撞中产生的所有电子和光子的能量。
图 2. 我们的实验台的暗室:待测量的晶体插入此处。顶部的轨道沿着晶体(此处包裹在铝箔中)移动一个小的放射源,产生的光由左侧的光电管收集。
在我们在意大利罗马“拉萨皮恩扎”大学物理系的实验室中,我们花了过去两年时间建立了一个完整的实验台,以测量这种晶体的所有有趣特性。PWO 晶体插入暗室(图 2)中,并使用小型放射源激发它们,以便我们可以测量产生的小量光。实验台上使用的仪器包括光探测器、温度探针、模数转换器 (ADC)、高压电源和步进电机(图 3)。为了互连和控制这些仪器中的大多数,并允许数据的数字读出,我们使用了有些旧(但完全适合我们的需求)的 CAMAC 标准。
图 3. 来自光电管的电信号被馈送到基于 CAMAC 的 DAQ 链中,该链在将其发送到我们的计算机之前对其进行放大和数字化。照片显示了参与操作的所有仪器。
当项目于 1995 年底开始时,我们面临的问题之一是如何将数据采集 (DAQ) 链连接到计算机系统以进行数据收集,而又不超出我们预算的有限资源。一种可能性是使用旧的基于 ISA 总线的 CAMAC 控制器板,该板可从过去的实验中获得。这是一个 CAEN A151 板,于 1990 年发布,这是一种低级设备,但仍能保证我们所需的速度。然后,我们购买了一台现成的 100 MHz 奔腾 PC 来处理所有通信。问题是如何使用它。CAEN 仅提供了一个非常旧的 MS-DOS 软件驱动程序,当然,这很难满足我们的需求,因为单用户、单任务操作系统无法轻松适应我们基于 UNIX 的环境。
我们中的一位(E.L.)当时在他的家用 PC 上使用 Linux,他可以体会到 Linux 的稳定性和源代码完全可用性所提供的可能性。在我们的实验室中使用这样一个系统的想法呈现出几个吸引人的特点。首先,使用 Linux 将为我们提供一个非常可靠和高效的操作系统。用户程序中花费的 CPU 时间比例相对于内核使用的时间非常大,并且可以完全控制进程之间的优先级和资源共享。当 DAQ 程序的时序性能严格时(但没有严格到需要真正的实时系统),此功能非常重要:可以为数据采集赋予高于同一计算机上可能运行的任何其他任务(例如监视程序或用户 shell)的最高优先级。
此外,我们可以访问由 HP 工作站组成的大型 UNIX 集群,我们可以将其用于数据分析。使用 Linux,以及 UNIX 操作系统和 GNU 编译器的所有典型功能,数据采集系统可以与此集群平滑集成。脚本和程序的移植将非常简单,并且使用基于 TCP/IP 的工具(NFS、FTP)将允许系统之间的自动数据传输。此外,使用基于 X 的图形界面将允许远程监控正在进行的 DAQ 会话,不仅可以从我们位于实验室几百米远的办公室进行监控,还可以从 CERN 等远程位置进行监控。
多用户环境将允许对数据和程序进行个性化访问,例如,授予某些用户启动 DAQ 会话的权限,但不允许修改软件或允许用户干扰正在进行的 DAQ 会话。
最后但并非最不重要的一点是,整个系统在 GNU 许可下都是完全免费的,包括编译器、开发工具、GUI 以及 Linux 附带的所有公共领域好东西。
所有这些优点在我们的脑海中都非常清楚,但利用 Linux 仍然取决于是否能够使用我们的旧 CAMAC 控制器板。正是在这里,Linux 证明了其作为我们实验室首选操作系统的巨大潜力。
我们的 CAMAC 控制器由一块板组成,当插入计算机的 ISA 总线时,它可以连接多达七个不同的 CAMAC 插件箱,每个插件箱最多包含 22 个连接到测量仪器的不同专用设备。
该板映射到一组已知的 ISA 总线内存地址,用户可以通过这些地址向每个单独的仪器发送命令并检索响应。UNIX 仅在内核级别允许访问物理内存地址:很明显,我们需要一组专门用于与 DAQ 板交互的软件例程,通常称为设备驱动程序,以插入到 Linux 内核中。
尽管意识到内核级设备驱动程序的存在,但我们中没有人确切知道如何编写一个。(所有这一切都发生在 Alessandro Rubini 的优秀文章出现前几个月。请参阅资源 [3]。)然后我们决定在 comp.os.linux.hardware 新闻组上寻求帮助,不到 24 小时后,我们联系了德国研究员 Ole Streicher,他向我们发送了他为不同的 CAMAC 控制器编写的设备驱动程序的源代码(见资源 [4])。将其调整到我们的板上只需几天时间,然后实验数据愉快地流入和流出我们的 DAQ 系统:Linux 选项终于打开了。
内核中动态加载和卸载模块的能力(Linux 中仅在几个月前引入的一项功能)在驱动程序开发阶段提供了很大的帮助。
从用户的角度来看,CAMAC 系统现在通过简单的文件可见,每个不同的插件箱一个文件,可以打开、关闭、写入和读取。我们还提供了一个接口库,以隐藏 CAMAC 操作的底层细节并简化代码编写。 gcc C 编译器和 f2c FORTRAN 到 C 转换器的存在使我们能够提供此接口库的 C 和 FORTRAN 版本,以便我们的同事可以编写自己的 DAQ 程序。
使用此库,我们编写了主要的 DAQ 程序,该程序能够自动设置运行条件,通过串行链路控制放射源到步进电机的移动,发送光脉冲以校准光传感器,并收集来自 DAQ 系统的数据并对其进行动态分析。为了编写用户界面,我们使用了 Tcl/Tk 软件包(见资源 [5]):所有程序控件都显示在一个图形窗口中,该窗口可以在任何 X 显示器上打开(图 4)。
与 DAQ 程序并行,我们编写了一个程序来监控数据采集的状态以及一些重要参数,例如收集的事件数、事件率和平均值。借助 CERN 开发的名为 CERNLIB(见资源 [6])的科学库软件包,该软件包与其源代码一起免费提供,并在高能物理学界广泛使用,我们将监控程序连接到一个简单的分析工具。这使我们能够访问有趣的信息,甚至在 DAQ 正在进行时执行一些初步分析(图 4)。
图 5. 本文作者在其自然环境中。左边是 Emanuele Leonardi,胳膊放在 DAQ PC 上,右边是 Giovanni Organtini。
对于 DAQ 系统来说,一个重要的因素是时间性能。如果控制软件太慢,可能会丢失数据,并且收集有用数据量所需的时间可能会增加到无法接受的水平。
我们发现我们系统中唯一的时间限制因素是 ADC 板的转换时间;即使在运行其他几个用户任务时,操作系统也可以轻松跟上 DAQ 任务。这非常重要,因为今年我们的实验台将从原型级别(只有一个活动的 DAQ 链)转变为工业级生产设施,在其中将并行进行多次测量,以便快速处理 CMS 实验所需的大量数千个晶体。
实际上,我们测得执行单个 CAMAC 操作的时间约为 10 微秒,相对于 1.5 微秒的最小 CAMAC 操作时间而言较长,但对于像 CAEN A151 这样的廉价板来说非常好,并且远低于 110 微秒的 ADC 响应时间。
感谢在我们的实验室中引入 Linux,我们能够使用现成的奔腾 PC 和低成本 CAMAC 板实现完整的数据采集和监控系统。
自 1996 年初以来,该系统一直完美运行,收集的数据已用于研究 PWO 晶体的特性,这些晶体将用于 CERN 的 CMS 实验。
使用 Linux 的关键点是内核代码的可用性以及 Linux 社区的热情和技术知识,这使我们能够为我们的数据采集系统创建一个个性化的设备驱动程序。标准的 UNIX 工具和 GNU 编译器保证了与现有机器的完美集成,以及我们组中所有物理学家对该系统的立即接受。
当我们开始展示我们的工作时,我们被邀请参加在欧洲各地举行的多个致力于高能物理计算和数据采集系统的会议(德国汉堡的 PCaPAC'96 研讨会、CERN 的 ESONE'97 研讨会和德国柏林的 CHEP'97 会议)。在各地,我们都与许多其他致力于相关项目的 Linux 爱好者取得了联系;高能物理学界对 Linux 的兴趣确实非常高。
我们现在计划将同一系统用于更大的自动实验台,该实验台将在未来六年内用于测量数万个晶体的特性,这些晶体将用于构建 CMS 实验的电磁量能器。
对于那些对我们的工作感兴趣的人,可以在我们的 FTP 站点 ftp://ftpl3.roma1.infn.it/pub/linux/local/ 上找到包含最新版本设备驱动程序代码和接口库的存档。
Emanuele Leonardi 于 1997 年在罗马“拉萨皮恩扎”大学获得物理学博士学位。他目前在罗马国家核物理研究所担任技术研究员。
两位作者都在 CERN 的 L3 实验中工作过,他们在那里发表了几篇物理学论文,目前正在 CMS 实验的研发阶段进行合作。
Giovanni Organtini 于 1995 年在罗马“拉萨皮恩扎”大学获得物理学博士学位。他目前是罗马第三大学的物理学研究员。
两位作者都在 CERN 的 L3 实验中工作过,他们在那里发表了几篇物理学论文,目前正在 CMS 实验的研发阶段进行合作。