码迷,mamicode.com
首页 > 其他好文 > 详细

CERN ROOT程序使用心得1

时间:2019-10-03 16:06:14      阅读:939      评论:0      收藏:0      [点我收藏+]

标签:using   filename   str   二进制   ref   cat   number   flag   int   

CERN ROOT程序是使用技巧记录:

  1. Root 中THF的 bin从1开始记(不是从0)  例如: for (int m = 1; m<= xbin; m++) counts=HX->GetBinContent(m); HX为TH1F*
  2. 编译ROOT程序为可执行文件

g++ -o filename.exe test.cxx `root-config --cflags --libs`

g++ -fopenmp -o filename.exe  test.cxx `root-config --cflags --libs` //多线程慎用

g++ -O2  test.cxx `root-config --cflags --libs` -o filename.exe

g++ -O3 -DNDEBUG  test.cxx `root-config --cflags --libs` -o filename.exe

 

  3. 数据保存输出为文本操作   

fstream fout;
fout.open(test.txt",std::ios::out|std::ios::app);//追加方式打开写入

fout.open(test.txt",std::ios::out|std::ios::trunc);//截断文件,然后写入

创建目录

system("mkdir  ./testdir");//在当前目录下创建名为testdir的文件夹

4.文件读取(read)

  ifstream f(file_name.c_str(),std::ios::in|std::ios::binary);//以二进制方式打开

  f1.seekg(-8,ios::cur);文件流指针f往前跳8个字节

5.对数据四舍五入

//4舍5入函数
int round_double(double number)
{
  return (number > 0.0) ? floor(number + 0.5) : ceil(number - 0.5);
}

 

 

附:文本读取脚本实例

#include <iostream>
#include <fstream>
#include <TH1F.h>
#include <TApplication.h>
using namespace std;
void test()
{
    //read in data, reference to "read_data.C"
    double x[51];
    int y[51];
    int i = 0;
    int j=0;
    ifstream myfile("data.txt");
    if(!myfile) {
        cout << "Unable to open myfile";
        exit(1); // terminate with error  
    }
    else
    {
        char str[51] = {0}; //define and initialize an array
        while (!myfile.eof())
        {
            myfile.getline (str, 51); //读取一行数据
            sscanf(str, "%le, %d", &x[i], &y[i]);
            i++;
        }
    }
        
    TH1F *h = new TH1F("h","delta time;delta time;ampl",51,x[0],x[50]);
    //TH1F *h = new TH1F();
    for( j=0;j<51;j++)         
    {    
        cout<<x[j]<<"\t"<<y[j]<<endl;
        h->Fill(x[j],y[j]);
    }
    //h->Fill(x[0]);h->Fill(x[1]);h->Fill(x[2]);
    /*for (j=0; j<51; j++) 
    {
        for(int k=0;k<y[j];k++)
        h->Fill(x[j],1);
    }*/
    h->Draw("Hist");
}

 

 

CERN ROOT程序使用心得1

标签:using   filename   str   二进制   ref   cat   number   flag   int   

原文地址:https://www.cnblogs.com/huang-chang/p/11619838.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!