CERN ROOT将数据导出为纯文本
因此,我尝试并尝试遵循类似的问题,例如一个>,但没有成功. 这真的很简单 - 我有一些.root文件,并且可以在根中看到直方图,但希望将数据导出为.txt或类似的数据,以便能够在其他程序中进行分析. 解决方案 这是有效的示例.在带有三个分支的根文件中读取名为TS,NS和NSERR. #include #include "TFile.h" #include "TTree.h" #include using namespace std; void dumpTreeTotxt(){ TFile *f=new TFile("TS0.root"); // opens the root file TTree *tr=(TTree*)f->Get("tree"); // creates the TTree object tr->Scan(); // prints the content on the screen flo
10 2024-01-26
编程技术问答社区
在Anaconda环境中安装CERN ROOT--目前的渠道无法提供软件包:
我试图在Anaconda中安装CERNS root,用于使用Pyroot. (我正在使用conda 4.10.3) 我已经使用Python 2.7建立了一个新环境,因为我相信我在某个地方读到了root与Python 3的效果不佳.频道并尝试安装以下内容: https://anaconda.org/conda.org/conda-forge/root/root-depertencies 使用: conda install -c conda-forge root-dependencies 但是,这返回以下内容: (pyRoot) C:\Users\George>conda install -c conda-forge root-dependencies Collecting package metadata (current_repodata.json): done Solving environment: failed with initial froz
4 2024-01-26
编程技术问答社区
在编译后的ROOT(CERN)应用程序中,将TCanvas绘制到屏幕上
在屏幕上绘画的规则是什么? 我的最终目标是将tcanvas从那里开始上课,但是现在我认为,观察一个不太复杂的例子可能会有所帮助.以下是在我的计算机上编译和油漆的一些代码. # include # include # include # include # include //TCanvas canvas ("fCanvas", "fCanvas", 600, 400); int main ( int argc, char* argv[] ) { TApplication app ("app",&argc,argv); TCanvas canvas ("fCanvas", "fCanvas", 600, 400); //TCanvas* canvas = new TCanvas("fCanvas", "fCanvas", 600, 400
0 2023-12-05
编程技术问答社区
无法找到openssl-dev软件包
我正在尝试使用Ubuntu 18.04在Linux上安装根CERN软件包,并且每当我进入先决条件下载时,使用此命令: sudo apt-get install dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev libxft-dev libxext-dev python openssl-dev 我将获得以下输出: Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package openssl-dev 我已经尝试通过配置我的存储库来纠正此问题,如此 thread ,但问题仍然持续. 想知道如何解决此问题.谢谢. 编辑: sudo apt update命令的完整输出是: Hit:1 http://us.archi
30 2023-06-29
编程技术问答社区
CERN ROOT:是否可以绘制成对的X-Y数据点?
我想使用cern root绘制一对X-Y数据点对的2D图 也可能使用y-Errorbars .但是我只知道如何绘制直方图. Cern root可以做到这一点吗?如果是这样? 我也意识到,这样做可能会有更好的库.我一直在使用gnuplot,但不幸的是,我似乎无法将其与C ++代码完美地集成在一起,因为我找不到C/C ++ GNUPLOT接口,该界面涵盖了所有功能,并允许我以双向方式发送数据 - IE:无论是往返GNUPLOT. 如果您有更好的替代建议,那么这将是最欢迎的. 解决方案 有 gnuplot iostream 将C ++的数据从C ++发送到GNUPLOT.在root内,您可以使用(如其他人所建议)TGraph,TGraphErrors,TGraphAsymErrors. 编辑: gnuplot iostream示例的主页看起来像这样. 意味着,一旦将数据点作为一个元组的一个向量或浮子的几个向量,就可以将它们发送到GNUPLOT. #i
14 2023-06-08
编程技术问答社区
如何从一个3列的.dat文件中创建ROOT直方图?
我当前有一个带有格式的.dat文件: 格式:log(10,s22th13)deltacp chi^2 -4 0 0.098127 -4 4 0.093642 -4 8 0.089323 -4 12 0.085185 -4 16 0.081242 .... 我将如何使用root创建一个图,将标签保持在.dat文件的顶部? 解决方案 最简单的方法是使用TTree类读取文件: TTree *T = new TTree("ntuple","data from csv file"); Long64_t nlines = T->ReadFile("data.csv"); printf("found %lld points\n",nlines); 您的标题将用作分支的名称.然后,您可以使用类似的内容绘制/保存直方图: TH1F *hist = new TH1F("name","title", nbinsx
18 2023-06-06
编程技术问答社区
Python的垃圾收集可以这么慢?
我的Python应用程序有问题,我认为它与Python垃圾收集有关,即使我不确定... 问题是我的应用程序需要大量时间才能退出并切换到下一个功能. 在我的应用程序中,我处理非常大的字典,其中包含数千个大型对象,这些对象是由包装的C ++类实例化的. 我在程序中放了一些时间戳输出,我看到在每个函数的末尾,当函数内部创建的对象应超出范围时,在调用下一个函数之前,解释器会花费大量时间.我在应用程序结束时观察到相同的问题,当该程序应退出时:在屏幕上的最后一个时间戳和新提示的外观之间花费了很多时间(〜小时!). 内存使用率稳定,所以我真的没有内存泄漏. 有什么建议? 可以是成千上万个大的C ++对象的垃圾集? 是否有一种方法可以加快速度? 更新: 非常感谢您的所有答案,您给了我很多提示来调试我的代码: - ) 我在Scientific Linux 5上使用Python 2.6.5,这是一种基于Red Hat Enterprise 5的定制
8 2023-05-23
编程技术问答社区
我需要对一个目录中的数千张直方图进行汇总
我有一个目录Processed_Data,其中数千个hists*****_blinded.root文件.每个hists*****_blinded.root在其中包含大约15个图和直方图.我的目标是从每个文件重叠1个特定直方图sc*****以获取最终的直方图finalhists_blinded.root它将代表所有重叠的那些. 我尝试了以下宏: void final() { TCanvas *time = new TCanvas("c1","overlap" ,600,1000); time ->Divide(1,1); time ->cd(1); TH1F *h1 = new TH1F("h1","time" ,4096,0,4096); ifstream in; Float_t t; Int_t nlines= 0; in.open("Processed_Data", ios::in); while (1) {
16 2023-03-17
编程技术问答社区
Clion或cmake没有看到环境变量
我正在使用Clion IDE,CMAKE,并尝试使用CERN root库编写 Hello World . cmakelists.txt : message(STATUS $ENV{ROOTSYS}) 〜/.bashrc : export ROOTSYS="$HOME/tools/root-build/" 在Clion $ENV{ROOTSYS}中构建过程中,由于某种原因是空的.但是$ENV{PATH}返回正确的$PATH. 我做错了什么? 解决方案 来自.bashrc 的变量不是传递的. 转到文件 - >设置 - > 构建,执行,部署 CLION 2017.2+ 对于旧的clion 单击通行系统和... 如果要读取C ++运行时的环境变量,例如使用 std :: getenv 然后 它将无法正常工作,因为我们为 cmake 而不是运行时添加了环境变量. 您可以添加这样的变量: 然后在您的代码中:
86 2023-03-15
编程技术问答社区
用g++编译一个包括根库的c++
我正在尝试编译一个使用g ++编译器的root-framework的TF1库. 我尝试了 我已经尝试了 g++ a.cpp -o 'root-config --cflags --glibs' 但这只是给我错误 g++: error: no such file or directory: 'root-config --cflags --glibs' 我对root和c ++都是非常新的,因此非常感谢您的帮助! 解决方案 您必须检查: g++ a.cpp $(root-config --cflags --glibs) -o a
66 2023-03-02
编程技术问答社区
重叠数百个直方图的宏观问题
i有一个目录trial,其中包含数百个直方图和一个宏.每个都以hists09876_blinded.root或hists12365_blinded.root的方式调用.但是,该顺序不是那样的.有一些Missig直方图,例如hists10467_blinded.root hists10468_blinded.root hists10470_blinded.root.最终目标是在画布上获取一台直方图,该画布代表所有这些组合在一起.棘手的是,每个hists*****_blinded.root中都有大约15个1D病变,我只需要从每个sc*****中拔出一个. . 我有2个想法,但我想我应该将它们结合在一起以获得最终结果. 第一个想法是由Histo打开Histo,但是由于顺序有一些错过的HIMPOS,因此无法正常工作. void overlap() { TCanvas *time = new TCanvas("c1", "overlap", 0, 0, 800, 6
26 2023-03-02
编程技术问答社区
快速(指开发人员的时间)的方式,从Java中使用大量的C++代码
背景:我们正在设计一个物理应用程序,它将进行大量数据分析,但我们的重点是整合物理电子设备. 基本上,我希望能够致电我可以想到以下方法 jni-正如我所说的 - 我们不想为每个班级写包装纸. . . jna - JNA不提供C ++映射,但只有C. swig - 我没有使用它,但听说很难使用. 其他可能是狂喜的事情:我们可以访问root源代码,但我们不想更改它.我们希望结果能够便携.我们想坚持免费库. 正如我所说,我们将能够从一开始就可以使用许多根代码,而不会大惊小怪. 解决方案 有了任何选择,您将需要进行一些包装.虽然您不想为每个类编写JNI包装器,但您可以编写更高级别的C ++类,以包含方法组.然后,您只需要为更高级别的类编写包装器(此方法也适用于其他方法,而不仅仅是JNI). 其他解决方案 编写一个小的C ++应用程序,该应用程序在您的输入中从Stdin中读取,并将输出写入STDOUT.然后从Java应用程序中运行该过程,并从Stdout读取输出
16 2023-03-01
编程技术问答社区
将900MB的.csv转换为ROOT(CERN)的TTree
我是编程和根(CERN)的新手,所以请放轻松.简而言之,我想将〜900 MB(11m行x 10列).CSV文件转换为一个很好的组织.有人可以提供最好的方法吗? 这是带有标题的数据线的示例(2010年美国人口普查块人口和人口密度数据): "人口普查县代码","人口普查区代码","人口普查代码","县/州","块质心纬度(学位)","块质心经度(学位)","块土地面积(SQ MI)",""块土地区域(平方km)","块人口","块人口密度(人/平方km)" 1001,201,1000,Autauga AL,32.469683,-86.480959,0.186343,0.482626154,61,126.3918241 我已经粘贴了我到目前为止写的内容. 我在运行时尤其无法弄清楚此错误:" C:41:1:错误:未知类型名称'USCSVTOROOT’. 这可能真的很愚蠢,但是您如何在根中阅读(用于阅读县/州名称)?像什么是数据类型?我只需要使用char吗?我在
204 2023-03-01
编程技术问答社区
在ROOT中绘制ASCII文件
我正在尝试编写一个小宏,该宏从具有4列的ASCII文件中读取数据.但是我只想将第二列的第二列绘制为(x,y). 解决方案 TGraph的构造函数可以直接获取CSV文件,请参阅文档. TGraph g("data.csv", "%*lg %lg %lg %*lg", ","); 第一个参数是文件名,第二个参数是格式字符串.跳过的列用*表示;要跳过最后一列,您实际上可以从格式字符串中省略它, %*lg %lg %lg 第三个参数是列分隔符,它可能是,的CSV风味. 其他解决方案 请按照以下示例:其他解决方案 您可以使用如上图所示的" CSV Contructor",也可以简单地生成一个空的Tgraph(或Tgrapherrors),在CSV文件上循环并添加点.示例在第一行/标题中给出了一些恒定的错误条: ifstream infile("input.csv"); TGraphErrors *g1 = new TGraphError
16 2023-02-24
编程技术问答社区
我的笔记本电脑上有一堆上传的.root文件,但我只需要特定的文件
我有一个带有10000 .root文件(每个看起来像hists11524_blinded.root或hists9899_blinded.root)的目录,需要为我的数据分析目的运行一些宏.但是,我不需要所有文件(其中只有4000个)才能进入目录.我有thebest.txt file中需要的运行列表(这4000个数字).该文件也在该目录中,带有直方图. 我想通过使用.txt文件中的信息来删除处理宏之前所需的文件. 这就是thebest.txt文件的样子: 09769 09772 09773 09776 09777 09781 09782 09785 09786 09789 09790 09793 ... 我的猜测是使用命令: -comm -2 -3
18 2022-11-03
编程技术问答社区
使用PyRoot读取根目录下的TT树
我刚开始使用 pyroot 读取根文件,但无法使用 jupyter notebook 从文件中读取数据.以下是 TBrowser 的外观: 我是这样开始的: import ROOT as root import numpy as np f = root.TFile("RealData.root") myTree = f.Get("tree") entries = myTree.GetEntriesFast() 到目前为止,它正在工作,如果我打印条目,我会得到文件中正确数量的整数.但我不知道如何从树中读取实际数据(event_number、n_channels 等).如果我尝试类似 myTree.events 或 myTree.event_number 的操作,内核将停止工作.我应该怎么做才能从树中读取数据? 解决方案 通常使用pyROOT,你可以这样做: import ROOT as root import numpy as np f = root.TFile
200 2022-08-11
编程技术问答社区
打开txt文件,在根部画直方图
我有一个包含数字的 txt 文件.我想在根目录下根据这个文件绘制直方图.但我不能这样做. { TFile *f = new TFile("myfile.root"); f.ls(); TH1F * h1 = (TH1F*)f.Get("h1"); h1->Draw(); } 解决方案 看看本教程来自 ROOT 网站.据我所知,ROOT 不能直接打开纯文本文件.TFile("myfile.root") 调用可用于打开 ROOT 文件(即由 ROOT 创建的包含持久化 ROOT 对象(如直方图)的二进制文件),正如您所指出的,如果您尝试使用它打开纯文本文件,则会导致错误.教程页面中显示的方法是创建一个 TH1,然后使用标准 C++ I/O 流从您的文本文件中读取并以正常方式填充直方图.
102 2022-08-11
编程技术问答社区
在XCode中设置来自Cern的ROOT,正确链接图书管理员
我想在我的 XCode IDE 中从 CERN 设置 ROOT,但在链接库时遇到问题.我正在使用 root 6.04.14 和 xcode 7.3.我创建了一个模拟项目,其中只有一个 .cpp,其中包含一个来自根目录的基本类(#include "TFile.h").我可以通过以下方式从命令行编译: clang++ -std=c++11 -I/opt/root/root-6.04.14/include/root -L/opt/root/root-6.04.14/lib/root -lCore main.cpp 现在需要在 XCode IDE 中设置所有内容.我在头文件搜索路径中包含了“/opt/root/root-6.04.14/include/root",XCode 没有抱怨,所以我猜它找到了头文件.我尝试将“/opt/root/root-6.04.14/lib/root -lCore"添加到库搜索路径,但出现错误:在/Applications/Xcode.app/Conte
1300 2022-07-19
编程技术问答社区