主要记录写root程序过程的一些tips
makefile自动化变量
$@ 生成规则名字
$< 依赖的第一个
$^ 所有依赖
makefile使用静态模式编译各种源文件
1# 需要编译.o文件,对应xxx.cpp yyy.cpp zzz.cpp2OBJS = xxx.o yyy.o zzz.o3# 生成规则,遍历$(OBJS)中的每一个.o文件(%.o),以对应的.cpp(%.cpp)文件为依赖4$(OBJS):%.o:%.cpp5 $(GXX) $(CFLAGS) -c $<链接时的顺序
xxxxxxxxxx31# 链接库要放到最后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)可以在写入文件时直接指定名字