我在大约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,...)
调用它时,我会在屏幕上看到参数。所以问题是屏幕输出是否会减慢我的速度,如果是这样,我该如何将其关闭?
由于
答案 0 :(得分:2)
您也可以使用选项-b
启动rootroot -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);
...
}