2

我正在将曲线拟合到大约 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

4 回答 4

2

您也可以使用选项 -b 启动 root

root -b
于 2014-03-05T10:07:21.083 回答
1

您是否尝试使用限制一般 ROOT 输出

gROOT->ProcessLine( "gErrorIgnoreLevel = 1001;")

?

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

于 2014-06-21T17:10:14.817 回答
1

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

{
  gROOT->SetBatch(1);
  ...
}
于 2013-11-22T18:09:21.647 回答
1

这更像是一条评论:

还有一个“N”选项,它强制 ROOT 不存储图形功能并且不绘制任何东西。

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

gr1 -> Fit(mygaus,"QN","",tspulse_sum[j],tepulse_sum[j]);
于 2013-10-16T08:13:53.497 回答