//----------------------------------------------------------------- // Simplified version of plan view of Concept 1 for BDX // Script based on David's DrawGlueXBoundaries script // //----------------------------------------------------------------- void Draw_C1_plan() { char string[132]; // Double_t zmin = -600; Double_t zmin = 1000; Double_t zmax=3200; Double_t xmin= -500; Double_t xmax=1000; Double_t fudge=0.95; Double_t scale = fudge*(zmax-zmin)/(xmax-xmin); printf ("Scale factor =%d\n",scale); Double_t xgrade=762; // 25' grade above beamline Double_t dz=914; Double_t dz1=548; Double_t dz2=564; Double_t dr=213/2; Double_t dc=91; Double_t dmuon=1000; /// 10 m of Fe to range out muons from dump Double_t xmuon=136; // half width of Fe dump Double_t fe_density = 7.8; // take Fe as cr shield Double_t dirt_density = 1.7; // take dirt for overburden Double_t concrete_density = 2.7; // concrete bunker // set X=0 cm at center of bdx. (In this case "z" labels refer to horizontal axis); Double_t dwall=30; Double_t dspace=30; Double_t zdump=600; Double_t Ldump=150; Double_t xdump=30; Double_t Lmuon_fe = dmuon - dz1*concrete_density/fe_density; // Double_t Lmuon_weight = Lmuon_fe*(2*xmuon)*(2*xmuon)*fe_density/1e6; printf ("Assume: Muon dump = %.1f cm Fe, Need = %.1f cm additional\n",dmuon,Lmuon_fe); Double_t zmuon = dz + dz1; Double_t zbdx=zmuon + Lmuon_fe + dc; Double_t Lbdx=250; Double_t xbdx=165./2; // assume width is greater than height Double_t ybdx=70./2; Double_t zbldg = zbdx - Lbdx/3 -dwall; Double_t Lbldg = 900; Double_t Dx1bldg = -xbdx - dc - dwall; Double_t Dx2bldg = 900 + Dx1bldg; Double_t Dy2bldgU = xgrade; Double_t Dy1bldgU = -ybdx - dc - dwall; Double_t zshaft = zbldg+dwall; Double_t Lshaft = 450; Double_t Dx2shaft = Dx2bldg - dwall; Double_t Dx1shaft = Dx2shaft - 300; Double_t Dy2shaft = xgrade; Double_t Dy1shaft = Dy1bldgU + dwall; Double_t Dy3shaft = Dy1shaft + 305; Double_t zstairs= zbldg+ Lbldg - dwall; Double_t Lstairs= 380; Double_t Dx2stairs= Dx2bldg - dwall; Double_t Dx1stairs = Dx2bldg - dwall - 688; Double_t zstairs1 = zstairs - Lstairs; Double_t Lstairs1 = Lstairs/2 - dwall/2; Double_t Dx1stairs1 = Dx1stairs + 130; Double_t Dx2stairs1 = Dx1stairs1 + 417; Int_t nstairs = 12; Double_t Dstep = (Dx2stairs1 - Dx1stairs1)/nstairs; Double_t zstairs2 = zstairs - Lstairs + Lstairs1 + dwall; Double_t Lstairs2 = Lstairs/2 - dwall/2; Double_t Dx1stairs2 = Dx1stairs + 130; Double_t Dx2stairs2 = Dx1stairs2 + 417; TCanvas *c1 = new TCanvas("c1","Draw_C1_plan",200,10,500*scale,500); TH2D *boundaries = new TH2D("boundaries", "C1 plan for BDX",zmax-zmin, zmin, zmax, xmax-xmin, xmin, xmax); boundaries->SetStats(0); boundaries->SetXTitle("Z (cm)"); boundaries->SetYTitle("X (cm)"); boundaries->Draw(); sprintf (string,"Dirt density = %.1f g/cm2\n",dirt_density); printf("string=%s",string); t1 = new TLatex(0.12,0.81,string); t1->SetNDC(); t1->SetTextSize(0.03); t1->Draw(); sprintf (string,"Concrete density = %.1f g/cm2\n",concrete_density); printf("string=%s",string); t1 = new TLatex(0.12,0.77,string); t1->SetNDC(); t1->SetTextSize(0.03); t1->Draw(); sprintf (string,"BDX dimensions = %.1f x %.1f x %.1f cm^{3}\n",2*xbdx,2*ybdx,Lbdx); printf("string=%s",string); t1 = new TLatex(0.12,0.73,string); t1->SetNDC(); t1->SetTextSize(0.03); t1->Draw(); sprintf (string,"Shaft = %.1f x %.1f x %.1f cm^{3}\n",Dx2shaft-Dx1shaft,Lshaft,Dy2shaft-Dy1shaft); printf("string=%s",string); t1 = new TLatex(0.12,0.69,string); t1->SetNDC(); t1->SetTextSize(0.03); t1->Draw(); TLine *beamline = new TLine (zmin,0,zmax,0); beamline->SetLineStyle(4); beamline->Draw(); sprintf (string,"beam line\n"); printf("string=%s",string); t1 = new TLatex(-500,30,string); t1->SetTextSize(0.03); t1->Draw(); // BDX walls const int Npoints=13; float xc[]={Dx1bldg,Dx1bldg+dwall,Dx1bldg+dwall,Dx2bldg-dwall,Dx2bldg-dwall,Dx1bldg+dwall,Dx1bldg+dwall,Dx1bldg,Dx1bldg,Dx2bldg,Dx2bldg,Dx1bldg,Dx1bldg}; float zc[]={zbldg+Lbldg/2,zbldg+Lbldg/2,zbldg+Lbldg-dwall,zbldg+Lbldg-dwall,zbldg+dwall,zbldg+dwall,zbldg+Lbldg/2,zbldg+Lbldg/2,zbldg,zbldg,zbldg+Lbldg,zbldg+Lbldg,zbldg+Lbldg/2}; TPolyLine *bdxwall = new TPolyLine(Npoints, zc, xc); bdxwall->SetLineWidth(2.0); bdxwall->SetLineColor(kBlack); bdxwall->Draw("l"); bdxwall->SetFillStyle(3012); bdxwall->SetFillColor(kBlack); bdxwall->Draw("f"); // BDX experiment const int Npoints=6; float xc[]={0,xbdx,xbdx,-xbdx,-xbdx,0}; float zc[]={zbdx,zbdx,zbdx+Lbdx,zbdx+Lbdx,zbdx,zbdx}; TPolyLine *bdx = new TPolyLine(Npoints, zc, xc); bdx->SetLineWidth(2.0); bdx->SetLineColor(kBlack); bdx->Draw("l"); bdx->SetFillColor(390); bdx->Draw("f"); // Vertical Shaft const int Npoints=5; float xc[]={Dx1shaft,Dx1shaft,Dx2shaft,Dx2shaft,Dx1shaft}; float zc[]={zshaft,zshaft+Lshaft,zshaft+Lshaft,zshaft,zshaft}; TPolyLine *bdx = new TPolyLine(Npoints, zc, xc); bdx->SetLineWidth(2.0); bdx->SetLineColor(kBlack); bdx->Draw("l"); bdx->SetFillColor(422); bdx->Draw("f"); // Stair area const int Npoints=5; float xc[]={Dx1stairs,Dx1stairs,Dx2stairs,Dx2stairs,Dx1stairs}; float zc[]={zstairs,zstairs-Lstairs,zstairs-Lstairs,zstairs,zstairs}; TPolyLine *bdx = new TPolyLine(Npoints, zc, xc); bdx->SetLineWidth(2.0); bdx->SetLineColor(kBlack); bdx->Draw("l"); // bdx->SetFillColor(422); // bdx->Draw("f"); // Left stairs const int Npoints=5; float xc[]={Dx1stairs1,Dx1stairs1,Dx2stairs1,Dx2stairs1,Dx1stairs1}; float zc[]={zstairs1,zstairs1+Lstairs1,zstairs1+Lstairs1,zstairs1,zstairs1}; TPolyLine *bdx = new TPolyLine(Npoints, zc, xc); bdx->SetLineWidth(2.0); bdx->SetLineColor(kBlack); bdx->Draw("l"); // bdx->SetFillColor(422); // bdx->Draw("f"); // draw steps for (int jj=0; jj Draw(); } // Right stairs const int Npoints=5; float xc[]={Dx1stairs2,Dx1stairs2,Dx2stairs2,Dx2stairs2,Dx1stairs2}; float zc[]={zstairs2,zstairs2+Lstairs2,zstairs2+Lstairs2,zstairs2,zstairs2}; TPolyLine *bdx = new TPolyLine(Npoints, zc, xc); bdx->SetLineWidth(2.0); bdx->SetLineColor(kBlack); bdx->Draw("l"); // bdx->SetFillColor(422); // bdx->Draw("f"); // draw steps for (int jj=0; jj Draw(); } /*TMarker *MarkBeam = new TMarker(0,0,4); MarkBeam->SetMarkerColor(1); MarkBeam->SetMarkerSize(1); MarkBeam->Draw(); TMarker *MarkBeam = new TMarker(0,0,5); MarkBeam->SetMarkerColor(1); MarkBeam->SetMarkerSize(1); MarkBeam->Draw();*/ sprintf (string,"Draw_C1_plan.pdf"); c1->SaveAs(string); sprintf (string,"Draw_C1_plan.png"); c1->SaveAs(string); }