#include "TROOT.h" #include "TStyle.h" #include "TCanvas.h" #include "TView.h" #include "TPolyLine3D.h" #include "TLatex.h" void rec_solid_angle(){ gROOT->SetStyle("Plain"); gStyle->SetTextFont(132); TCanvas *c1 = new TCanvas("c1","c1",400,400); c1->SetTheta(17.); c1->SetPhi(35.); TView *view = TView::CreateView(1); Double_t view_size = 0.7; view->SetRange(view_size*0.7,-view_size*1.0,-view_size*0.9, view_size*2.7, view_size*1.0, view_size*1.1); const Int_t nPolyLine3D = 20; TPolyLine3D *guide[nPolyLine3D]; for (Int_t i = 0; iSetNextPoint(r*cos(theta),r*sin(theta),0); guide[8]->SetNextPoint(r*cos(phi),0,r*sin(phi)); } guide[1]->SetNextPoint(2,x0,y0); guide[1]->SetNextPoint(2,x0,-y0); guide[1]->SetNextPoint(2,-x0,-y0); guide[1]->SetNextPoint(2,-x0,y0); guide[1]->SetNextPoint(2,x0,y0); guide[2]->SetNextPoint(2,0,0); guide[2]->SetNextPoint(0,0,0); guide[5]->SetNextPoint(0,0,0); guide[5]->SetNextPoint(2,-x0,0); guide[5]->SetNextPoint(2,x0,0); guide[5]->SetNextPoint(0,0,0); guide[6]->SetNextPoint(0,0,0); guide[6]->SetNextPoint(2,0,-y0); guide[6]->SetNextPoint(2,0,y0); guide[6]->SetNextPoint(0,0,0); guide[5]->SetLineStyle(2); guide[6]->SetLineStyle(2); Double_t virlen = 0.15*x0; guide[9]->SetNextPoint(2,virlen,0); guide[9]->SetNextPoint(2-virlen,virlen,0); guide[9]->SetNextPoint(2-virlen,0,0); guide[9]->SetNextPoint(2-virlen,0,-virlen); guide[9]->SetNextPoint(2,0,-virlen); for (Int_t i = 0; iDraw(); } TLatex Tl; Tl.DrawLatex(-0.02,-0.12,"#it{#alpha}"); Tl.DrawLatex(-0.12,-0.02,"#it{#beta}"); Tl.DrawLatex(-0.87,-0.30,"O"); Tl.DrawLatex(0.57,0.06,"C"); }