11 #include <top/dbobjects/TOPGeoQBB.h>
23 std::vector<std::pair<double, double> > TOPGeoQBB::getForwardContour()
const
25 typedef std::pair<double, double>
Pair;
26 std::vector<Pair> contour;
28 double x1 = getWidth() / 2;
29 double x2 = x1 - m_sideRails.getThickness();
30 double x3 = getWidth() / 6;
31 double y1 = m_outerPanel.getY() + m_outerPanel.getMaxThickness();
32 double y2 = m_outerPanel.getY() + m_outerPanel.getMinThickness();
33 double y3 = y2 - m_sideRails.getHeight();
34 double y4 = m_innerPanel.getY() - m_innerPanel.getMaxThickness();
35 contour.push_back(
Pair(-x1, y2));
36 contour.push_back(
Pair(-x3, y1));
37 contour.push_back(
Pair(x3, y1));
38 contour.push_back(
Pair(x1, y2));
39 contour.push_back(
Pair(x1, y3));
40 contour.push_back(
Pair(x2, y4));
41 contour.push_back(
Pair(-x2, y4));
42 contour.push_back(
Pair(-x1, y3));
47 void TOPGeoQBB::printForwardContour()
const
49 auto contour = getForwardContour();
50 cout <<
"Forward contour [" << s_unitName <<
"]:" << endl;
51 for (
auto& xy : contour) cout << xy.first <<
" " << xy.second << endl;
56 std::vector<std::pair<double, double> > TOPGeoQBB::getInnerPanelContour()
const
58 typedef std::pair<double, double>
Pair;
59 std::vector<Pair> contour;
61 double x1 = getPanelWidth() / 2;
62 double y1 = m_innerPanel.getY();
63 double y2 = y1 - m_innerPanel.getMaxThickness();
64 contour.push_back(
Pair(-x1, y1));
65 contour.push_back(
Pair(x1, y1));
66 contour.push_back(
Pair(x1, y2));
67 m_innerPanel.appendContour(contour, y2,
false);
68 contour.push_back(
Pair(-x1, y2));
73 void TOPGeoQBB::printInnerPanelContour()
const
75 auto contour = getInnerPanelContour();
76 cout <<
"Inner panel contour [" << s_unitName <<
"]:" << endl;
77 for (
auto& xy : contour) cout << xy.first <<
" " << xy.second << endl;
82 std::vector<std::pair<double, double> > TOPGeoQBB::getOuterPanelContour()
const
84 typedef std::pair<double, double>
Pair;
85 std::vector<Pair> contour;
87 double x1 = getPanelWidth() / 2;
88 double y1 = m_outerPanel.getY();
89 double y2 = y1 + m_outerPanel.getMinThickness();
90 contour.push_back(
Pair(-x1, y2));
91 m_outerPanel.appendContour(contour, y2,
true);
92 contour.push_back(
Pair(x1, y2));
93 contour.push_back(
Pair(x1, y1));
94 contour.push_back(
Pair(-x1, y1));
99 void TOPGeoQBB::printOuterPanelContour()
const
101 auto contour = getOuterPanelContour();
102 cout <<
"Outer panel contour [" << s_unitName <<
"]:" << endl;
103 for (
auto& xy : contour) cout << xy.first <<
" " << xy.second << endl;
108 std::vector<std::pair<double, double> > TOPGeoQBB::getBackwardContour()
const
110 typedef std::pair<double, double>
Pair;
111 std::vector<Pair> contour;
113 double x1 = getWidth() / 2;
114 double x2 = x1 - m_prismEnclosure.getHeight() * tan(m_prismEnclosure.getAngle());
115 double x3 = getWidth() / 6;
116 double y1 = m_outerPanel.getY() + m_outerPanel.getMaxThickness();
117 double y2 = m_outerPanel.getY() + m_outerPanel.getMinThickness();
118 double y3 = y2 - m_sideRails.getHeight();
119 double y4 = y3 - m_prismEnclosure.getHeight();
120 contour.push_back(
Pair(-x1, y2));
121 contour.push_back(
Pair(-x3, y1));
122 contour.push_back(
Pair(x3, y1));
123 contour.push_back(
Pair(x1, y2));
124 contour.push_back(
Pair(x1, y3));
125 contour.push_back(
Pair(x2, y4));
126 contour.push_back(
Pair(-x2, y4));
127 contour.push_back(
Pair(-x1, y3));
132 void TOPGeoQBB::printBackwardContour()
const
134 auto contour = getBackwardContour();
135 cout <<
"Backward contour [" << s_unitName <<
"]:" << endl;
136 for (
auto& xy : contour) cout << xy.first <<
" " << xy.second << endl;
141 std::vector<std::pair<double, double> > TOPGeoQBB::getPrismEnclosureContour()
const
143 typedef std::pair<double, double>
Pair;
144 std::vector<Pair> contour;
146 double tanAngle = tan(m_prismEnclosure.getAngle());
147 double x1 = getWidth() / 2;
148 double x2 = x1 - m_prismEnclosure.getHeight() * tanAngle;
149 double x3 = x1 - m_prismEnclosure.getSideThickness();
150 double y1 = m_outerPanel.getY() + m_outerPanel.getMinThickness()
151 - m_sideRails.getHeight();
152 double y2 = y1 - m_prismEnclosure.getHeight();
153 double y3 = y2 + m_prismEnclosure.getBottomThickness();
154 double x4 = x1 - m_prismEnclosure.getSideThickness() - (y1 - y3) * tanAngle;
155 contour.push_back(
Pair(x1, y1));
156 contour.push_back(
Pair(x2, y2));
157 contour.push_back(
Pair(-x2, y2));
158 contour.push_back(
Pair(-x1, y1));
159 contour.push_back(
Pair(-x3, y1));
160 contour.push_back(
Pair(-x4, y3));
161 contour.push_back(
Pair(x4, y3));
162 contour.push_back(
Pair(x3, y1));
167 void TOPGeoQBB::printPrismEnclosureContour()
const
169 auto contour = getPrismEnclosureContour();
170 cout <<
"Prism enclosure contour [" << s_unitName <<
"]:" << endl;
171 for (
auto& xy : contour) cout << xy.first <<
" " << xy.second << endl;
176 std::vector<std::pair<double, double> > TOPGeoQBB::getBackPlateContour()
const
178 typedef std::pair<double, double>
Pair;
179 std::vector<Pair> contour;
181 double x1 = getWidth() / 2;
182 double x2 = x1 - m_prismEnclosure.getHeight() * tan(m_prismEnclosure.getAngle());
183 double y1 = m_outerPanel.getY() + m_outerPanel.getMinThickness();
184 double y2 = y1 - m_sideRails.getHeight();
185 double y3 = y2 - m_prismEnclosure.getHeight();
186 contour.push_back(
Pair(-x1, y1));
187 contour.push_back(
Pair(x1, y1));
188 contour.push_back(
Pair(x1, y2));
189 contour.push_back(
Pair(x2, y3));
190 contour.push_back(
Pair(-x2, y3));
191 contour.push_back(
Pair(-x1, y2));
196 void TOPGeoQBB::printBackPlateContour()
const
198 auto contour = getBackPlateContour();
199 cout <<
"Prism enclosure back plate contour [" << s_unitName <<
"]:" << endl;
200 for (
auto& xy : contour) cout << xy.first <<
" " << xy.second << endl;
205 std::vector<std::pair<double, double> > TOPGeoQBB::getFrontPlateContour()
const
207 typedef std::pair<double, double>
Pair;
208 std::vector<Pair> contour;
210 double x1 = getWidth() / 2;
211 double x2 = x1 - m_prismEnclosure.getHeight() * tan(m_prismEnclosure.getAngle());
212 double y1 = m_outerPanel.getY() + m_outerPanel.getMinThickness();
213 double y2 = y1 - m_sideRails.getHeight();
214 double y3 = y2 - m_prismEnclosure.getHeight();
215 contour.push_back(
Pair(x1, y2));
216 contour.push_back(
Pair(x2, y3));
217 contour.push_back(
Pair(-x2, y3));
218 contour.push_back(
Pair(-x1, y2));
223 void TOPGeoQBB::printFrontPlateContour()
const
225 auto contour = getFrontPlateContour();
226 cout <<
"Prism enclosure front plate contour [" << s_unitName <<
"]:" << endl;
227 for (
auto& xy : contour) cout << xy.first <<
" " << xy.second << endl;
232 bool TOPGeoQBB::isConsistent()
const
234 if (m_width <= 0)
return false;
235 if (m_length <= 0)
return false;
236 if (m_prismPosition <= 0)
return false;
237 if (m_material.empty())
return false;
238 if (!m_innerPanel.isConsistent())
return false;
239 if (!m_outerPanel.isConsistent())
return false;
240 if (!m_sideRails.isConsistent())
return false;
241 if (!m_prismEnclosure.isConsistent())
return false;
242 if (!m_endPlate.isConsistent())
return false;
243 if (!m_coldPlate.isConsistent())
return false;
248 void TOPGeoQBB::print(
const std::string& title)
const
250 TOPGeoBase::printUnderlined(title);
252 cout <<
" width = " << getWidth() <<
" " << s_unitName;
253 cout <<
", length = " << getLength() <<
" " << s_unitName;
254 cout <<
", prism-bar joint = " << getPrismPosition() <<
" " << s_unitName;
255 cout <<
", inside material = " << getMaterial() << endl;
257 m_innerPanel.print(
"QBB inner honeycomb panel geometry parameters");
258 m_outerPanel.print(
"QBB outer honeycomb panel geometry parameters");
260 m_prismEnclosure.print();