26 void boundaries_plot()
28 TColor::CreateColorWheel();
30 TCanvas *
c1 =
new TCanvas(
"boundaries canvas");
35 TH2D *boundaries =
new TH2D(
"boundaries",
"The GlueX Detectors",
37 boundaries->SetStats(0);
38 boundaries->SetXTitle(
"Z (cm)");
39 boundaries->SetYTitle(
"R (cm)");
49 #include <TPolyLine.h>
62 void DrawPoly(
int N,
double *z,
double *r,
int color);
70 double Zhi = Zlo + 30.0;
72 double Rhi = Rlo + 1.5;
73 if (full) { Rlo=-1.5; Rhi=Rlo+3; }
75 TBox *box =
new TBox(Zlo, Rlo, Zhi, Rhi);
76 box->SetLineWidth(2.0);
77 if (fill_detectors) { box->SetFillColor(color); box->SetFillStyle(1001); }
78 else box->SetFillStyle(0);
79 box->SetLineColor(color);
82 TLatex *lab =
new TLatex(Zlo-5, 0,
"target");
83 if (full) lab->SetTextAlign(32);
else lab->SetTextAlign(31);
84 lab->SetTextSize(0.02);
85 lab->SetTextColor(color);
95 const int Npoints = 15;
96 double r_hi[] = {8.675, 8.675, 8.675, 7.759, 7.354, 4.353, 3.134,
97 2.290, 1.915, 5.593, 5.893, 6.907, 6.951, 6.951, 8.675};
99 for (Int_t i=0; i<Npoints; i++) r_lo[i] = -r_hi[i];
101 double z[] = { 0.0, 51.383, 51.726, 53.938, 54.914, 57.915, 59.134,
102 58.442, 58.290, 54.360, 54.238, 51.531, 51.488, 0.0, 0.0};
105 for(
int i=0; i<Npoints; i++)z[i] += 38.75;
107 TPolyLine *pol =
new TPolyLine(Npoints, z, r_hi);
108 pol->SetLineWidth(2.0);
109 if (fill_detectors) { pol->SetFillColor(color); pol->SetFillStyle(1001); }
110 else pol->SetFillStyle(0);
111 pol->SetLineColor(color);
114 TLatex *lab =
new TLatex(z[6]+(z[6]-z[0])*0.1, 0,
"start counter");
115 if (full) lab->SetTextAlign(12);
else lab->SetTextAlign(11);
116 lab->SetTextSize(0.02);
117 lab->SetTextColor(color);
121 pol =
new TPolyLine(Npoints, z, r_lo);
122 pol->SetLineWidth(2.0);
123 if (fill_detectors) { pol->SetFillColor(color); pol->SetFillStyle(1001); }
124 else pol->SetFillStyle(0);
125 pol->SetLineColor(color);
135 double Rlo = 2.0, Rhi=48.5;
137 double Zlo[7], Zhi[7];
151 for(
int sl=0; sl<4; sl++){
153 TBox *box_hi =
new TBox(Zlo[sl], Rlo, Zhi[sl], Rhi);
154 box_hi->SetLineWidth(2.0);
155 if (fill_detectors) { box_hi->SetFillColor(color); box_hi->SetFillStyle(1001); }
156 else box_hi->SetFillStyle(0);
157 box_hi->SetLineColor(color);
160 TLatex *lab_hi =
new TLatex((Zlo[sl]+Zhi[sl])/2.0+2.0, Rhi+1,
"FDC");
161 lab_hi->SetTextAlign(21);
162 lab_hi->SetTextSize(0.025);
163 lab_hi->SetTextColor(color);
167 TBox *box_lo =
new TBox(Zlo[sl], -Rlo, Zhi[sl], -Rhi);
168 box_lo->SetLineWidth(2.0);
169 if (fill_detectors) { box_lo->SetFillColor(color); box_lo->SetFillStyle(1001); }
170 else box_lo->SetFillStyle(0);
171 box_lo->SetLineColor(color);
182 double Zlo=17.0, Zhi=Zlo+150.0;
183 double Rlo[7], Rhi[7];
189 Rhi[1] =
sqrt(pow(21.8912,2.0) + pow(0.860106,2.0));
192 Rhi[2] =
sqrt(pow(28.5658,2.0) + pow(0.846871,2.0));
198 Rhi[4] =
sqrt(pow(41.9225,2.0) + pow(0.833676,2.0));
201 Rhi[5] =
sqrt(pow(48.0733,2.0) + pow(0.829899,2.0));
206 TBox *box_hi =
new TBox(Zlo, Rlo[0], Zhi, Rhi[6]);
207 box_hi->SetLineWidth(2.0);
208 if (fill_detectors) { box_hi->SetFillColor(color); box_hi->SetFillStyle(1001); }
209 else box_hi->SetFillStyle(0);
210 box_hi->SetLineColor(color);
213 TLatex *lab_hi =
new TLatex(Zlo+5, Rhi[6]-1,
"CDC");
214 lab_hi->SetTextAlign(13);
215 lab_hi->SetTextSize(0.03);
216 if (fill_detectors) lab_hi->SetTextColor(kWhite);
else lab_hi->SetTextColor(color);
220 TBox *box_lo =
new TBox(Zlo, -Rlo[0], Zhi, -Rhi[6]);
221 box_lo->SetLineWidth(2.0);
222 if (fill_detectors) { box_lo->SetFillColor(color); box_lo->SetFillStyle(1001); }
223 else box_lo->SetFillStyle(0);
224 box_lo->SetLineColor(color);
227 TLatex *lab_lo =
new TLatex(Zlo+5, -Rlo[0]-1,
"CDC");
228 lab_lo->SetTextAlign(13);
229 lab_lo->SetTextSize(0.03);
230 if (fill_detectors) lab_lo->SetTextColor(kWhite);
else lab_lo->SetTextColor(color);
241 double Zhi = Zlo + 2.0*2.54;
243 double Rhi = 252.0/2.0;
246 if(Rhi>clip_tof)Rhi = clip_tof;
248 TBox *box_hi =
new TBox(Zlo, Rlo, Zhi, Rhi);
249 box_hi->SetLineWidth(2.0);
250 if (fill_detectors) { box_hi->SetFillColor(color); box_hi->SetFillStyle(1001); }
251 else box_hi->SetFillStyle(0);
252 box_hi->SetLineColor(color);
255 TLatex *lab_hi =
new TLatex(Zlo-5, Rhi-1,
"TOF");
256 lab_hi->SetTextAlign(31);
257 lab_hi->SetTextSize(0.03);
258 lab_hi->SetTextAngle(90.0);
259 lab_hi->SetTextColor(color);
263 TBox *box_lo =
new TBox(Zlo, -Rlo, Zhi, -Rhi);
264 box_lo->SetLineWidth(2.0);
265 box_lo->SetLineColor(color);
266 if (fill_detectors) { box_lo->SetFillColor(color); box_lo->SetFillStyle(1001);}
267 else box_lo->SetFillStyle(0);
278 double Zhi = Zlo + 390.0;
282 TBox *box_hi =
new TBox(Zlo, Rlo, Zhi, Rhi);
283 box_hi->SetLineWidth(2.0);
284 if (fill_detectors) { box_hi->SetFillColor(color); box_hi->SetFillStyle(1001); }
285 else box_hi->SetFillStyle(0);
286 box_hi->SetLineColor(color);
289 TLatex *lab_hi =
new TLatex(Zlo+5, Rhi-1,
"BCAL");
290 lab_hi->SetTextAlign(13);
291 lab_hi->SetTextSize(0.03);
292 if (fill_detectors) lab_hi->SetTextColor(kWhite);
else lab_hi->SetTextColor(color);
296 TBox *box_lo =
new TBox(Zlo, -Rlo, Zhi, -Rhi);
297 box_lo->SetLineWidth(2.0);
298 if (fill_detectors) { box_lo->SetFillColor(color); box_lo->SetFillStyle(1001); }
299 else box_lo->SetFillStyle(0);
300 box_lo->SetLineColor(color);
303 TLatex *lab_lo =
new TLatex(Zlo+5, -Rlo-1,
"BCAL");
304 lab_lo->SetTextAlign(13);
305 lab_lo->SetTextSize(0.03);
306 if (fill_detectors) lab_lo->SetTextColor(kWhite);
else lab_lo->SetTextColor(color);
317 double Zhi = Zlo + 45.;
321 TBox *box_hi =
new TBox(Zlo, Rlo, Zhi, Rhi);
322 box_hi->SetLineWidth(2.0);
323 if (fill_detectors) { box_hi->SetFillColor(color); box_hi->SetFillStyle(1001); }
324 else box_hi->SetFillStyle(0);
325 box_hi->SetLineColor(color);
328 TLatex *lab_hi =
new TLatex(Zlo, Rhi-1,
"FCAL");
329 lab_hi->SetTextAlign(13);
330 lab_hi->SetTextSize(0.025);
331 if (fill_detectors) lab_hi->SetTextColor(kWhite);
else lab_hi->SetTextColor(color);
335 TBox *box_lo =
new TBox(Zlo, -Rlo, Zhi, -Rhi);
336 box_lo->SetLineWidth(2.0);
337 box_lo->SetLineColor(color);
338 if (fill_detectors) { box_lo->SetFillColor(color); box_lo->SetFillStyle(1001); }
339 else box_lo->SetFillStyle(0);
347 void DrawMagnet(
int yoke_color=Magnet_color,
int coil_color=Magnet_color)
352 z[N] = 0.000; r[N++] = 89.540;
353 z[N] = 0.000; r[N++] = 147.320;
354 z[N] = 53.820; r[N++] = 147.320;
355 z[N] = 53.820; r[N++] = 150.500;
356 z[N] = 56.200; r[N++] = 150.500;
357 z[N] = 56.200; r[N++] = 154.940;
358 z[N] = 60.960; r[N++] = 154.940;
359 z[N] = 60.960; r[N++] = 147.320;
360 z[N] = 187.800; r[N++] = 147.320;
361 z[N] = 187.800; r[N++] = 150.500;
362 z[N] = 190.180; r[N++] = 150.500;
363 z[N] = 190.180; r[N++] = 154.940;
364 z[N] = 194.950; r[N++] = 154.940;
365 z[N] = 194.950; r[N++] = 147.320;
366 z[N] = 264.000; r[N++] = 147.320;
367 z[N] = 264.000; r[N++] = 150.500;
368 z[N] = 266.380; r[N++] = 150.500;
369 z[N] = 266.380; r[N++] = 154.940;
370 z[N] = 271.150; r[N++] = 154.940;
371 z[N] = 271.150; r[N++] = 147.320;
372 z[N] = 340.200; r[N++] = 147.320;
373 z[N] = 340.200; r[N++] = 150.500;
374 z[N] = 342.580; r[N++] = 150.500;
375 z[N] = 342.580; r[N++] = 154.940;
376 z[N] = 347.350; r[N++] = 154.940;
377 z[N] = 347.350; r[N++] = 147.320;
378 z[N] = 354.970; r[N++] = 147.320;
379 z[N] = 354.970; r[N++] = 92.710;
380 z[N] = 428.630; r[N++] = 92.710;
381 z[N] = 428.630; r[N++] = 187.960;
382 z[N] = -50.800; r[N++] = 187.960;
383 z[N] = -50.800; r[N++] = 89.540;
384 z[N] = 0.000; r[N++] = 89.540;
389 z[N] = 76.200; r[N++] = 147.320;
390 z[N] = 76.200; r[N++] = 92.710;
391 z[N] = 84.460; r[N++] = 92.710;
392 z[N] = 84.460; r[N++] = 147.320;
393 z[N] = 76.200; r[N++] = 147.320;
397 z[N] = 202.570; r[N++] = 147.320;
398 z[N] = 202.570; r[N++] = 92.710;
399 z[N] = 210.190; r[N++] = 92.710;
400 z[N] = 210.190; r[N++] = 147.320;
401 z[N] = 202.570; r[N++] = 147.320;
407 z[N] = 92.853; r[N++] = 101.881;
408 z[N] = 104.548; r[N++] = 101.881;
409 z[N] = 104.548; r[N++] = 116.952;
410 z[N] = 92.853; r[N++] = 116.952;
411 z[N] = 92.853; r[N++] = 101.881;
416 z[N] = 104.548; r[N++] = 101.881;
417 z[N] = 116.511; r[N++] = 101.881;
418 z[N] = 116.511; r[N++] = 116.320;
419 z[N] = 104.548; r[N++] = 116.320;
420 z[N] = 104.548; r[N++] = 101.881;
425 z[N] = 124.961; r[N++] = 101.881;
426 z[N] = 132.679; r[N++] = 101.881;
427 z[N] = 132.679; r[N++] = 111.263;
428 z[N] = 124.961; r[N++] = 111.263;
429 z[N] = 124.961; r[N++] = 101.881;
434 z[N] = 140.845; r[N++] = 101.881;
435 z[N] = 148.563; r[N++] = 101.881;
436 z[N] = 148.563; r[N++] = 108.607;
437 z[N] = 140.845; r[N++] = 108.607;
438 z[N] = 140.845; r[N++] = 101.881;
443 z[N] = 156.729; r[N++] = 101.881;
444 z[N] = 168.423; r[N++] = 101.881;
445 z[N] = 168.423; r[N++] = 113.159;
446 z[N] = 156.729; r[N++] = 113.159;
447 z[N] = 156.729; r[N++] = 101.881;
452 z[N] = 172.416; r[N++] = 101.881;
453 z[N] = 180.134; r[N++] = 101.881;
454 z[N] = 180.134; r[N++] = 118.849;
455 z[N] = 172.416; r[N++] = 118.849;
456 z[N] = 172.416; r[N++] = 101.881;
461 z[N] = 180.134; r[N++] = 101.881;
462 z[N] = 188.087; r[N++] = 101.881;
463 z[N] = 188.087; r[N++] = 120.113;
464 z[N] = 180.134; r[N++] = 120.113;
465 z[N] = 180.134; r[N++] = 101.881;
470 z[N] = 7.256; r[N++] = 101.881;
471 z[N] = 18.950; r[N++] = 101.881;
472 z[N] = 18.950; r[N++] = 118.217;
473 z[N] = 7.256; r[N++] = 118.217;
474 z[N] = 7.256; r[N++] = 101.881;
479 z[N] = 22.124; r[N++] = 101.881;
480 z[N] = 29.842; r[N++] = 101.881;
481 z[N] = 29.842; r[N++] = 112.527;
482 z[N] = 22.124; r[N++] = 112.527;
483 z[N] = 22.124; r[N++] = 101.881;
488 z[N] = 29.842; r[N++] = 101.881;
489 z[N] = 41.772; r[N++] = 101.881;
490 z[N] = 41.772; r[N++] = 112.527;
491 z[N] = 29.842; r[N++] = 112.527;
492 z[N] = 29.842; r[N++] = 101.881;
497 z[N] = 42.007; r[N++] = 101.881;
498 z[N] = 53.702; r[N++] = 101.881;
499 z[N] = 53.702; r[N++] = 115.688;
500 z[N] = 42.007; r[N++] = 115.688;
501 z[N] = 42.007; r[N++] = 101.881;
506 z[N] = 217.441; r[N++] = 101.881;
507 z[N] = 229.135; r[N++] = 101.881;
508 z[N] = 229.135; r[N++] = 118.217;
509 z[N] = 217.441; r[N++] = 118.217;
510 z[N] = 217.441; r[N++] = 101.881;
515 z[N] = 232.309; r[N++] = 101.881;
516 z[N] = 244.003; r[N++] = 101.881;
517 z[N] = 244.003; r[N++] = 112.527;
518 z[N] = 232.309; r[N++] = 112.527;
519 z[N] = 232.309; r[N++] = 101.881;
524 z[N] = 244.003; r[N++] = 101.881;
525 z[N] = 251.957; r[N++] = 101.881;
526 z[N] = 251.957; r[N++] = 112.527;
527 z[N] = 244.003; r[N++] = 112.527;
528 z[N] = 244.003; r[N++] = 101.881;
533 z[N] = 251.957; r[N++] = 101.881;
534 z[N] = 263.887; r[N++] = 101.881;
535 z[N] = 263.887; r[N++] = 108.734;
536 z[N] = 251.957; r[N++] = 108.734;
537 z[N] = 251.957; r[N++] = 101.881;
542 z[N] = 293.929; r[N++] = 101.881;
543 z[N] = 305.623; r[N++] = 101.881;
544 z[N] = 305.623; r[N++] = 113.159;
545 z[N] = 293.929; r[N++] = 113.159;
546 z[N] = 293.929; r[N++] = 101.881;
551 z[N] = 310.709; r[N++] = 101.881;
552 z[N] = 340.299; r[N++] = 101.881;
553 z[N] = 340.299; r[N++] = 128.331;
554 z[N] = 310.709; r[N++] = 128.331;
555 z[N] = 310.709; r[N++] = 101.881;
559 TLatex *lab_hi =
new TLatex(-48.0, 180.0,
"solenoid");
560 lab_hi->SetTextAlign(12);
561 lab_hi->SetTextSize(0.03);
562 lab_hi->SetTextColor(coil_color);
570 void DrawPoly(
int N,
double *z,
double *r,
int color)
572 TPolyLine *pl =
new TPolyLine(N, z, r);
573 pl->SetLineColor(color);
574 if (fill_detectors) { pl->SetFillColor(color); pl->SetFillStyle(1001); }
579 for(
int i=0; i<N; i++)r[i] = -r[i];
580 pl =
new TPolyLine(N, z, r);
581 pl->SetLineColor(color);
582 if (fill_detectors) { pl->SetFillColor(color); pl->SetFillStyle(1001); }
591 void DrawGlueXBoundaries(Int_t full_detector=
false, Int_t fill_in=
false, Double_t clip_tof=1000.0, Int_t color=-1)
593 full = full_detector;
594 fill_detectors = fill_in;
void DrawStartCounterBoundaries(int color=start_counter_color)
void DrawTOFBoundaries(int color=TOF_color, double clip_tof=1000.0)
void DrawFCALBoundaries(int color=FCAL_color)
void DrawPoly(int N, double *z, double *r, int color)
void DrawFDCBoundaries(int color=FDC_color)
Int_t start_counter_color
void DrawBCALBoundaries(int color=BCAL_color)
void DrawGlueXBoundaries(Int_t full_detector=false, Int_t fill_in=false, Double_t clip_tof=1000.0, Int_t color=-1)
void DrawCDCBoundaries(int color=CDC_color)
void DrawTargetBoundaries(int color=target_color)
void DrawMagnet(int yoke_color=Magnet_color, int coil_color=Magnet_color)