主要记录写root程序过程的一些tips
makefile自动化变量
$@
生成规则名字
$<
依赖的第一个
$^
所有依赖
makefile使用静态模式编译各种源文件
1# 需要编译.o文件,对应xxx.cpp yyy.cpp zzz.cpp
2OBJS = xxx.o yyy.o zzz.o
3# 生成规则,遍历$(OBJS)中的每一个.o文件(%.o),以对应的.cpp(%.cpp)文件为依赖
4$(OBJS):%.o:%.cpp
5 $(GXX) $(CFLAGS) -c $<
链接时的顺序
xxxxxxxxxx
31# 链接库要放到最后
2$(EXECUTABLE): $(OBJS)
3 $(GXX) -o $@ $^ $(LDFLAGS)
.x
和编译共用,使用宏ifndef __CINT__
包裹编译时需要包含的main
函数
坐标轴极限设置得恰好,可以不显示坐标刻度,比如说 0.81-1.99,两端的 0.8 和 2.0 就不会显示
tree->Draw("", "", "goff")
可以只存图,不画图,也可在jupyter
中使用
坐标轴边界,x轴 SetLimits
,y轴 SetRangeUser
gSytle->SetOptFit()
显示拟合参数(右上角)
TMultiGraph
自动删除内部的TGraph
,无需手动删除
TH1
和TGraph
的GetListOfFunctions()
返回一个链表,可以在其中记录fit的函数,TLegend
,TLatex
等信息
TTree->SetAlias()
,设置一个字符串的别名,可以在TTree->Draw()
中的""
中使用,别名会保存在树中,以后可以直接调用
TTree->Show(Long64_t entry=-1, Int_t lenmax=20)
,对于超过20个数组,如果要显示需要给第二个参数
Form("%d", i)
将 int
转换为 char*
,double
等同理
在root命令行模式,.x
运行文件时,只要不关闭写的文件,图片就不会被删除
ProfileX()
x方向的剖面,对x方向上每一个bin,加权叠加y方向上的bin。即对于x方向上第i
个bin,Profile
中的x方向第i
个bin的值。用于描述x方向上的均值。
gROOT->ProcessLine(".L xxx.cpp")
在代码中用,相当于在root
命令行中敲入 .L xxx.cpp
使用jupyter nbconvert
将ipynb
转化成html
后,使用nginx
搭建服务器展示。如果使用了jsroot
,需要将$ROOTSYS/js/scripts
整个目录复制到html
目录下
浏览器的控制台可用于debug
TObject->Write(const char* name)
可以在写入文件时直接指定名字