TCanvas *cv = new TCanvas("cv","cv",700,700);cv->Divide(3,3,0,0);waveformS1->Scale(0.0040);TGraph *gr5 = new TGraph("~/dltools/yamamo-base/yamamo-base/ABCZ.dat","%lg %lg");TGraph *wfS1v[10];for(int i=0; i<10; i++){wfS1v[i]=(TGraph*)gr5->Clone();}TH1F *wfS1v1 = (TH1F*)waveformS1->Clone("wfS1v1");TH1F *wfS1v2 = (TH1F*)waveformS1->Clone("wfS1v2");TH1F *wfS1v3 = (TH1F*)waveformS1->Clone("wfS1v3");TH1F *wfS1v4 = (TH1F*)waveformS1->Clone("wfS1v4");TH1F *wfS1v5 = (TH1F*)waveformS1->Clone("wfS1v5");TH1F *wfS1v6 = (TH1F*)waveformS1->Clone("wfS1v6");TH1F *wfS1v7 = (TH1F*)waveformS1->Clone("wfS1v7");TH1F *wfS1v8 = (TH1F*)waveformS1->Clone("wfS1v8");TH1F *wfS1v9 = (TH1F*)waveformS1->Clone("wfS1v9");float ymin=-1.2;float ymax=2.5;int hnuma[10];hnuma[1]=1;hnuma[2]=2;hnuma[3]=3;hnuma[4]=7;hnuma[5]=8;hnuma[6]=10;hnuma[7]=14;hnuma[8]=15;hnuma[9]=16;for(int i=1;i<10;i++){int mnum=i;int hnum=hnuma[i];TGraph* hname=&(*wfS1v[mnum]);hname->SetLineColor(3);cv->cd(mnum);hname->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname->GetYaxis()->SetRangeUser(ymin,ymax);hname->SetTitle(0);hname->Draw("AL");char wfhn[50];sprintf(wfhn,"wfS1v%d",mnum);TH1F* hname2=(TH1F*)gDirectory->Get(wfhn);cv->cd(mnum);hname2->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname2->GetYaxis()->SetRangeUser(ymin,ymax);hname2->SetTitle(0);hname2->SetStats(0);hname2->Draw("same");} TCanvas *cv = new TCanvas("cv","cv",700,700);cv->Divide(3,3,0,0);waveformS1->Scale(0.0040);TGraph *gr5 = new TGraph("~/dltools/yamamo-base/yamamo-base/ABCZ2.dat","%lg %lg");TGraph *wfS1v[10];for(int i=0; i<10; i++){wfS1v[i]=(TGraph*)gr5->Clone();}TH1F *wfS1v1 = (TH1F*)waveformS1->Clone("wfS1v1");TH1F *wfS1v2 = (TH1F*)waveformS1->Clone("wfS1v2");TH1F *wfS1v3 = (TH1F*)waveformS1->Clone("wfS1v3");TH1F *wfS1v4 = (TH1F*)waveformS1->Clone("wfS1v4");TH1F *wfS1v5 = (TH1F*)waveformS1->Clone("wfS1v5");TH1F *wfS1v6 = (TH1F*)waveformS1->Clone("wfS1v6");TH1F *wfS1v7 = (TH1F*)waveformS1->Clone("wfS1v7");TH1F *wfS1v8 = (TH1F*)waveformS1->Clone("wfS1v8");TH1F *wfS1v9 = (TH1F*)waveformS1->Clone("wfS1v9");float ymin=-1.2;float ymax=2.5;int hnuma[10];hnuma[1]=1;hnuma[2]=2;hnuma[3]=3;hnuma[4]=7;hnuma[5]=8;hnuma[6]=10;hnuma[7]=14;hnuma[8]=15;hnuma[9]=16;for(int i=1;i<10;i++){int mnum=i;int hnum=hnuma[i];TGraph* hname=&(*wfS1v[mnum]);hname->SetLineColor(6);cv->cd(mnum);hname->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname->GetYaxis()->SetRangeUser(ymin,ymax);hname->SetTitle(0);hname->Draw("AL");char wfhn[50];sprintf(wfhn,"wfS1v%d",mnum);TH1F* hname2=(TH1F*)gDirectory->Get(wfhn);cv->cd(mnum);hname2->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname2->GetYaxis()->SetRangeUser(ymin,ymax);hname2->SetTitle(0);hname2->SetStats(0);hname2->Draw("same");} TCanvas *cv = new TCanvas("cv","cv",700,700);cv->Divide(3,3,0,0);waveformS1->Scale(0.0040);TGraph *gr5 = new TGraph("~/dltools/yamamo-base/yamamo-base/ABCR1.dat","%lg %lg");TGraph *wfS1v[10];for(int i=0; i<10; i++){wfS1v[i]=(TGraph*)gr5->Clone();}TH1F *wfS1v1 = (TH1F*)waveformS1->Clone("wfS1v1");TH1F *wfS1v2 = (TH1F*)waveformS1->Clone("wfS1v2");TH1F *wfS1v3 = (TH1F*)waveformS1->Clone("wfS1v3");TH1F *wfS1v4 = (TH1F*)waveformS1->Clone("wfS1v4");TH1F *wfS1v5 = (TH1F*)waveformS1->Clone("wfS1v5");TH1F *wfS1v6 = (TH1F*)waveformS1->Clone("wfS1v6");TH1F *wfS1v7 = (TH1F*)waveformS1->Clone("wfS1v7");TH1F *wfS1v8 = (TH1F*)waveformS1->Clone("wfS1v8");TH1F *wfS1v9 = (TH1F*)waveformS1->Clone("wfS1v9");float ymin=-1.2;float ymax=2.5;int hnuma[10];hnuma[1]=1;hnuma[2]=2;hnuma[3]=3;hnuma[4]=7;hnuma[5]=8;hnuma[6]=10;hnuma[7]=14;hnuma[8]=15;hnuma[9]=16;for(int i=1;i<10;i++){int mnum=i;int hnum=hnuma[i];TGraph* hname=&(*wfS1v[mnum]);hname->SetLineColor(3);cv->cd(mnum);hname->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname->GetYaxis()->SetRangeUser(ymin,ymax);hname->SetTitle(0);hname->Draw("AL");char wfhn[50];sprintf(wfhn,"wfS1v%d",mnum);TH1F* hname2=(TH1F*)gDirectory->Get(wfhn);cv->cd(mnum);hname2->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname2->GetYaxis()->SetRangeUser(ymin,ymax);hname2->SetTitle(0);hname2->SetStats(0);hname2->Draw("same");} TCanvas *cv = new TCanvas("cv","cv",700,700);cv->Divide(3,3,0,0);waveformS1->Scale(0.0040);TGraph *gr5 = new TGraph("~/dltools/yamamo-base/yamamo-base/ABCR2.dat","%lg %lg");TGraph *wfS1v[10];for(int i=0; i<10; i++){wfS1v[i]=(TGraph*)gr5->Clone();}TH1F *wfS1v1 = (TH1F*)waveformS1->Clone("wfS1v1");TH1F *wfS1v2 = (TH1F*)waveformS1->Clone("wfS1v2");TH1F *wfS1v3 = (TH1F*)waveformS1->Clone("wfS1v3");TH1F *wfS1v4 = (TH1F*)waveformS1->Clone("wfS1v4");TH1F *wfS1v5 = (TH1F*)waveformS1->Clone("wfS1v5");TH1F *wfS1v6 = (TH1F*)waveformS1->Clone("wfS1v6");TH1F *wfS1v7 = (TH1F*)waveformS1->Clone("wfS1v7");TH1F *wfS1v8 = (TH1F*)waveformS1->Clone("wfS1v8");TH1F *wfS1v9 = (TH1F*)waveformS1->Clone("wfS1v9");float ymin=-1.2;float ymax=2.5;int hnuma[10];hnuma[1]=1;hnuma[2]=2;hnuma[3]=3;hnuma[4]=7;hnuma[5]=8;hnuma[6]=10;hnuma[7]=14;hnuma[8]=15;hnuma[9]=16;for(int i=1;i<10;i++){int mnum=i;int hnum=hnuma[i];TGraph* hname=&(*wfS1v[mnum]);hname->SetLineColor(6);cv->cd(mnum);hname->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname->GetYaxis()->SetRangeUser(ymin,ymax);hname->SetTitle(0);hname->Draw("AL");char wfhn[50];sprintf(wfhn,"wfS1v%d",mnum);TH1F* hname2=(TH1F*)gDirectory->Get(wfhn);cv->cd(mnum);hname2->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname2->GetYaxis()->SetRangeUser(ymin,ymax);hname2->SetTitle(0);hname2->SetStats(0);hname2->Draw("same");} TCanvas *cv = new TCanvas("cv","cv",700,700);cv->Divide(3,3,0,0);waveformS1->Scale(0.0040);TGraph *gr5 = new TGraph("~/dltools/yamamo-base/yamamo-base/ABCT1.dat","%lg %lg");TGraph *wfS1v[10];for(int i=0; i<10; i++){wfS1v[i]=(TGraph*)gr5->Clone();}TH1F *wfS1v1 = (TH1F*)waveformS1->Clone("wfS1v1");TH1F *wfS1v2 = (TH1F*)waveformS1->Clone("wfS1v2");TH1F *wfS1v3 = (TH1F*)waveformS1->Clone("wfS1v3");TH1F *wfS1v4 = (TH1F*)waveformS1->Clone("wfS1v4");TH1F *wfS1v5 = (TH1F*)waveformS1->Clone("wfS1v5");TH1F *wfS1v6 = (TH1F*)waveformS1->Clone("wfS1v6");TH1F *wfS1v7 = (TH1F*)waveformS1->Clone("wfS1v7");TH1F *wfS1v8 = (TH1F*)waveformS1->Clone("wfS1v8");TH1F *wfS1v9 = (TH1F*)waveformS1->Clone("wfS1v9");float ymin=-1.2;float ymax=2.5;int hnuma[10];hnuma[1]=1;hnuma[2]=2;hnuma[3]=3;hnuma[4]=7;hnuma[5]=8;hnuma[6]=10;hnuma[7]=14;hnuma[8]=15;hnuma[9]=16;for(int i=1;i<10;i++){int mnum=i;int hnum=hnuma[i];TGraph* hname=&(*wfS1v[mnum]);hname->SetLineColor(3);cv->cd(mnum);hname->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname->GetYaxis()->SetRangeUser(ymin,ymax);hname->SetTitle(0);hname->Draw("AL");char wfhn[50];sprintf(wfhn,"wfS1v%d",mnum);TH1F* hname2=(TH1F*)gDirectory->Get(wfhn);cv->cd(mnum);hname2->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname2->GetYaxis()->SetRangeUser(ymin,ymax);hname2->SetTitle(0);hname2->SetStats(0);hname2->Draw("same");} TCanvas *cv = new TCanvas("cv","cv",700,700);cv->Divide(3,3,0,0);waveformS1->Scale(0.0040);TGraph *gr5 = new TGraph("~/dltools/yamamo-base/yamamo-base/ABCT2.dat","%lg %lg");TGraph *wfS1v[10];for(int i=0; i<10; i++){wfS1v[i]=(TGraph*)gr5->Clone();}TH1F *wfS1v1 = (TH1F*)waveformS1->Clone("wfS1v1");TH1F *wfS1v2 = (TH1F*)waveformS1->Clone("wfS1v2");TH1F *wfS1v3 = (TH1F*)waveformS1->Clone("wfS1v3");TH1F *wfS1v4 = (TH1F*)waveformS1->Clone("wfS1v4");TH1F *wfS1v5 = (TH1F*)waveformS1->Clone("wfS1v5");TH1F *wfS1v6 = (TH1F*)waveformS1->Clone("wfS1v6");TH1F *wfS1v7 = (TH1F*)waveformS1->Clone("wfS1v7");TH1F *wfS1v8 = (TH1F*)waveformS1->Clone("wfS1v8");TH1F *wfS1v9 = (TH1F*)waveformS1->Clone("wfS1v9");float ymin=-1.2;float ymax=2.5;int hnuma[10];hnuma[1]=1;hnuma[2]=2;hnuma[3]=3;hnuma[4]=7;hnuma[5]=8;hnuma[6]=10;hnuma[7]=14;hnuma[8]=15;hnuma[9]=16;for(int i=1;i<10;i++){int mnum=i;int hnum=hnuma[i];TGraph* hname=&(*wfS1v[mnum]);hname->SetLineColor(3);cv->cd(mnum);hname->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname->GetYaxis()->SetRangeUser(ymin,ymax);hname->SetTitle(0);hname->Draw("AL");char wfhn[50];sprintf(wfhn,"wfS1v%d",mnum);TH1F* hname2=(TH1F*)gDirectory->Get(wfhn);cv->cd(mnum);hname2->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname2->GetYaxis()->SetRangeUser(ymin,ymax);hname2->SetTitle(0);hname2->SetStats(0);hname2->Draw("same");} 近傍のはけいを同時表示 TCanvas *cv = new TCanvas("cv","cv",700,700);cv->Divide(3,3,0,0);waveformS1->Scale(0.0040);TGraph *gr5 = new TGraph("~/dltools/yamamo-base/yamamo-base/ABC.dat","%lg %lg");TGraph *wfS1v[10];for(int i=0; i<10; i++){wfS1v[i]=(TGraph*)gr5->Clone();}TGraph *gr15 = new TGraph("~/dltools/yamamo-base/yamamo-base/ABCZ.dat","%lg %lg");TGraph *wfS1vZ[10];for(int i=0; i<10; i++){wfS1vZ[i]=(TGraph*)gr15->Clone();}TH1F *wfS1v1 = (TH1F*)waveformS1->Clone("wfS1v1");TH1F *wfS1v2 = (TH1F*)waveformS1->Clone("wfS1v2");TH1F *wfS1v3 = (TH1F*)waveformS1->Clone("wfS1v3");TH1F *wfS1v4 = (TH1F*)waveformS1->Clone("wfS1v4");TH1F *wfS1v5 = (TH1F*)waveformS1->Clone("wfS1v5");TH1F *wfS1v6 = (TH1F*)waveformS1->Clone("wfS1v6");TH1F *wfS1v7 = (TH1F*)waveformS1->Clone("wfS1v7");TH1F *wfS1v8 = (TH1F*)waveformS1->Clone("wfS1v8");TH1F *wfS1v9 = (TH1F*)waveformS1->Clone("wfS1v9");float ymin=-1.2;float ymax=2.5;int hnuma[10];hnuma[1]=1;hnuma[2]=2;hnuma[3]=3;hnuma[4]=7;hnuma[5]=8;hnuma[6]=10;hnuma[7]=14;hnuma[8]=15;hnuma[9]=16;for(int i=1;i<10;i++){int mnum=i;int hnum=hnuma[i];TGraph* hname=&(*wfS1v[mnum]);hname->SetLineColor(2);cv->cd(mnum);hname->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname->GetYaxis()->SetRangeUser(ymin,ymax);hname->SetTitle(0);hname->Draw("AL");TGraph* hname=&(*wfS1vZ[mnum]);hname->SetLineColor(3);cv->cd(mnum);hname->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname->GetYaxis()->SetRangeUser(ymin,ymax);hname->SetTitle(0);hname->Draw("same");char wfhn[50];sprintf(wfhn,"wfS1v%d",mnum);TH1F* hname2=(TH1F*)gDirectory->Get(wfhn);cv->cd(mnum);hname2->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200);hname2->GetYaxis()->SetRangeUser(ymin,ymax);hname2->SetTitle(0);hname2->SetStats(0);hname2->Draw("same");} 長すぎるのでanarootmcr/3simonexp.cxxにした TCanvas *cv = new TCanvas("cv","cv",700,700); cv->Divide(3,3,0,0); waveformS1->Scale(0.0040); TGraph *gr5 = new TGraph("~/dltools/yamamo-base/yamamo-base/ABC.dat","%lg %lg"); TGraph *wfS1v[10];for(int i=0; i<10; i++){wfS1v[i]=(TGraph*)gr5->Clone();} TGraph *gr15 = new TGraph("~/dltools/yamamo-base/yamamo-base/ABCZ.dat","%lg %lg"); TGraph *wfS1vZ[10];for(int i=0; i<10; i++){wfS1vZ[i]=(TGraph*)gr15->Clone();} TGraph *gr25 = new TGraph("~/dltools/yamamo-base/yamamo-base/ABCZ2.dat","%lg %lg"); TGraph *wfS1vW[10];for(int i=0; i<10; i++){wfS1vW[i]=(TGraph*)gr25->Clone();} TH1F *wfS1v1 = (TH1F*)waveformS1->Clone("wfS1v1"); TH1F *wfS1v2 = (TH1F*)waveformS1->Clone("wfS1v2"); TH1F *wfS1v3 = (TH1F*)waveformS1->Clone("wfS1v3"); TH1F *wfS1v4 = (TH1F*)waveformS1->Clone("wfS1v4"); TH1F *wfS1v5 = (TH1F*)waveformS1->Clone("wfS1v5"); TH1F *wfS1v6 = (TH1F*)waveformS1->Clone("wfS1v6"); TH1F *wfS1v7 = (TH1F*)waveformS1->Clone("wfS1v7"); TH1F *wfS1v8 = (TH1F*)waveformS1->Clone("wfS1v8"); TH1F *wfS1v9 = (TH1F*)waveformS1->Clone("wfS1v9"); float ymin=-1.2;float ymax=2.5; int hnuma[10]; hnuma[1]=1;hnuma[2]=2;hnuma[3]=3;hnuma[4]=7;hnuma[5]=8;hnuma[6]=10;hnuma[7]=14;hnuma[8]=15;hnuma[9]=16; for(int i=1;i<10;i++){ int mnum=i;int hnum=hnuma[i]; TGraph* hname=&(*wfS1vZ[mnum]); hname->SetLineColor(3); cv->cd(mnum); hname->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200); hname->GetYaxis()->SetRangeUser(ymin,ymax); hname->SetTitle(0);hname->Draw("same"); TGraph* hname=&(*wfS1v[mnum]); hname->SetLineColor(2); cv->cd(mnum); hname->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200); hname->GetYaxis()->SetRangeUser(ymin,ymax); hname->SetTitle(0); hname->Draw("AL"); char wfhn[50];sprintf(wfhn,"wfS1v%d",mnum); TH1F* hname2=(TH1F*)gDirectory->Get(wfhn); cv->cd(mnum); hname2->GetXaxis()->SetRangeUser(hnum*200,hnum*200+200); hname2->GetYaxis()->SetRangeUser(ymin,ymax); hname2->SetTitle(0);hname2->SetStats(0); hname2->Draw("same"); } ここまで ビーム状が見える2次元図を書く //TCanvas *c2 = new TCanvas("c2", "c2",1002,1152); TCanvas *c2 = new TCanvas("c2", "c2",800+2,900+27); TH2F* h2 = (TH2F*) maxE->Project3D("zy"); //h2->SetStats(0);h2->SetTitle(0);h2->Draw("colz");gPad->SetLogz(1);TPaletteAxis *pal= (TPaletteAxis*)h2->GetListOfFunctions()->FindObject("palette");pal->SetX2NDC(0.93);h2->SetTickLength(0,"Z"); h2->SetStats(0);h2->SetTitle(0);h2->Draw("colz");gPad->Update();gPad->SetLogz(1);TPaletteAxis *pal= (TPaletteAxis*)h2->GetListOfFunctions()->FindObject("palette");pal->SetX2NDC(0.93);h2->SetTickLength(0,"Z"); 軸タイトルの追加 h2->SetTitle(";y [mm];z [mm];");h2->Draw("colz"); 横長にする場合 TCanvas *c2 = new TCanvas("c2", "c2",1125+2,1000+27); TH2F* h2 = (TH2F*) maxE->Project3D("yz"); h2->SetStats(0);h2->SetTitle(0);h2->Draw("colz");gPad->Update();gPad->SetLogz(1);TPaletteAxis *pal= (TPaletteAxis*)h2->GetListOfFunctions()->FindObject("palette");pal->SetX2NDC(0.93);h2->SetTickLength(0,"Z"); h2->SetTitle(";z [mm];y [mm];");h2->Draw("colz"); 3Dからz範囲ごとのxy断面図を作る onceE->SetAxisRange(0,5,"z"); onceE->Project3D("yx")->Draw("colz"); //"yx"としないと横軸x縦軸yにならない謎仕様 これの1次元 int fb=0; onceE->SetAxisRange(fb,fb+5,"z");onceE->Project3D("y")->Draw(): peak searchでWarning in : Peak buffer fullとなる問題 TSpectrum *s = new TSpectrum(2); で、()内の数字はをピークの数より1多くすればよい?あとは s->Search(h3); でOK。値を取得するときは *((s->GetPositionX())+0) で取れる。複数のピークがある場合+0を1,2...とすればいい。ピークが高い順に入っている?(例外もあるようだが) 余計なぴーくを検出したくない場合は s->Search(h39,2,"",0.5); とスレショルドで指定する(恐らく最大ピークに対する割合) まとめ版 #include char fitxt[50];sprintf(fitxt,"outimg/Run021c0m2_onceE.txt");int rebin=1;int range=2; char hname[50];sprintf(hname,"onceE"); int zs=0; char axis[3];sprintf(axis,"x"); TH3F* h2=(TH3F*)gDirectory->Get(hname);h2->SetAxisRange(zs,zs+5,"z");TH1D* h3=(TH1D*)h2->Project3D(axis); h3->Rebin(rebin); TSpectrum *s = new TSpectrum(2); s->Search(h3,2,"",0.5); TF1 *f1 = new TF1("f1","gaus",*(s->GetPositionX())-range,*(s->GetPositionX())+range);h3->Fit("f1","R"); ofstream ofs(fitxt,std::ios::app);ofs<GetParameter(0)/rebin<<"\t"<GetParameter(1)<<"\t"<GetParameter(2)<<"\n";ofs.close();int rebin=1; 一括版 #include char fitxt[50];sprintf(fitxt,"outimg/Run021c0m2_onceE.txt");int rebin=1;int range=2; ofstream ofs(fitxt,std::ios::app);ofs<<"Item\tConstant\tMean\tSigma\tError of sigma\n";ofs.close(); char hname[50];sprintf(hname,"onceE"); int zs=0; char axis[3];sprintf(axis,"x"); //TH3F* h2=(TH3F*)gDirectory->Get(hname);h2->SetAxisRange(zs,zs+5,"z");TH1D* h3=(TH1D*)h2->Project3D(axis);h3->Rebin(rebin);TSpectrum *s = new TSpectrum(2);s->Search(h3,2,"",0.5);TF1 *f1 = new TF1("f1","gaus",*(s->GetPositionX())-range,*(s->GetPositionX())+range);h3->Fit("f1","R");ofstream ofs(fitxt,std::ios::app);ofs<GetParameter(0)/rebin<<"\t"<GetParameter(1)<<"\t"<GetParameter(2)<<"\t"<GetParError(2)<<"\n";ofs.close();int rebin=1; TH3F* h2=(TH3F*)gDirectory->Get(hname);h2->SetAxisRange(zs,zs+5,"x");TH1D* h3=(TH1D*)h2->Project3D(axis);h3->Rebin(rebin);TSpectrum *s = new TSpectrum(2);s->Search(h3,2,"",0.5);TF1 *f1 = new TF1("f1","gaus",*(s->GetPositionX())-range,*(s->GetPositionX())+range);h3->Fit("f1","R");ofstream ofs(fitxt,std::ios::app);ofs<GetParameter(0)/rebin<<"\t"<GetParameter(1)<<"\t"<GetParameter(2)<<"\t"<GetParError(2)<<"\n";ofs.close();int rebin=1; datファイルから2次元プロットを作る(TGraph) //TGraph *gr5 = new TGraph("sim2.dat","%lg %*lg %lg") //飛ばし読みする列がある場合 //TGraph *gr5 = new TGraph("Run018.dat","%lg %lg") //gr5->Draw("AP") //http://www-cr.scphys.kyoto-u.ac.jp/member/ono10/root/plot2.html //gr5->SetMarkerStyle(8); //gr5->GetYaxis()->SetRangeUser(-40,40) //gr5->GetXaxis()->SetRangeUser(0,90) //gr5->SetMarkerColor(2); //gr5->Draw("AP") //TGraph *gr6 = new TGraph("Run021.dat","%lg %lg") //gr6->SetMarkerStyle(8); //gr6->SetMarkerColor(4); //gr6->Draw("P"); //重ね書きはAなし このやり方は内部的なビン配置とx軸範囲が一致せずに正確に0~90になってくれない こっちがいい TCanvas *c2 = new TCanvas("c2", "c2",1125+2,1000+27); TH1F *frame = gPad->DrawFrame(0,-40,90,40); TGraph *gr5 = new TGraph("Run018.dat","%lg %lg"); gr5->SetMarkerStyle(8);gr5->SetMarkerColor(2);gr5->Draw("P"); TGraph *gr6 = new TGraph("Run021.dat","%lg %lg"); gr6->SetMarkerStyle(8);gr6->SetMarkerColor(4);gr6->Draw("P"); frame->SetTitle(";z [mm];x [mm];"); 線を引く TGraph *line1 = new TGraph(2); line1->SetPoint(0 , 8 , -40); line1->SetPoint(1 , 8 , 40); line1->Draw("L"); 消す line1->Delete(); たくさんひく TGraph *line[50];for(int i=0;i<50;i++){line[i] = new TGraph(2);} line[0]->SetPoint(0 , 0 , -30); line[0]->SetPoint(1 , 76 , -40); line[0]->Draw("L"); line[1]->SetPoint(0 , 0 , 30); line[1]->SetPoint(1 , 76 , 40); line[1]->Draw("L"); int segz[5]={8,22,38,56,76}; for(int i=0;i<5;i++){float wide=30+segz[i]/7.5;line[i+2]->SetPoint(0,segz[i],wide);line[i+2]->SetPoint(1,segz[i],-wide);line[i+2]->Draw("L");} 結晶のセグメント境界を一気に引く TGraph *line[50];for(int i=0;i<50;i++){line[i] = new TGraph(2);}line[0]->SetPoint(0 , 0 , -30);line[0]->SetPoint(1 , 76 , -40);line[0]->Draw("L");line[1]->SetPoint(0 , 0 , 30);line[1]->SetPoint(1 , 76 , 40);line[1]->Draw("L");int segz[5]={8,22,38,56,76};for(int i=0;i<5;i++){float wide=30+segz[i]/7.5;line[i+2]->SetPoint(0,segz[i],wide);line[i+2]->SetPoint(1,segz[i],-wide);line[i+2]->Draw("L");} たてver TCanvas *c2 = new TCanvas("c2", "c2",800+2,900+27); TH1F *frame = gPad->DrawFrame(-40,0,40,90); TGraph *gr5 = new TGraph("Run029.dat","%lg %*lg %lg"); gr5->SetMarkerStyle(8);gr5->SetMarkerColor(2);gr5->Draw("P"); TGraph *gr6 = new TGraph("Run026.dat","%lg %*lg %lg"); gr6->SetMarkerStyle(8);gr6->SetMarkerColor(4);gr6->Draw("P"); TGraph *line[50];for(int i=0;i<50;i++){line[i] = new TGraph(2);}line[0]->SetPoint(0 , -30 , 0);line[0]->SetPoint(1 , -40 , 76);line[0]->Draw("L");line[1]->SetPoint(0 , 30 , 0);line[1]->SetPoint(1 , 40 , 76);line[1]->Draw("L");int segz[5]={8,22,38,56,76};for(int i=0;i<5;i++){float wide=30+segz[i]/7.5;line[i+2]->SetPoint(0,wide,segz[i]);line[i+2]->SetPoint(1,-wide,segz[i]);line[i+2]->Draw("L");} frame->SetTitle(";x [mm];z [mm];"); XYver root [0] TCanvas *c2 = new TCanvas("c2", "c2",800+2,800+27); root [1] TH1F *frame = gPad->DrawFrame(-40,-40,40,40); root [2] TGraph *gr5 = new TGraph("Run029.dat","%lg %lg"); root [3] gr5->SetMarkerStyle(8);gr5->SetMarkerColor(2);gr5->Draw("P"); root [4] TGraph *gr6 = new TGraph("Run026.dat","%lg %lg"); root [5] gr6->SetMarkerStyle(8);gr6->SetMarkerColor(4);gr6->Draw("P"); root [6] TF1 f7("f7","sqrt(5*5-x*x)",-5,5) root [7] TF1* fanc = &f7 root [8] fanc->SetLineColor(1);fanc->SetLineWidth(1);fanc->Draw("SAME"); root [9] TF1 f8("f8","-sqrt(5*5-x*x)",-5,5) root [10] TF1* fanc = &f8 root [11] fanc->SetLineColor(1);fanc->SetLineWidth(1);fanc->Draw("SAME"); root [12] TF1 f6("f6","sqrt(40*40-x*x)",-40,40) root [13] TF1* fanc = &f6 root [14] fanc->SetLineColor(1);fanc->SetLineWidth(1);fanc->Draw("SAME"); root [15] TF1 f9("f9","-sqrt(40*40-x*x)",-40,40) root [16] TF1* fanc = &f9 root [17] fanc->SetLineColor(1);fanc->SetLineWidth(1);fanc->Draw("SAME"); root [18] frame->SetTitle(";x [mm];y [mm];"); しぐま root [0] TCanvas *c2 = new TCanvas("c2", "c2",800+2,500+27); root [1] TH1F *frame = gPad->DrawFrame(-40,0,40,3); root [2] TGraph *gr5 = new TGraph("Run029.dat","%lg %*lg %*lg %lg"); root [3] gr5->SetMarkerStyle(8);gr5->SetMarkerColor(2);gr5->Draw("P"); root [4] TGraph *gr6 = new TGraph("Run026.dat","%lg %*lg %*lg %lg"); root [5] gr6->SetMarkerStyle(8);gr6->SetMarkerColor(4);gr6->Draw("P"); root [6] frame->SetTitle(";x [mm];#sigma_y [mm];"); Tghraph gr6->SetLineColor(1) gr6->SetLineStyle(2) gr6->Draw("AL"); root [0] TCanvas *c2 = new TCanvas(); root [1] TH1F *frame = gPad->DrawFrame(1e-3,1e-18,1e5,1e6); root [2] c1->SetLogx() root [3] c1->SetLogy() root [4] TGraph *gr1 = new TGraph("ge-gamma.dat","%lg %lg"); root [5] gr1->Draw("L"); root [6] TGraph *gr2 = new TGraph("ge-gamma.dat","%lg %*lg %lg"); root [7] gr2->SetLineStyle(2) root [8] gr2->Draw("L"); root [9] TGraph *gr3 = new TGraph("ge-gamma.dat","%lg %*lg %*lg %lg"); root [10] gr3->SetLineStyle(3) root [11] gr3->Draw("L"); root [12] TGraph *gr3 = new TGraph("ge-gamma.dat","%lg %*lg %*lg %lg"); 目盛りの数字の大きさを変える frame->GetXaxis()->SetLabelSize(0.05); 理由はわからないが古いrootっぽいデザインにできる方法 root [1] TStyle* ildStyle = new TStyle("ildStyle", "ILD Style"); root [2] ildStyle->SetStatFont(132); root [3] ildStyle->cd(); root [4] gROOT->ForceStyle(); root [5] gStyle->ls(); OBJ: TStyle ildStyle ILD Style : 0 at: 0x1ec98b0 root [6] onceE->Draw() Info in : created default TCanvas with name c1 ///////////////////////////////////// 正しいクラシック表示の仕方(いらない) root [0] Attaching file Run021c0m2-999.root as _file0... root [1] TStyle* ildStyle = new TStyle("Classic","Classic Style") root [2] ildStyle->cd(); root [3] gStyle->ls(); OBJ: TStyle Classic Classic Style : 0 at: 0x282a820 root [4] onceE->Draw() Info in : created default TCanvas with name c1 https://root.cern.ch/root/html/src/TStyle.cxx.html 292行目 フォントを変更する フォント番号 → https://root.cern.ch/doc/master/classTAttText.html root [1] onceE->Draw() Info in : created default TCanvas with name c1 root [2] int fontid=132 root [3] gStyle->SetStatFont(fontid); root [4] gStyle->SetLabelFont(fontid,"XYZ"); root [5] gStyle->SetLabelFont(fontid,""); root [6] gStyle->SetTitleFont(fontid,"XYZ"); root [7] gStyle->SetTitleFont(fontid,""); root [8] gStyle->SetTextFont(fontid); root [9] gStyle->SetLegendFont(fontid); root [10] c1->UseCurrentStyle();