00001 #include <iostream>
00002
00003 #include "TPolyLine.h"
00004 #include "TArc.h"
00005 #include "TMath.h"
00006
00007 #include "MessageService/MsgService.h"
00008 #include "Conventions/Munits.h"
00009
00010 #include "AtNuUtils/FarLayout.h"
00011
00012 using namespace std;
00013
00014 static double TPE = TMath::Sqrt((2.-TMath::Sqrt(2.))/
00015 (2.+TMath::Sqrt(2.)));
00016
00017 CVSID("$Id: FarLayout.cxx,v 1.3 2007/01/15 19:52:00 rhatcher Exp $");
00018
00019 FarLayout::FarLayout() {
00020 SteelLineColor=4;
00021 SteelLineStyle=1;
00022 SteelLineWidth=2;
00023
00024 FiducialLineColor=2;
00025 FiducialLineStyle=2;
00026 FiducialLineWidth=2;
00027
00028 ShieldLineColor=3;
00029 ShieldLineStyle=1;
00030 ShieldLineWidth=2;
00031 }
00032
00033 FarLayout::~FarLayout() {
00034 }
00035
00036 void FarLayout::Draw(Option_t *opt) {
00037 MSG("FarLayout",Msg::kDebug) << "FarLayout::Draw('" << opt << "')" << endl;
00038 this->DrawSteel(opt);
00039 this->DrawFiducial(opt);
00040 this->DrawShield(opt);
00041 }
00042
00043 void FarLayout::DrawSteel(Option_t *opt) {
00044 MSG("FarLayout",Msg::kDebug) << "FarLayout::DrawSteel('" << opt << "')" << endl;
00045
00046 TPolyLine *s1 = this->SteelOutline();
00047 s1->SetLineColor(this->SteelLineColor);
00048 s1->SetLineStyle(this->SteelLineStyle);
00049 s1->SetLineWidth(this->SteelLineWidth);
00050 s1->Draw();
00051
00052 TArc *s2 = this->SteelCoilHole();
00053 s2->SetLineColor(this->SteelLineColor);
00054 s2->SetLineStyle(this->SteelLineStyle);
00055 s2->SetLineWidth(this->SteelLineWidth);
00056 s2->Draw();
00057 }
00058
00059 void FarLayout::DrawFiducial(Option_t *opt) {
00060 MSG("FarLayout",Msg::kDebug) << "FarLayout::DrawFiducial('" << opt << "')" << endl;
00061 TPolyLine *fidol = this->FiducialOutline();
00062 fidol->SetLineColor(FiducialLineColor);
00063 fidol->SetLineStyle(FiducialLineStyle);
00064 fidol->SetLineWidth(FiducialLineWidth);
00065 fidol->Draw();
00066
00067 TArc *fidch = this->FiducialCoilHole();
00068 fidch->SetLineColor(FiducialLineColor);
00069 fidch->SetLineStyle(FiducialLineStyle);
00070 fidch->SetLineWidth(FiducialLineWidth);
00071 fidch->Draw();
00072 }
00073
00074 void FarLayout::DrawShield(Option_t *opt) {
00075 MSG("FarLayout",Msg::kDebug) << "FarLayout::DrawShield('" << opt << "')" << endl;
00076 TPolyLine *shield = this->ShieldTop();
00077 shield->SetLineColor(ShieldLineColor);
00078 shield->SetLineStyle(ShieldLineStyle);
00079 shield->SetLineWidth(ShieldLineWidth);
00080 shield->Draw();
00081
00082 shield = this->ShieldEastWall1();
00083 shield->SetLineColor(ShieldLineColor);
00084 shield->SetLineStyle(ShieldLineStyle);
00085 shield->SetLineWidth(ShieldLineWidth);
00086 shield->Draw();
00087
00088 shield = this->ShieldEastWall2();
00089 shield->SetLineColor(ShieldLineColor);
00090 shield->SetLineStyle(ShieldLineStyle);
00091 shield->SetLineWidth(ShieldLineWidth);
00092 shield->Draw();
00093
00094 shield = this->ShieldWestWall1();
00095 shield->SetLineColor(ShieldLineColor);
00096 shield->SetLineStyle(ShieldLineStyle);
00097 shield->SetLineWidth(ShieldLineWidth);
00098 shield->Draw();
00099
00100 shield = this->ShieldWestWall2();
00101 shield->SetLineColor(ShieldLineColor);
00102 shield->SetLineStyle(ShieldLineStyle);
00103 shield->SetLineWidth(ShieldLineWidth);
00104 shield->Draw();
00105 }
00106
00107 TPolyLine* FarLayout::SteelOutline() {
00108 static TPolyLine* so = new TPolyLine(33,"");
00109
00110 so->SetPoint( 0, 421.8893*Munits::cm,-142.8867*Munits::cm);
00111 so->SetPoint( 1, 421.8893*Munits::cm,-138.3342*Munits::cm);
00112 so->SetPoint( 2, 400.1614*Munits::cm,-115.9855*Munits::cm);
00113
00114 so->SetPoint( 3, 400.1614*Munits::cm, 87.6358*Munits::cm);
00115 so->SetPoint( 4, 406.9902*Munits::cm, 94.0507*Munits::cm);
00116 so->SetPoint( 5, 429.1319*Munits::cm, 101.5003*Munits::cm);
00117 so->SetPoint( 6, 447.1350*Munits::cm, 101.5003*Munits::cm);
00118 so->SetPoint( 7, 454.7915*Munits::cm, 94.2577*Munits::cm);
00119 so->SetPoint( 8, 457.6886*Munits::cm, 94.2577*Munits::cm);
00120 so->SetPoint( 9, 457.6886*Munits::cm, 109.3637*Munits::cm);
00121 so->SetPoint(10, 143.7724*Munits::cm, 423.2799*Munits::cm);
00122 so->SetPoint(11, 139.4268*Munits::cm, 423.2799*Munits::cm);
00123 so->SetPoint(12, 117.2850*Munits::cm, 401.1382*Munits::cm);
00124 so->SetPoint(13,-116.9622*Munits::cm, 401.1382*Munits::cm);
00125 so->SetPoint(14,-139.1040*Munits::cm, 423.2799*Munits::cm);
00126 so->SetPoint(15,-143.4496*Munits::cm, 423.2799*Munits::cm);
00127 so->SetPoint(16,-457.3658*Munits::cm, 109.3637*Munits::cm);
00128 so->SetPoint(17,-457.3658*Munits::cm, 94.2577*Munits::cm);
00129 so->SetPoint(18,-454.4687*Munits::cm, 94.2577*Munits::cm);
00130 so->SetPoint(19,-439.9834*Munits::cm, 101.9141*Munits::cm);
00131 so->SetPoint(20,-429.8438*Munits::cm, 101.9141*Munits::cm);
00132 so->SetPoint(21,-406.6674*Munits::cm, 94.2577*Munits::cm);
00133 so->SetPoint(22,-399.8386*Munits::cm, 84.7388*Munits::cm);
00134 so->SetPoint(23,-399.8386*Munits::cm,-115.9855*Munits::cm);
00135 so->SetPoint(24,-421.5665*Munits::cm,-137.7134*Munits::cm);
00136 so->SetPoint(25,-421.5665*Munits::cm,-142.8867*Munits::cm);
00137 so->SetPoint(26,-143.4496*Munits::cm,-421.0036*Munits::cm);
00138 so->SetPoint(27,-139.1040*Munits::cm,-421.0036*Munits::cm);
00139 so->SetPoint(28,-116.9622*Munits::cm,-398.8619*Munits::cm);
00140 so->SetPoint(29, 116.8712*Munits::cm,-398.8619*Munits::cm);
00141 so->SetPoint(30, 139.4268*Munits::cm,-421.0036*Munits::cm);
00142 so->SetPoint(31, 143.7724*Munits::cm,-421.0036*Munits::cm);
00143
00144 so->SetPoint(32, 421.8893*Munits::cm,-142.8867*Munits::cm);
00145
00146 return so;
00147 }
00148
00149 TArc* FarLayout::SteelCoilHole() {
00150 static TArc* sch = new TArc(0,0,0.15);
00151
00152 return sch;
00153 }
00154
00155 TPolyLine* FarLayout::FiducialOutline(double FidUV) {
00156 static TPolyLine* so = new TPolyLine(9,"");
00157
00158 double A = FidUV;
00159 double B = FidUV * TPE;
00160
00161 so->SetPoint(0, -B*Munits::cm, -A*Munits::cm);
00162 so->SetPoint(1, B*Munits::cm, -A*Munits::cm);
00163 so->SetPoint(2, A*Munits::cm, -B*Munits::cm);
00164 so->SetPoint(3, A*Munits::cm, B*Munits::cm);
00165 so->SetPoint(4, B*Munits::cm, A*Munits::cm);
00166 so->SetPoint(5, -B*Munits::cm, A*Munits::cm);
00167 so->SetPoint(6, -A*Munits::cm, B*Munits::cm);
00168 so->SetPoint(7, -A*Munits::cm, -B*Munits::cm);
00169 so->SetPoint(8, -B*Munits::cm, -A*Munits::cm);
00170
00171 return so;
00172 }
00173
00174 TArc* FarLayout::FiducialCoilHole() {
00175 static TArc* sch = new TArc(0,0,0.3);
00176
00177 return sch;
00178 }
00179
00180 TPolyLine* FarLayout::ShieldTop() {
00181 static TPolyLine* so = new TPolyLine(6,"");
00182
00183 so->SetPoint(0,-600.*Munits::cm, 300.*Munits::cm);
00184 so->SetPoint(1,-325.*Munits::cm, 300.*Munits::cm);
00185 so->SetPoint(2,-200.*Munits::cm, 450.*Munits::cm);
00186 so->SetPoint(3, 200.*Munits::cm, 450.*Munits::cm);
00187 so->SetPoint(4, 325.*Munits::cm, 300.*Munits::cm);
00188 so->SetPoint(5, 600.*Munits::cm, 300.*Munits::cm);
00189 return so;
00190 }
00191
00192 TPolyLine* FarLayout::ShieldEastWall1() {
00193 static TPolyLine* so = new TPolyLine(3,"");
00194
00195 so->SetPoint(0, 680.*Munits::cm, 140.*Munits::cm);
00196 so->SetPoint(1, 680.*Munits::cm, 380.*Munits::cm);
00197 so->SetPoint(2, 625.*Munits::cm, 440.*Munits::cm);
00198
00199 return so;
00200 }
00201
00202 TPolyLine* FarLayout::ShieldEastWall2() {
00203 static TPolyLine* so = new TPolyLine(2,"");
00204
00205 so->SetPoint(0, 425.*Munits::cm,-120.*Munits::cm);
00206 so->SetPoint(1, 425.*Munits::cm, 30.*Munits::cm);
00207
00208 return so;
00209 }
00210
00211 TPolyLine* FarLayout::ShieldWestWall1() {
00212 static TPolyLine* so = new TPolyLine(3,"");
00213
00214 so->SetPoint(0,-680.*Munits::cm, 140.*Munits::cm);
00215 so->SetPoint(1,-680.*Munits::cm, 380.*Munits::cm);
00216 so->SetPoint(2,-625.*Munits::cm, 440.*Munits::cm);
00217
00218 return so;
00219 }
00220
00221 TPolyLine* FarLayout::ShieldWestWall2() {
00222 static TPolyLine* so = new TPolyLine(2,"");
00223
00224 so->SetPoint(0,-425.*Munits::cm,-120.*Munits::cm);
00225 so->SetPoint(1,-425.*Munits::cm, 30.*Munits::cm);
00226
00227 return so;
00228 }