如何在ROOT(CERN)中禁用屏幕输出

时间:2012-07-12 23:47:42

标签: c++ performance screen root-framework

我在大约25000个探测器事件中拟合曲线到峰值。我的代码只是遍历所有事件,适合它找到的所有峰值并获取参数信息。它需要永远!

我阻止了我的代码实际绘制曲线,但我想知道我是否可以做任何其他事情来加速这个处理。我认为如果我停止ROOT从每个适合打印到屏幕的参数,它可能会运行得更快。

这是真的吗?如果是这样,我该怎么办?还有其他想法吗?

  TGraphErrors * gr1 = view_waveform_ebars(run,evtNum,21);    
  mygaus -> SetParameters(671.55e3,-1000,S2loc,500);
  gr1 -> Fit(mygaus,"","",tspulse_sum[j],tepulse_sum[j]);
  fitResult = gr1 -> GetFunction("mygaus");

  pchi2[j] =  fitResult -> GetChisquare();

我希望不需要将我正在使用的功能复制到我的帖子中。但mygaus有4个参数,每次我使用gr1-> Fit(mygaus,...)调用它时,我会在屏幕上看到参数。所以问题是屏幕输出是否会减慢我的速度,如果是这样,我该如何将其关闭?

由于

4 个答案:

答案 0 :(得分:2)

您也可以使用选项-b

启动root
root -b

答案 1 :(得分:1)

您是否尝试使用

限制一般ROOT输出
gROOT->ProcessLine( "gErrorIgnoreLevel = 1001;")

忽略级别越高,您将获得的打印输出越少。 要忽略INFO消息,1001就足够了。要忽略警告,它必须高于2001.要忽略ERROR,它必须高于3001.检查打印输出的级别并根据需要进行设置。

答案 2 :(得分:0)

这更像是评论:

还有“N”选项可以强制ROOT不存储图形功能而不会绘制任何东西。

所以我会同时使用两者,即:

gr1 -> Fit(mygaus,"QN","",tspulse_sum[j],tepulse_sum[j]);

答案 3 :(得分:0)

也许,只是也许,你想在批处理模式下运行ROOT,如下所示:

{
  gROOT->SetBatch(1);
  ...
}