为2个不同的文件(输入和输出)运行相同的脚本??? / ROOT / C ++

时间:2017-05-01 22:12:23

标签: c++ root-framework

我有一个脚本可以读取树并创建一些图表。

我需要运行两个文件,因此我需要为file1运行一次相同的脚本,为file2运行一次,每次都将结果存储在不同的输出文件中。

如何告诉我的程序每次运行哪个文件以及保存结果的位置?

file1是:flatTree_jetHT
outputfile1是:flatTree_JetHT_output.root

file2是:flatTree_jetHT2
outputfile2是:flatTree_JetHT2_output.root

我需要使用一个空格并告诉从终端(.x flatTree_jetHt_read.C

运行哪个文件来写下来

这是我的代码:

#include <iostream>
void flatTree_jetHT_read()
{

  gROOT->Reset();
  gROOT->SetStyle("Plain"); 
  gStyle->SetOptStat(1);
  gStyle->SetOptFit(0);
  gStyle->SetPadColor(0);
  gStyle->SetPalette(1);

  TFile *f = TFile::Open("flatTree_JetHT.root", "READ");
  TTree *tree = (TTree*)f->Get("boosted/events");
  TFile *outf = TFile::Open("flatTree_JetHT_output.root", "RECREATE");
//more code....
}

1 个答案:

答案 0 :(得分:1)

您是否尝试过将输入/输出作为函数的参数传递? (请参阅用户指南的Getting Started部分)。

void two_args(const char* input_file, const char* output_file)
{
    printf("Input: '%s'\n", input_file);
    printf("Output: '%s'\n", output_file);
}

然后以

运行
$ root -l -x -q '/tmp/two_args.C+("in.root", "out.root")'