You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROOT学习遇代码问题:TF1标记不显示及宏执行报错求助

ROOT代码问题解决方案

问题1:TF1标记样式不显示

  • 问题原因:TF1::Draw()默认仅绘制函数曲线(线条模式),不会渲染标记样式,和ROOT库缺失无关。要显示标记,需在Draw()中指定绘制选项,比如"PL"(同时绘制线条和标记)或"P"(仅绘制标记)。
  • 修改后的完整代码:
{ 
  c1 = new TCanvas("c1", "My Root Plots",600, 400); 
  c1->Divide(2,2); 
  c1->cd(1); 
  f=new TF1("f","[0]*exp(-0.5*((x-[1])/[2])**2)/(sqrt(2.0*TMath::Pi())*[2])",-100,100); 
  f->SetTitle("Gaus;X axis ;Y axis"); 
  f->SetParameter(0,0.5*sqrt(2*TMath::Pi())); 
  f->SetParameter(1,8); 
  f->SetParameter(2,5); 
  f->SetLineColor(3); 
  f->SetMarkerColor(1); 
  f->SetMarkerStyle(kOpenStar); 
  f->SetMarkerSize(5); 
  f->Draw("PL"); // 添加"PL"选项同时绘制线条和标记
  c1->cd(2); 
  f1 = new TF1("f1", "[0]*x+[1]", 0,50); 
  f1->SetParameters(10,4); 
  f1->SetLineColor(5); 
  f1->SetTitle("ax+b;x;y"); 
  f1->Draw(); 
}

问题2:宏运行报错无法执行

  • 问题原因:
    1. 宏文件名与函数名不匹配:你的函数是testRandom,但文件名是main.cpp,ROOT默认会寻找与文件名同名的函数或main(),因此找不到执行入口。
    2. 默认循环次数500000000(5亿)过大,会导致程序卡死或运行极慢。
  • 解决步骤:
    1. 将宏文件重命名为testRandom.cpp(与函数名一致)。
    2. 降低默认循环次数,比如改为500000(50万),避免资源占用过高。
    3. 运行方式:
      • 在ROOT终端输入.x testRandom.cpp,直接使用默认参数执行函数;
      • 或先输入.L testRandom.cpp加载宏,再手动调用testRandom(100000)指定自定义参数运行。
  • 修改后的代码开头:
void testRandom(Int_t nrEvents=500000) { // 降低默认循环次数
  TRandom *r1=new TRandom(); 
  TRandom2 *r2=new TRandom2(); 
  TRandom3 *r3=new TRandom3(); 
  TCanvas* c1=new TCanvas("c1","TRandom Number Generators", 800,600); 
  c1->Divide(3,1); 
  TH1D *h1=new TH1D("h1","TRandom",500,0,1); 
  TH1D *h2=new TH1D("h2","TRandom2",500,0,1); 
  TH1D *h3=new TH1D("h3","TRandom3",500,0,1); 
  TStopwatch *st=new TStopwatch(); 
  st->Start(); 
  for (Int_t i=0; i<nrEvents; i++) { 
    h1->Fill(r1->Uniform(0,1)); 
  } 
  st->Stop(); 
  cout << "Random: " << st->CpuTime() << endl; 
  st->Start(); 
  c1->cd(1); 
  h1->SetFillColor(kRed+1); 
  h1->SetMinimum(0); 
  h1->Draw(); 
  // 后续代码保持不变
}

内容的提问来源于stack exchange,提问作者user20233932

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:55:44