ATLAS Offline Software
Loading...
Searching...
No Matches
GuideSysController.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5
7// //
8// Implementation of class GuideSysController //
9// //
10// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
11// Initial version: July 2008 //
12// //
13// Updates: //
14// - 2021, Nov - Riccardo Maria BIANCHI <rbianchi@cern.ch> //
15// Added VP1People class to show people //
16// figures at scale //
17// //
19
20#define VP1IMPVARNAME m_d
21
24#include "ui_guidelinescontrollerform.h"
25#include "ui_guides_settings_coordinateaxes_form.h"
26#include "ui_guides_settings_etacones_form.h"
27#include "ui_guides_settings_floorandletters_form.h"
28#include "ui_guides_settings_people_form.h"
29#include "ui_guides_settings_grid_form.h"
30#include "ui_guides_settings_idprojsurfs_form.h"
31#include "ui_guides_settings_trkvolumes_form.h"
32#include "ui_guides_settings_lines_form.h"
33#include "ui_guides_settings_hgtdguides_form.h"
36
37// System of units
38#ifdef BUILDVP1LIGHT
39 #include "GeoModelKernel/Units.h"
40 #define SYSTEM_OF_UNITS GeoModelKernelUnits // --> 'GeoModelKernelUnits::cm'
41#else
42 #include "GaudiKernel/SystemOfUnits.h"
43 #define SYSTEM_OF_UNITS Gaudi::Units // --> 'Gaudi::Units::cm'
44#endif
45
46#include <cmath>
47
48//____________________________________________________________________
50public:
52 Ui::VP1GuidesControllerForm ui{};
53 Ui::VP1GuidesSysSettingsCoordinateAxesForm ui_axes{};
54 Ui::VP1GuidesSysSettingsEtaConeForm ui_etacones{};
55 Ui::VP1GuidesSysSettingsFloorAndLettersForm ui_floorandletters{};
56 Ui::VP1GuidesSysSettingsPeopleForm ui_people{};
57 Ui::VP1GuidesSysSettingsGridForm ui_grid{};
58 Ui::VP1GuidesSysSettingsIDProjSurfsForm ui_idprojsurfs{};
59 Ui::VP1TrackingVolumesForm ui_trkvolumes{};
60 Ui::VP1LinesForm ui_lines{};
61 Ui::VP1GuidesSysSettingsHGTDGuidesForm ui_hgtdguides{};
62
63 static SbColor4f color4f(const QColor& col, int transp_int) {
64 return SbColor4f(std::max<float>(0.0f,std::min<float>(1.0f,col.redF())),
65 std::max<float>(0.0f,std::min<float>(1.0f,col.greenF())),
66 std::max<float>(0.0f,std::min<float>(1.0f,col.blueF())),
67 std::max<float>(0.0f,std::min<float>(1.0f,1.0-transp_int/100.0)));
68 }
69
70 InDetProjFlags::DetTypeFlags inDetDetTypesUsingProjections;
71
72 bool last_showFloor = false;
74 double last_floorExtent = 0.0;
75 double last_floorSpacing = 0.0;
76 double last_floorHeight = 0.0;
77 bool last_showLetters = false;
78 double last_lettersZPos = 0.0;
80 bool last_showAxes = false;
81 double last_axesLength = 0.0;
87 double last_gridSpacing = 0.0;
88 double last_gridExtent = 0.0;
89 bool last_showEtaCone1 = false;
90 bool last_showEtaCone2 = false;
91 bool last_showEtaCone3 = false;
92 double last_etaConeValue1 = 0.0;
93 double last_etaConeValue2 = 0.0;
94 double last_etaConeValue3 = 0.0;
95 double last_etaExtent = 0.0;
100 bool last_showLines = false;
102 double last_line_eta = 0.0; // This is needed to update the display in possibleChange_lineDirection
110 bool last_showPeople = false;
113
114 InDetProjFlags::InDetProjPartsFlags last_applicablePixelProjParts;
115 InDetProjFlags::InDetProjPartsFlags last_applicableSCTProjParts;
116 InDetProjFlags::InDetProjPartsFlags last_applicableTRTProjParts;
117 InDetProjFlags::InDetProjPartsFlags last_shownPixelProjSurfaces;
118 InDetProjFlags::InDetProjPartsFlags last_shownSCTProjSurfaces;
119 InDetProjFlags::InDetProjPartsFlags last_shownTRTProjSurfaces;
120
121 static InDetProjFlags::InDetProjPartsFlags projPartsFlag( bool barrelinner, bool barrelouter,
122 bool endcapinner, bool endcapouter,
123 bool endcap_hidenormalcyls_when_zasr = false,
124 bool endcap_zasr = false );
125 InDetProjFlags::DetTypeFlags pixelPartsEnabledByGUIOrDataUsage() const;
126 InDetProjFlags::DetTypeFlags sctPartsEnabledByGUIOrDataUsage() const;
127 InDetProjFlags::DetTypeFlags trtPartsEnabledByGUIOrDataUsage() const;
128};
129
130//____________________________________________________________________
132 : VP1Controller(sys,"GuideSysController"), m_d(new Imp)
133{
134 m_d->theclass = this;
135 m_d->ui.setupUi(this);
136
137 initDialog(m_d->ui_axes, m_d->ui.pushButton_settings_coordinateAxes,m_d->ui.checkBox_coordinateAxes);
138 initDialog(m_d->ui_etacones, m_d->ui.pushButton_settings_etaCones,m_d->ui.checkBox_etaCones);
139 initDialog(m_d->ui_floorandletters, m_d->ui.pushButton_settings_floorAndLetters,m_d->ui.checkBox_floorAndLetters);
140 initDialog(m_d->ui_people, m_d->ui.pushButton_settings_people,m_d->ui.checkBox_people);
141 initDialog(m_d->ui_grid, m_d->ui.pushButton_settings_grid,m_d->ui.checkBox_grid);
142 initDialog(m_d->ui_idprojsurfs, m_d->ui.pushButton_settings_inDetProjSurfs,m_d->ui.checkBox_inDetProjSurfs);
143 initDialog(m_d->ui_trkvolumes, m_d->ui.pushButton_settings_trkVolumes,m_d->ui.checkBox_trkVolumes);
144 initDialog(m_d->ui_lines, m_d->ui.pushButton_settings_lines,m_d->ui.checkBox_lines);
145 initDialog(m_d->ui_hgtdguides, m_d->ui.pushButton_settings_hgtdGuideLines,m_d->ui.checkBox_hgtdGuideLines);
146
147 //Hide SCT/Pixel projection surface controls for now:
148 m_d->ui_idprojsurfs.groupBox_pixelproj->setVisible(false);
149 m_d->ui_idprojsurfs.groupBox_sctproj->setVisible(false);
150
151 //Since we have different logical groups of radio buttons inside
152 //same groupboxes, we make sure they are coordinated correctly:
153
154 QButtonGroup * pixelproj_barrel_radiogroup = defineRadioButtonGroup(m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_inner,
155 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_outer,
156 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_both);
157 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_inner->setChecked(true);
158 QButtonGroup * pixelproj_endcap_radiogroup = defineRadioButtonGroup(m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_inner,
159 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_outer,
160 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_both);
161 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_inner->setChecked(true);
162
163
164 QButtonGroup * sctproj_barrel_radiogroup = defineRadioButtonGroup(m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_inner,
165 m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_outer,
166 m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_both);
167 m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_inner->setChecked(true);
168 QButtonGroup * sctproj_endcap_radiogroup = defineRadioButtonGroup(m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_inner,
169 m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_outer,
170 m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_both);
171 m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_inner->setChecked(true);
172
173
174 QButtonGroup * trtproj_barrel_radiogroup = defineRadioButtonGroup(m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_inner,
175 m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_outer,
176 m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_both);
177 m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_inner->setChecked(true);
178 QButtonGroup * trtproj_endcap_radiogroup = defineRadioButtonGroup(m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_inner,
179 m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_outer,
180 m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_both);
181 m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_inner->setChecked(true);
182
183 //Setup material buttons:
184 m_d->ui_floorandletters.colorButton_floor->setColor(QColor::fromRgbF(0.5,0.5,0.5));
185 m_d->ui_people.colorButton_people->setColor(QColor::fromRgbF(0.5,0.5,0.5));
186 m_d->ui_grid.colorButton_grid->setColor(QColor::fromRgbF(1.0,1.0,1.0));
187 m_d->ui_floorandletters.matButton_letters->setMaterial(VP1MaterialButton::createMaterial(0.5,0.5,0.5,0.1));
188 m_d->ui_people.matButton_people->setMaterial(VP1MaterialButton::createMaterial(0.5,0.5,0.5,0.1));
189 m_d->ui_axes.matButton_axes_x->setMaterial(VP1MaterialButton::createMaterial(1,0,0,0.15));
190 m_d->ui_axes.matButton_axes_y->setMaterial(VP1MaterialButton::createMaterial(0,1,0,0.15));
191 m_d->ui_axes.matButton_axes_z->setMaterial(VP1MaterialButton::createMaterial(0,0,2,0.15));
192 m_d->ui_etacones.matButton_etaCone1->setMaterial(VP1MaterialButton::createMaterial(1,1,0,0.2,0.5));
193 m_d->ui_etacones.matButton_etaCone2->setMaterial(VP1MaterialButton::createMaterial(1,0.56471,0.20784,0.2,0.5));
194 m_d->ui_etacones.matButton_etaCone3->setMaterial(VP1MaterialButton::createMaterial(1,0.15686,0.08235,0.2,0.5));
195 m_d->ui_idprojsurfs.pushButton_projsurfmaterial_pixel->setMaterial(VP1MaterialButton::createMaterial(126/255.0, 194/255.0, 204/255.0,0.05,0.35));
196 m_d->ui_idprojsurfs.pushButton_projsurfmaterial_sct->setMaterial(VP1MaterialButton::createMaterial(126/255.0, 194/255.0, 204/255.0,0.05,0.35));
197 m_d->ui_idprojsurfs.pushButton_projsurfmaterial_trt->setMaterial(VP1MaterialButton::createMaterial(126/255.0, 194/255.0, 204/255.0,0.05,0.35));
198 m_d->ui_trkvolumes.matButton_ID->setMaterial(VP1MaterialButton::createMaterial(1,0,0,0.15));
199 m_d->ui_trkvolumes.matButton_Calo->setMaterial(VP1MaterialButton::createMaterial(0,1,0,0.15));
200 m_d->ui_trkvolumes.matButton_MS->setMaterial(VP1MaterialButton::createMaterial(0,0,2,0.15));
201
203 // Setup connections which monitor changes in the controller so that we may emit signals as appropriate: //
205
206 // === Floor and Letters ===
208 connectToLastUpdateSlot(m_d->ui.checkBox_floorAndLetters);
209 connectToLastUpdateSlot(m_d->ui_floorandletters.checkBox_floorenabled);
210
212 connectToLastUpdateSlot(m_d->ui_floorandletters.colorButton_floor);
213 connectToLastUpdateSlot(m_d->ui_floorandletters.spinBox_floortransp);
214
216 connectToLastUpdateSlot(m_d->ui_floorandletters.doubleSpinBox_floorextent);
217
219 connectToLastUpdateSlot(m_d->ui_floorandletters.doubleSpinBox_floorspacing);
220
222 connectToLastUpdateSlot(m_d->ui_floorandletters.doubleSpinBox_floorheight);
223
225 connectToLastUpdateSlot(m_d->ui.checkBox_floorAndLetters);
226 connectToLastUpdateSlot(m_d->ui_floorandletters.checkBox_acdesignations);
227
229 connectToLastUpdateSlot(this,SIGNAL(floorExtentChanged(const double&)));
230 connectToLastUpdateSlot(this,SIGNAL(floorSpacingChanged(const double&)));
231
233 connectToLastUpdateSlot(this,SIGNAL(floorHeightChanged(const double&)));
234
235 // === People ===
237 connectToLastUpdateSlot(m_d->ui.checkBox_people);
238 connectToLastUpdateSlot(m_d->ui_people.checkBox_peopleenabled);
239
241 connectToLastUpdateSlot(m_d->ui_people.colorButton_people);
242 connectToLastUpdateSlot(m_d->ui_people.spinBox_peopletransp);
243
244 // Commenting this out for the moment as it is not implemented and is causing connect warnings
245
246 // addUpdateSlot(SLOT(possibleChange_peopleExtent()));
247 // connectToLastUpdateSlot(m_d->ui_people.doubleSpinBox_peopleextent);
248
249 // addUpdateSlot(SLOT(possibleChange_peopleSpacing()));
250 // connectToLastUpdateSlot(m_d->ui_people.doubleSpinBox_peoplespacing);
251
252 // addUpdateSlot(SLOT(possibleChange_peopleHeight()));
253 // connectToLastUpdateSlot(m_d->ui_people.doubleSpinBox_peopleheight);
254
255 // addUpdateSlot(SLOT(possibleChange_peopleZPos()));
256 // connectToLastUpdateSlot(this,SIGNAL(peopleExtentChanged(const double&)));
257 // connectToLastUpdateSlot(this,SIGNAL(peopleSpacingChanged(const double&)));
258
259 // addUpdateSlot(SLOT(possibleChange_peopleVerticalPos()));
260 // connectToLastUpdateSlot(this,SIGNAL(floorHeightChanged(const double&)));
261
262 // === Axes ===
264 connectToLastUpdateSlot(m_d->ui.checkBox_coordinateAxes);
265
267 connectToLastUpdateSlot(m_d->ui_axes.checkBox_axes_shownegativeparts);
268 connectToLastUpdateSlot(m_d->ui_axes.doubleSpinBox_axes_lengths_m);
269
271 connectToLastUpdateSlot(m_d->ui_axes.doubleSpinBox_axes_xpos_m);
272 connectToLastUpdateSlot(m_d->ui_axes.doubleSpinBox_axes_ypos_m);
273 connectToLastUpdateSlot(m_d->ui_axes.doubleSpinBox_axes_zpos_m);
274
276 connectToLastUpdateSlot(m_d->ui_axes.doubleSpinBox_axes_relthickness);
277
279 connectToLastUpdateSlot(m_d->ui.checkBox_grid);
280 connectToLastUpdateSlot(m_d->ui_grid.radioButton_grid_cartesian);
281
283 connectToLastUpdateSlot(m_d->ui.checkBox_grid);
284 connectToLastUpdateSlot(m_d->ui_grid.radioButton_grid_cylindrical);
285
287 connectToLastUpdateSlot(m_d->ui_grid.colorButton_grid);
288 connectToLastUpdateSlot(m_d->ui_grid.spinBox_gridtransp);
289
291 connectToLastUpdateSlot(m_d->ui_grid.doubleSpinBox_gridspacing);
292
294 connectToLastUpdateSlot(m_d->ui_grid.doubleSpinBox_gridextent);
295
297 connectToLastUpdateSlot(m_d->ui.checkBox_etaCones);
298 connectToLastUpdateSlot(m_d->ui_etacones.checkBox_etacone1);
299
301 connectToLastUpdateSlot(m_d->ui.checkBox_etaCones);
302 connectToLastUpdateSlot(m_d->ui_etacones.checkBox_etacone2);
303
305 connectToLastUpdateSlot(m_d->ui.checkBox_etaCones);
306 connectToLastUpdateSlot(m_d->ui_etacones.checkBox_etacone3);
307
309 connectToLastUpdateSlot(m_d->ui_etacones.doubleSpinBox_etaval1);
310
312 connectToLastUpdateSlot(m_d->ui_etacones.doubleSpinBox_etaval2);
313
315 connectToLastUpdateSlot(m_d->ui_etacones.doubleSpinBox_etaval3);
316
318 connectToLastUpdateSlot(m_d->ui_etacones.doubleSpinBox_etaconeextent);
319 connectToLastUpdateSlot(m_d->ui_etacones.radioButton_etaconeextentisr);
320
322 connectToLastUpdateSlot(pixelproj_barrel_radiogroup);
323 connectToLastUpdateSlot(pixelproj_endcap_radiogroup);
324
326 connectToLastUpdateSlot(sctproj_barrel_radiogroup);
327 connectToLastUpdateSlot(sctproj_endcap_radiogroup);
328
330 connectToLastUpdateSlot(trtproj_barrel_radiogroup);
331 connectToLastUpdateSlot(trtproj_endcap_radiogroup);
332 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_trtprojsurf_z2r);
333
335 connectToLastUpdateSlot(m_d->ui.checkBox_inDetProjSurfs);
336 connectToLastUpdateSlot(this,SIGNAL(applicablePixelProjPartsChanged(InDetProjFlags::InDetProjPartsFlags)));
337 connectToLastUpdateSlot(m_d->ui_idprojsurfs.groupBox_pixelproj);
338 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_asneeded);
339 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_barrelA);
340 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_barrelC);
341 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_endcapA);
342 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_endcapC);
343
345 connectToLastUpdateSlot(m_d->ui.checkBox_inDetProjSurfs);
346 connectToLastUpdateSlot(this,SIGNAL(applicableSCTProjPartsChanged(InDetProjFlags::InDetProjPartsFlags)));
347 connectToLastUpdateSlot(m_d->ui_idprojsurfs.groupBox_sctproj);
348 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_asneeded);
349 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_barrelA);
350 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_barrelC);
351 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_endcapA);
352 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_endcapC);
353
355 connectToLastUpdateSlot(m_d->ui.checkBox_inDetProjSurfs);
356 connectToLastUpdateSlot(this,SIGNAL(applicableTRTProjPartsChanged(InDetProjFlags::InDetProjPartsFlags)));
357 connectToLastUpdateSlot(m_d->ui_idprojsurfs.groupBox_trtproj);
358 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_asneeded);
359 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_barrelA);
360 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_barrelC);
361 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_endcapA);
362 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_endcapC);
363
365 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_asneeded);
366
368 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_asneeded);
369
371 connectToLastUpdateSlot(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_asneeded);
372
374 connectToLastUpdateSlot(m_d->ui.checkBox_trkVolumes);
375
377 connectToLastUpdateSlot(m_d->ui_trkvolumes.checkBox_ID);
379 connectToLastUpdateSlot(m_d->ui_trkvolumes.checkBox_Calo);
381 connectToLastUpdateSlot(m_d->ui_trkvolumes.checkBox_MS);
382
384 connectToLastUpdateSlot(m_d->ui.checkBox_lines);
385
387 connectToLastUpdateSlot(m_d->ui_lines.doubleSpinBox_phi);
388 connectToLastUpdateSlot(m_d->ui_lines.doubleSpinBox_theta);
389 connectToLastUpdateSlot(m_d->ui_lines.doubleSpinBox_eta);
390 connectToLastUpdateSlot(m_d->ui_lines.doubleSpinBox_length);
391
393 connectToLastUpdateSlot(m_d->ui.checkBox_hgtdGuideLines);
394
396 connectToLastUpdateSlot(m_d->ui.checkBox_hgtdGuideLines);
397 connectToLastUpdateSlot(m_d->ui_hgtdguides.checkBox_hgtd_hits);
398
400 connectToLastUpdateSlot(m_d->ui.checkBox_hgtdGuideLines);
401 connectToLastUpdateSlot(m_d->ui_hgtdguides.checkBox_hgtd_truthTracks);
402
404 connectToLastUpdateSlot(m_d->ui.checkBox_hgtdGuideLines);
405 connectToLastUpdateSlot(m_d->ui_hgtdguides.checkBox_hgtd_particleNames);
406
408 connectToLastUpdateSlot(m_d->ui.checkBox_hgtdGuideLines);
409 connectToLastUpdateSlot(m_d->ui_hgtdguides.checkBox_hgtd_primaryParticles);
410
412 connectToLastUpdateSlot(m_d->ui.checkBox_hgtdGuideLines);
413 connectToLastUpdateSlot(m_d->ui_hgtdguides.checkBox_hgtd_secondaryParticles);
414
416 connectToLastUpdateSlot(m_d->ui.checkBox_hgtdGuideLines);
417 connectToLastUpdateSlot(m_d->ui_hgtdguides.checkBox_hgtd_unlinkedParticles);
418
419
420 initLastVars();
421}
422
423//____________________________________________________________________
428
429//____________________________________________________________________
430//Material access methods:
431SoMaterial * GuideSysController::lettersMaterial() const { return m_d->ui_floorandletters.matButton_letters->handledMaterials().at(0); }
432SoMaterial * GuideSysController::peopleMaterial() const { return m_d->ui_people.matButton_people->handledMaterials().at(0); }
433SoMaterial * GuideSysController::xAxisMaterial() const { return m_d->ui_axes.matButton_axes_x->handledMaterials().at(0); }
434SoMaterial * GuideSysController::yAxisMaterial() const { return m_d->ui_axes.matButton_axes_y->handledMaterials().at(0); }
435SoMaterial * GuideSysController::zAxisMaterial() const { return m_d->ui_axes.matButton_axes_z->handledMaterials().at(0); }
436SoMaterial * GuideSysController::etaCone1Material() const { return m_d->ui_etacones.matButton_etaCone1->handledMaterials().at(0); }
437SoMaterial * GuideSysController::etaCone2Material() const { return m_d->ui_etacones.matButton_etaCone2->handledMaterials().at(0); }
438SoMaterial * GuideSysController::etaCone3Material() const { return m_d->ui_etacones.matButton_etaCone3->handledMaterials().at(0); }
439SoMaterial * GuideSysController::pixelProjSurfMaterial() const { return m_d->ui_idprojsurfs.pushButton_projsurfmaterial_pixel->handledMaterials().at(0); }
440SoMaterial * GuideSysController::sctProjSurfMaterial() const { return m_d->ui_idprojsurfs.pushButton_projsurfmaterial_sct->handledMaterials().at(0); }
441SoMaterial * GuideSysController::trtProjSurfMaterial() const { return m_d->ui_idprojsurfs.pushButton_projsurfmaterial_trt->handledMaterials().at(0); }
442SoMaterial * GuideSysController::idTrkVolumesMaterial() const { return m_d->ui_trkvolumes.matButton_ID->handledMaterials().at(0); }
443SoMaterial * GuideSysController::caloTrkVolumesMaterial() const { return m_d->ui_trkvolumes.matButton_Calo->handledMaterials().at(0); }
444SoMaterial * GuideSysController::msTrkVolumesMaterial() const { return m_d->ui_trkvolumes.matButton_MS->handledMaterials().at(0); }
445
446//____________________________________________________________________
448{
449 return m_d->ui.checkBox_floorAndLetters->isChecked() &&
450 m_d->ui_floorandletters.checkBox_floorenabled->isChecked();
451}
452
453//____________________________________________________________________
455{
456 return m_d->ui.checkBox_people->isChecked() &&
457 m_d->ui_people.checkBox_peopleenabled->isChecked();
458}
459
460//____________________________________________________________________
462{
463 return Imp::color4f(m_d->ui_floorandletters.colorButton_floor->color(),m_d->ui_floorandletters.spinBox_floortransp->value());
464}
465
466//____________________________________________________________________
468{
469 return Imp::color4f(m_d->ui_people.colorButton_people->color(),m_d->ui_people.spinBox_peopletransp->value());
470}
471
472
473//____________________________________________________________________
475{
476 return m_d->ui_floorandletters.doubleSpinBox_floorextent->value()*SYSTEM_OF_UNITS::m;
477}
478
479//____________________________________________________________________
481{
482 return m_d->ui_floorandletters.doubleSpinBox_floorspacing->value()*SYSTEM_OF_UNITS::m;
483}
484
485//____________________________________________________________________
487{
488 return m_d->ui_floorandletters.doubleSpinBox_floorheight->value()*SYSTEM_OF_UNITS::m;
489}
490
491//____________________________________________________________________
493{
494 return m_d->ui.checkBox_floorAndLetters->isChecked() &&
495 m_d->ui_floorandletters.checkBox_acdesignations->isChecked();
496}
497
498//____________________________________________________________________
500{
501
502 int nmax; double distmax;
503 if (!VP1Floor::calcParsFromExtentAndSpacing( static_cast<const VP1HelperClassBase*>(this), floorExtent(), floorSpacing(), VP1Floor::nMax(), nmax, distmax )) {
504 nmax = 10;
505 distmax = 10*SYSTEM_OF_UNITS::m;
506 message("lettersZPos ERROR: Problems calculating floor nmax/distmax.");
507 }
508 return distmax*1.1;
509}
510
511//____________________________________________________________________
513{
514 return floorHeight()+1.5*SYSTEM_OF_UNITS::m;
515}
516
517//____________________________________________________________________
519{
520 return floorHeight();
521}
522
523//____________________________________________________________________
525{
526
527 int nmax; double distmax;
528 if (!VP1Floor::calcParsFromExtentAndSpacing( static_cast<const VP1HelperClassBase*>(this), floorExtent(), floorSpacing(), VP1Floor::nMax(), nmax, distmax )) {
529 nmax = 10;
530 distmax = 10*SYSTEM_OF_UNITS::m;
531 message("lettersZPos ERROR: Problems calculating floor nmax/distmax.");
532 }
533 return distmax*1.1;
534}
535
536//____________________________________________________________________
538{
539 return m_d->ui.checkBox_coordinateAxes->isChecked();
540}
541
542//____________________________________________________________________
544{
545 return m_d->ui_axes.doubleSpinBox_axes_lengths_m->value()*SYSTEM_OF_UNITS::m *
546 (m_d->ui_axes.checkBox_axes_shownegativeparts->isChecked()?-1.0:1.0);
547}
548
549//____________________________________________________________________
551{
552 return SbVec3f(m_d->ui_axes.doubleSpinBox_axes_xpos_m->value()*SYSTEM_OF_UNITS::m,
553 m_d->ui_axes.doubleSpinBox_axes_ypos_m->value()*SYSTEM_OF_UNITS::m,
554 m_d->ui_axes.doubleSpinBox_axes_zpos_m->value()*SYSTEM_OF_UNITS::m);
555}
556
557//____________________________________________________________________
559{
560 return m_d->ui_axes.doubleSpinBox_axes_relthickness->value();
561}
562
563//____________________________________________________________________
565{
566 return m_d->ui.checkBox_grid->isChecked() &&
567 m_d->ui_grid.radioButton_grid_cartesian->isChecked();
568}
569
570//____________________________________________________________________
572{
573 return m_d->ui.checkBox_grid->isChecked() &&
574 m_d->ui_grid.radioButton_grid_cylindrical->isChecked();
575}
576
577//____________________________________________________________________
579{
580 return Imp::color4f(m_d->ui_grid.colorButton_grid->color(),m_d->ui_grid.spinBox_gridtransp->value());
581}
582
583//____________________________________________________________________
585{
586 return m_d->ui_grid.doubleSpinBox_gridspacing->value()*SYSTEM_OF_UNITS::m;
587}
588
589//____________________________________________________________________
591{
592 return m_d->ui_grid.doubleSpinBox_gridextent->value()*SYSTEM_OF_UNITS::m;
593}
594
595//____________________________________________________________________
597{
598 return m_d->ui.checkBox_etaCones->isChecked() &&
599 m_d->ui_etacones.checkBox_etacone1->isChecked();
600}
601
602//____________________________________________________________________
604{
605 return m_d->ui.checkBox_etaCones->isChecked() &&
606 m_d->ui_etacones.checkBox_etacone2->isChecked();
607}
608
609//____________________________________________________________________
611{
612 return m_d->ui.checkBox_etaCones->isChecked() &&
613 m_d->ui_etacones.checkBox_etacone3->isChecked();
614}
615
616//____________________________________________________________________
618{
619 return std::max(1.0e-5,m_d->ui_etacones.doubleSpinBox_etaval1->value());
620}
621
622//____________________________________________________________________
624{
625 return std::max(1.0e-5,m_d->ui_etacones.doubleSpinBox_etaval2->value());
626}
627
628//____________________________________________________________________
630{
631 return std::max(1.0e-5,m_d->ui_etacones.doubleSpinBox_etaval3->value());
632}
633
634//____________________________________________________________________
636{
637 return m_d->ui_etacones.doubleSpinBox_etaconeextent->value() * SYSTEM_OF_UNITS::m
638 * (m_d->ui_etacones.radioButton_etaconeextentisr->isChecked() ? 1.0 : -1.0);
639}
640
641//____________________________________________________________________
643{
644 return m_d->ui.checkBox_lines->isChecked();
645}
646
647
648//____________________________________________________________________
650{
651 double r = lineLength();
652 double phi = m_d->ui_lines.doubleSpinBox_phi->value();
653 double theta = m_d->ui_lines.doubleSpinBox_theta->value();
654 SbVec3f direction(r*sin(theta)*cos(phi),r*sin(theta)*sin(phi), r*cos(theta));
655 return direction;
656}
657
658//____________________________________________________________________
660{
661 return m_d->ui_lines.doubleSpinBox_length->value() * SYSTEM_OF_UNITS::m;
662}
663
664//____________________________________________________________________
666{
667 return m_d->ui.checkBox_hgtdGuideLines->isChecked();
668}
669
670//____________________________________________________________________
672{
673 return showHGTDGuideLines() && m_d->ui_hgtdguides.checkBox_hgtd_hits->isChecked();
674}
675
676//____________________________________________________________________
678{
679 return showHGTDGuideLines() && m_d->ui_hgtdguides.checkBox_hgtd_truthTracks->isChecked();
680}
681
682//____________________________________________________________________
684{
685 return showHGTDGuideLines() && m_d->ui_hgtdguides.checkBox_hgtd_particleNames->isChecked();
686}
687
688//____________________________________________________________________
690{
691 return showHGTDGuideLines() && m_d->ui_hgtdguides.checkBox_hgtd_primaryParticles->isChecked();
692}
693
694//____________________________________________________________________
696{
697 return showHGTDGuideLines() && m_d->ui_hgtdguides.checkBox_hgtd_secondaryParticles->isChecked();
698}
699
700//____________________________________________________________________
702{
703 return showHGTDGuideLines() && m_d->ui_hgtdguides.checkBox_hgtd_unlinkedParticles->isChecked();
704}
705
706//_____________________________________________________________________________________
707InDetProjFlags::InDetProjPartsFlags GuideSysController::Imp::projPartsFlag( bool barrelinner, bool barrelouter,
708 bool endcapinner, bool endcapouter,
709 bool endcap_hidenormalcyls_when_zasr,
710 bool endcap_zasr )
711{
712 InDetProjFlags::InDetProjPartsFlags parts(InDetProjFlags::NoProjections);
713 //Given the general parts needed, what specific surfaces do we need:
714 if ( barrelinner )
716 if ( barrelouter ) {
719 }
720
721 if ( !( endcap_zasr && endcap_hidenormalcyls_when_zasr ) ) {
722 if ( endcapinner ) {
723 //Inner:
726 }
727 if ( endcapouter ) {
728 //Outer:
731 }
732 }
733 //Special ZasR surfaces for the endcaps, placed in the barrel positions:
734 if (endcap_zasr) {
735 if ( barrelinner )
737 if ( barrelouter ) {
740 }
741 }
742 return parts;
743}
744
745//____________________________________________________________________
746InDetProjFlags::InDetProjPartsFlags GuideSysController::applicablePixelProjParts() const
747{
748 return Imp::projPartsFlag( m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_inner->isChecked() || m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_both->isChecked(),
749 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_outer->isChecked() || m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_both->isChecked(),
750 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_inner->isChecked() || m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_both->isChecked(),
751 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_outer->isChecked() || m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_both->isChecked() );
752}
753
754//____________________________________________________________________
755InDetProjFlags::InDetProjPartsFlags GuideSysController::applicableSCTProjParts() const
756{
757 return Imp::projPartsFlag( m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_inner->isChecked() || m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_both->isChecked(),
758 m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_outer->isChecked() || m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_both->isChecked(),
759 m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_inner->isChecked() || m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_both->isChecked(),
760 m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_outer->isChecked() || m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_both->isChecked() );
761}
762
763//____________________________________________________________________
764InDetProjFlags::InDetProjPartsFlags GuideSysController::applicableTRTProjParts() const
765{
766 return Imp::projPartsFlag( m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_inner->isChecked() || m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_both->isChecked(),
767 m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_outer->isChecked() || m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_both->isChecked(),
768 m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_inner->isChecked() || m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_both->isChecked(),
769 m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_outer->isChecked() || m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_both->isChecked(),
770 true, m_d->ui_idprojsurfs.checkBox_trtprojsurf_z2r->isChecked() );
771}
772
773//_____________________________________________________________________________________
775{
776 InDetProjFlags::DetTypeFlags f(InDetProjFlags::NoDet);
777 if (ui_idprojsurfs.groupBox_trtproj->isChecked()) {
778 if (ui_idprojsurfs.checkBox_trtprojsurf_parts_asneeded->isChecked()) {
780 } else {
781 if (ui_idprojsurfs.checkBox_trtprojsurf_parts_barrelA->isChecked()) f |= InDetProjFlags::TRT_brlpos;
782 if (ui_idprojsurfs.checkBox_trtprojsurf_parts_barrelC->isChecked()) f |= InDetProjFlags::TRT_brlneg;
783 if (ui_idprojsurfs.checkBox_trtprojsurf_parts_endcapA->isChecked()) f |= InDetProjFlags::TRT_ecpos;
784 if (ui_idprojsurfs.checkBox_trtprojsurf_parts_endcapC->isChecked()) f |= InDetProjFlags::TRT_ecneg;
785 }
786 }
787 return f;
788}
789
790//_____________________________________________________________________________________
792{
793 InDetProjFlags::DetTypeFlags f(InDetProjFlags::NoDet);
794 if (ui_idprojsurfs.groupBox_sctproj->isChecked()) {
795 if (ui_idprojsurfs.checkBox_sctprojsurf_parts_asneeded->isChecked()) {
797 } else {
798 if (ui_idprojsurfs.checkBox_sctprojsurf_parts_barrelA->isChecked()) f |= InDetProjFlags::SCT_brlpos;
799 if (ui_idprojsurfs.checkBox_sctprojsurf_parts_barrelC->isChecked()) f |= InDetProjFlags::SCT_brlneg;
800 if (ui_idprojsurfs.checkBox_sctprojsurf_parts_endcapA->isChecked()) f |= InDetProjFlags::SCT_ecpos;
801 if (ui_idprojsurfs.checkBox_sctprojsurf_parts_endcapC->isChecked()) f |= InDetProjFlags::SCT_ecneg;
802 }
803 }
804 return f;
805}
806
807//_____________________________________________________________________________________
809{
810 InDetProjFlags::DetTypeFlags f(InDetProjFlags::NoDet);
811 if (ui_idprojsurfs.groupBox_pixelproj->isChecked()) {
812 if (ui_idprojsurfs.checkBox_pixelprojsurf_parts_asneeded->isChecked()) {
814 } else {
815 if (ui_idprojsurfs.checkBox_pixelprojsurf_parts_barrelA->isChecked()) f |= InDetProjFlags::Pixel_brlpos;
816 if (ui_idprojsurfs.checkBox_pixelprojsurf_parts_barrelC->isChecked()) f |= InDetProjFlags::Pixel_brlneg;
817 if (ui_idprojsurfs.checkBox_pixelprojsurf_parts_endcapA->isChecked()) f |= InDetProjFlags::Pixel_ecpos;
818 if (ui_idprojsurfs.checkBox_pixelprojsurf_parts_endcapC->isChecked()) f |= InDetProjFlags::Pixel_ecneg;
819 }
820 }
821 return f;
822}
823
824//____________________________________________________________________
825InDetProjFlags::InDetProjPartsFlags GuideSysController::shownPixelProjSurfaces() const
826{
827 InDetProjFlags::DetTypeFlags enabledDetRegions = m_d->pixelPartsEnabledByGUIOrDataUsage();
828 if (!(InDetProjFlags::Pixel_all&enabledDetRegions)||!m_d->ui.checkBox_inDetProjSurfs->isChecked())
830 InDetProjFlags::InDetProjPartsFlags pixelProjParts(applicablePixelProjParts());
831 if (pixelProjParts==InDetProjFlags::NoProjections)
833 InDetProjFlags::InDetProjPartsFlags dummy_sct(InDetProjFlags::NoProjections), dummy_trt(InDetProjFlags::NoProjections);
834 InDetProjFlags::projectionPartsGivenUsedDetectors( pixelProjParts, dummy_sct, dummy_trt, enabledDetRegions );
835 return pixelProjParts;
836}
837
838//____________________________________________________________________
839InDetProjFlags::InDetProjPartsFlags GuideSysController::shownSCTProjSurfaces() const
840{
841 InDetProjFlags::DetTypeFlags enabledDetRegions = m_d->sctPartsEnabledByGUIOrDataUsage();
842 if (!(InDetProjFlags::SCT_all&enabledDetRegions)||!m_d->ui.checkBox_inDetProjSurfs->isChecked())
844 InDetProjFlags::InDetProjPartsFlags sctProjParts(applicableSCTProjParts());
845 if (sctProjParts==InDetProjFlags::NoProjections)
847 InDetProjFlags::InDetProjPartsFlags dummy_pixel(InDetProjFlags::NoProjections), dummy_trt(InDetProjFlags::NoProjections);
848 InDetProjFlags::projectionPartsGivenUsedDetectors( dummy_pixel, sctProjParts, dummy_trt, enabledDetRegions );
849 return sctProjParts;
850}
851
852//____________________________________________________________________
853InDetProjFlags::InDetProjPartsFlags GuideSysController::shownTRTProjSurfaces() const
854{
855 InDetProjFlags::DetTypeFlags enabledDetRegions = m_d->trtPartsEnabledByGUIOrDataUsage();
856 if (!(InDetProjFlags::TRT_all&enabledDetRegions)||!m_d->ui.checkBox_inDetProjSurfs->isChecked())
858 InDetProjFlags::InDetProjPartsFlags trtProjParts(applicableTRTProjParts());
859 if (trtProjParts==InDetProjFlags::NoProjections)
861 InDetProjFlags::InDetProjPartsFlags dummy_pixel(InDetProjFlags::NoProjections), dummy_sct(InDetProjFlags::NoProjections);
862 InDetProjFlags::projectionPartsGivenUsedDetectors( dummy_pixel, dummy_sct, trtProjParts,enabledDetRegions );
863 return trtProjParts;
864}
865
866//____________________________________________________________________
868{
869 if (m_d->inDetDetTypesUsingProjections==f)
870 return;
871 m_d->inDetDetTypesUsingProjections=f;
875}
876
877//____________________________________________________________________
879{
880 const bool e(!m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_asneeded->isChecked());
881 m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_barrelA->setEnabled(e);
882 m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_barrelC->setEnabled(e);
883 m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_endcapA->setEnabled(e);
884 m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_endcapC->setEnabled(e);
885}
886
887//____________________________________________________________________
889{
890 const bool e(!m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_asneeded->isChecked());
891 m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_barrelA->setEnabled(e);
892 m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_barrelC->setEnabled(e);
893 m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_endcapA->setEnabled(e);
894 m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_endcapC->setEnabled(e);
895}
896
897//____________________________________________________________________
899{
900 const bool e(!m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_asneeded->isChecked());
901 m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_barrelA->setEnabled(e);
902 m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_barrelC->setEnabled(e);
903 m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_endcapA->setEnabled(e);
904 m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_endcapC->setEnabled(e);
905}
906
908{
909 return m_d->ui.checkBox_trkVolumes->isChecked();
910}
911
913{
914 return m_d->ui_trkvolumes.checkBox_ID->isChecked();
915}
916
918{
919 return m_d->ui_trkvolumes.checkBox_Calo->isChecked();
920}
921
923{
924 return m_d->ui_trkvolumes.checkBox_MS->isChecked();
925}
926
927//____________________________________________________________________
929{
930 return 4;
931}
932
933//____________________________________________________________________
935{
936
937 //version 0 output an integer here.
938
939 //Materials
940 s.save(m_d->ui_floorandletters.matButton_letters);
941 s.save(m_d->ui_axes.matButton_axes_x);
942 s.save(m_d->ui_axes.matButton_axes_y);
943 s.save(m_d->ui_axes.matButton_axes_z);
944 s.save(m_d->ui_etacones.matButton_etaCone1);
945 s.save(m_d->ui_etacones.matButton_etaCone2);
946 s.save(m_d->ui_etacones.matButton_etaCone3);
947 s.save(m_d->ui_idprojsurfs.pushButton_projsurfmaterial_pixel);
948 s.save(m_d->ui_idprojsurfs.pushButton_projsurfmaterial_sct);
949 s.save(m_d->ui_idprojsurfs.pushButton_projsurfmaterial_trt);
950
951 //Everything apart from projection surfaces:
952 s.save(m_d->ui_grid.colorButton_grid);
953 s.save(m_d->ui_grid.spinBox_gridtransp);
954 s.save(m_d->ui_floorandletters.colorButton_floor);
955 s.save(m_d->ui_floorandletters.spinBox_floortransp);
956 s.save(m_d->ui_floorandletters.doubleSpinBox_floorheight);
957 s.save(m_d->ui_floorandletters.checkBox_floorenabled);
958 s.save(m_d->ui_floorandletters.doubleSpinBox_floorspacing);
959 s.save(m_d->ui_floorandletters.doubleSpinBox_floorextent);
960 s.save(m_d->ui_floorandletters.checkBox_acdesignations);
961 //Version 0 output bool here
962 s.save(m_d->ui_axes.checkBox_axes_shownegativeparts);
963 s.save(m_d->ui_axes.doubleSpinBox_axes_lengths_m);
964 s.save(m_d->ui_axes.doubleSpinBox_axes_relthickness);
965 s.save(m_d->ui_axes.doubleSpinBox_axes_xpos_m);
966 s.save(m_d->ui_axes.doubleSpinBox_axes_ypos_m);
967 s.save(m_d->ui_axes.doubleSpinBox_axes_zpos_m);
968 s.save(0/*backwards compat*/,m_d->ui_grid.radioButton_grid_cartesian,m_d->ui_grid.radioButton_grid_cylindrical);
969 s.save(m_d->ui_grid.doubleSpinBox_gridspacing);
970 s.save(m_d->ui_grid.doubleSpinBox_gridextent);
971 s.save(m_d->ui_etacones.checkBox_etacone1);
972 s.save(m_d->ui_etacones.doubleSpinBox_etaval1);
973 s.save(m_d->ui_etacones.checkBox_etacone2);
974 s.save(m_d->ui_etacones.doubleSpinBox_etaval2);
975 s.save(m_d->ui_etacones.checkBox_etacone3);
976 s.save(m_d->ui_etacones.doubleSpinBox_etaval3);
977 s.save(m_d->ui_etacones.doubleSpinBox_etaconeextent);
978 s.save(m_d->ui_etacones.radioButton_etaconeextentisr,m_d->ui_etacones.radioButton_etaconeextentisz);
979
980 //Projection surfaces:
981
982 s.save(m_d->ui_idprojsurfs.groupBox_pixelproj);
983 s.save(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_asneeded);
984 s.save(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_barrelA);
985 s.save(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_barrelC);
986 s.save(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_endcapA);
987 s.save(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_endcapC);
988 s.save(m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_inner,
989 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_outer,
990 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_both);
991 s.save(m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_inner,
992 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_outer,
993 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_both);
994 s.save(m_d->ui_idprojsurfs.groupBox_sctproj);
995 s.save(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_asneeded);
996 s.save(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_barrelA);
997 s.save(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_barrelC);
998 s.save(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_endcapA);
999 s.save(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_endcapC);
1000 s.save(m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_inner,
1001 m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_outer,
1002 m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_both);
1003 s.save(m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_inner,
1004 m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_outer,
1005 m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_both);
1006 s.save(m_d->ui_idprojsurfs.groupBox_trtproj);
1007 s.save(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_asneeded);
1008 s.save(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_barrelA);
1009 s.save(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_barrelC);
1010 s.save(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_endcapA);
1011 s.save(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_endcapC);
1012 s.save(m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_inner,
1013 m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_outer,
1014 m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_both);
1015 s.save(m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_inner,
1016 m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_outer,
1017 m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_both);
1018 s.save(m_d->ui_idprojsurfs.checkBox_trtprojsurf_z2r);
1019
1020 s.save(m_d->ui.checkBox_coordinateAxes);//version 1+
1021 s.save(m_d->ui.checkBox_etaCones);
1022 s.save(m_d->ui.checkBox_floorAndLetters);//version 1+
1023 s.save(m_d->ui.checkBox_grid);//version 1+
1024 s.save(m_d->ui.checkBox_inDetProjSurfs);//version 1+
1025
1026 //Tracking volumes:
1027 // All version 2+
1028 s.save(m_d->ui.checkBox_trkVolumes);
1029
1030 //material
1031 s.save(m_d->ui_trkvolumes.matButton_ID);
1032 s.save(m_d->ui_trkvolumes.matButton_Calo);
1033 s.save(m_d->ui_trkvolumes.matButton_MS);
1034 s.save(m_d->ui_trkvolumes.checkBox_ID);
1035 s.save(m_d->ui_trkvolumes.checkBox_Calo);
1036 s.save(m_d->ui_trkvolumes.checkBox_MS);
1037
1038 // Line from origin
1039 s.save(m_d->ui.checkBox_lines);
1040 s.save(m_d->ui_lines.doubleSpinBox_phi);
1041 s.save(m_d->ui_lines.doubleSpinBox_phi);
1042 s.save(m_d->ui_lines.doubleSpinBox_eta);
1043 s.save(m_d->ui_lines.doubleSpinBox_length);
1044
1045 // People
1046 s.save(m_d->ui.checkBox_people);
1047 s.save(m_d->ui_people.matButton_people);
1048
1049 // HGTD guides
1050 s.save(m_d->ui.checkBox_hgtdGuideLines);
1051 s.save(m_d->ui_hgtdguides.checkBox_hgtd_hits);
1052 s.save(m_d->ui_hgtdguides.checkBox_hgtd_truthTracks);
1053 s.save(m_d->ui_hgtdguides.checkBox_hgtd_particleNames);
1054 s.save(m_d->ui_hgtdguides.checkBox_hgtd_primaryParticles);
1055 s.save(m_d->ui_hgtdguides.checkBox_hgtd_secondaryParticles);
1056 s.save(m_d->ui_hgtdguides.checkBox_hgtd_unlinkedParticles);
1057}
1058
1059//____________________________________________________________________
1061{
1062 if (s.version()<0||s.version()>4) {
1063 message("Warning: State data in .vp1 file has unsupported version ("+str(s.version())+")");
1064 return;
1065 }
1066
1067 if (s.version()==0)
1068 s.ignoreInt();
1069
1070 //Materials
1071 s.restore(m_d->ui_floorandletters.matButton_letters);
1072 s.restore(m_d->ui_axes.matButton_axes_x);
1073 s.restore(m_d->ui_axes.matButton_axes_y);
1074 s.restore(m_d->ui_axes.matButton_axes_z);
1075 s.restore(m_d->ui_etacones.matButton_etaCone1);
1076 s.restore(m_d->ui_etacones.matButton_etaCone2);
1077 s.restore(m_d->ui_etacones.matButton_etaCone3);
1078 s.restore(m_d->ui_idprojsurfs.pushButton_projsurfmaterial_pixel);
1079 s.restore(m_d->ui_idprojsurfs.pushButton_projsurfmaterial_sct);
1080 s.restore(m_d->ui_idprojsurfs.pushButton_projsurfmaterial_trt);
1081
1082
1083 //Everything apart from projection surfaces:
1084 s.restore(m_d->ui_grid.colorButton_grid);
1085 s.restore(m_d->ui_grid.spinBox_gridtransp);
1086 s.restore(m_d->ui_floorandletters.colorButton_floor);
1087 s.restore(m_d->ui_floorandletters.spinBox_floortransp);
1088 s.restore(m_d->ui_floorandletters.doubleSpinBox_floorheight);
1089 s.restore(m_d->ui_floorandletters.checkBox_floorenabled);
1090 s.restore(m_d->ui_floorandletters.doubleSpinBox_floorspacing);
1091 s.restore(m_d->ui_floorandletters.doubleSpinBox_floorextent);
1092 s.restore(m_d->ui_floorandletters.checkBox_acdesignations);
1093 if (s.version()==0)
1094 s.ignoreBool();
1095 s.restore(m_d->ui_axes.checkBox_axes_shownegativeparts);
1096 s.restore(m_d->ui_axes.doubleSpinBox_axes_lengths_m);
1097 s.restore(m_d->ui_axes.doubleSpinBox_axes_relthickness);
1098 s.restore(m_d->ui_axes.doubleSpinBox_axes_xpos_m);
1099 s.restore(m_d->ui_axes.doubleSpinBox_axes_ypos_m);
1100 s.restore(m_d->ui_axes.doubleSpinBox_axes_zpos_m);
1101 s.restore(0/*backwards compat*/,m_d->ui_grid.radioButton_grid_cartesian,m_d->ui_grid.radioButton_grid_cylindrical);
1102 s.restore(m_d->ui_grid.doubleSpinBox_gridspacing);
1103 s.restore(m_d->ui_grid.doubleSpinBox_gridextent);
1104 s.restore(m_d->ui_etacones.checkBox_etacone1);
1105 s.restore(m_d->ui_etacones.doubleSpinBox_etaval1);
1106 s.restore(m_d->ui_etacones.checkBox_etacone2);
1107 s.restore(m_d->ui_etacones.doubleSpinBox_etaval2);
1108 s.restore(m_d->ui_etacones.checkBox_etacone3);
1109 s.restore(m_d->ui_etacones.doubleSpinBox_etaval3);
1110 s.restore(m_d->ui_etacones.doubleSpinBox_etaconeextent);
1111 s.restore(m_d->ui_etacones.radioButton_etaconeextentisr,m_d->ui_etacones.radioButton_etaconeextentisz);
1112
1113 //Projection surfaces:
1114
1115 s.restore(m_d->ui_idprojsurfs.groupBox_pixelproj);
1116 s.restore(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_asneeded);
1117 s.restore(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_barrelA);
1118 s.restore(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_barrelC);
1119 s.restore(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_endcapA);
1120 s.restore(m_d->ui_idprojsurfs.checkBox_pixelprojsurf_parts_endcapC);
1121 s.restore(m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_inner,
1122 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_outer,
1123 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_barrel_both);
1124 s.restore(m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_inner,
1125 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_outer,
1126 m_d->ui_idprojsurfs.radioButton_pixelprojsurf_endcap_both);
1127 s.restore(m_d->ui_idprojsurfs.groupBox_sctproj);
1128 s.restore(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_asneeded);
1129 s.restore(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_barrelA);
1130 s.restore(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_barrelC);
1131 s.restore(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_endcapA);
1132 s.restore(m_d->ui_idprojsurfs.checkBox_sctprojsurf_parts_endcapC);
1133 s.restore(m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_inner,
1134 m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_outer,
1135 m_d->ui_idprojsurfs.radioButton_sctprojsurf_barrel_both);
1136 s.restore(m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_inner,
1137 m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_outer,
1138 m_d->ui_idprojsurfs.radioButton_sctprojsurf_endcap_both);
1139 s.restore(m_d->ui_idprojsurfs.groupBox_trtproj);
1140 s.restore(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_asneeded);
1141 s.restore(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_barrelA);
1142 s.restore(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_barrelC);
1143 s.restore(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_endcapA);
1144 s.restore(m_d->ui_idprojsurfs.checkBox_trtprojsurf_parts_endcapC);
1145 s.restore(m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_inner,
1146 m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_outer,
1147 m_d->ui_idprojsurfs.radioButton_trtprojsurf_barrel_both);
1148 s.restore(m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_inner,
1149 m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_outer,
1150 m_d->ui_idprojsurfs.radioButton_trtprojsurf_endcap_both);
1151 s.restore(m_d->ui_idprojsurfs.checkBox_trtprojsurf_z2r);
1152
1153 if (s.version()>=1) {
1154 s.restore(m_d->ui.checkBox_coordinateAxes);
1155 s.restore(m_d->ui.checkBox_etaCones);
1156 s.restore(m_d->ui.checkBox_floorAndLetters);
1157 s.restore(m_d->ui.checkBox_grid);
1158 s.restore(m_d->ui.checkBox_inDetProjSurfs);
1159 }
1160
1161 if (s.version()>=2) {
1162 s.restore(m_d->ui.checkBox_trkVolumes);
1163 s.restore(m_d->ui_trkvolumes.matButton_ID);
1164 s.restore(m_d->ui_trkvolumes.matButton_Calo);
1165 s.restore(m_d->ui_trkvolumes.matButton_MS);
1166 s.restore(m_d->ui_trkvolumes.checkBox_ID);
1167 s.restore(m_d->ui_trkvolumes.checkBox_Calo);
1168 s.restore(m_d->ui_trkvolumes.checkBox_MS);
1169 }
1170 if (s.version()>=3) {
1171 s.restore(m_d->ui.checkBox_lines);
1172 s.restore(m_d->ui_lines.doubleSpinBox_phi);
1173 s.restore(m_d->ui_lines.doubleSpinBox_phi);
1174 s.restore(m_d->ui_lines.doubleSpinBox_eta);
1175 s.restore(m_d->ui_lines.doubleSpinBox_length);
1176 }
1177
1178 // People
1179 if (s.version()>=3) {
1180 s.restore(m_d->ui.checkBox_people);
1181 s.restore(m_d->ui_people.matButton_people);
1182 }
1183
1184 if (s.version()>=4) {
1185 s.restore(m_d->ui.checkBox_hgtdGuideLines);
1186 s.restore(m_d->ui_hgtdguides.checkBox_hgtd_hits);
1187 s.restore(m_d->ui_hgtdguides.checkBox_hgtd_truthTracks);
1188 s.restore(m_d->ui_hgtdguides.checkBox_hgtd_particleNames);
1189 s.restore(m_d->ui_hgtdguides.checkBox_hgtd_primaryParticles);
1190 s.restore(m_d->ui_hgtdguides.checkBox_hgtd_secondaryParticles);
1191 s.restore(m_d->ui_hgtdguides.checkBox_hgtd_unlinkedParticles);
1192 }
1193}
1194
1196 // Bit of a hack possibly to do this here, but I want to be able to update the direction by changing either theta or eta
1197 double eta = m_d->ui_lines.doubleSpinBox_eta->value();
1198 double theta = m_d->ui_lines.doubleSpinBox_theta->value();
1199
1200 if (m_d->last_line_eta != eta){
1201 // eta has changed, so update theta in the UI
1202 theta = 2*std::atan(std::exp(-1.0 * eta));
1203 m_d->ui_lines.doubleSpinBox_theta->setValue(theta);
1204 } else if ( theta!= std::acos(m_d->last_lineDirection[2] / lineLength() ) ){
1205 eta = -1.0 * std::log(std::tan(theta/2.0));
1206 m_d->ui_lines.doubleSpinBox_eta->setValue(eta);
1207 }
1208 m_d->last_line_eta = m_d->ui_lines.doubleSpinBox_eta->value();
1209 if (changed( m_d->last_lineDirection , lineDirection() ) ) {
1210 if (verbose()&&!initVarsMode()) messageVerbose("Emitting "+QString()+"( lineDirectionChanged"+toString(m_d->last_lineDirection)+" )");
1211 emit lineDirectionChanged(m_d->last_lineDirection);
1212 }
1213}
1214
1215
1217// Test for possible changes in values and emit signals as appropriate:
1218// (possibleChange_XXX() slots code provided by macros)
1219#define VP1CONTROLLERCLASSNAME GuideSysController
1256//POSSIBLECHANGE_IMP(lineDirection) Implemented this manually so we can update eta/theta
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
Scalar theta() const
theta method
const int nmax(200)
#define POSSIBLECHANGE_IMP(x)
Ui::VP1GuidesSysSettingsFloorAndLettersForm ui_floorandletters
InDetProjFlags::InDetProjPartsFlags last_shownSCTProjSurfaces
Ui::VP1GuidesSysSettingsCoordinateAxesForm ui_axes
InDetProjFlags::InDetProjPartsFlags last_applicablePixelProjParts
static InDetProjFlags::InDetProjPartsFlags projPartsFlag(bool barrelinner, bool barrelouter, bool endcapinner, bool endcapouter, bool endcap_hidenormalcyls_when_zasr=false, bool endcap_zasr=false)
InDetProjFlags::InDetProjPartsFlags last_applicableSCTProjParts
InDetProjFlags::DetTypeFlags trtPartsEnabledByGUIOrDataUsage() const
static SbColor4f color4f(const QColor &col, int transp_int)
Ui::VP1TrackingVolumesForm ui_trkvolumes
Ui::VP1GuidesSysSettingsGridForm ui_grid
Ui::VP1GuidesSysSettingsIDProjSurfsForm ui_idprojsurfs
GuideSysController * theclass
InDetProjFlags::DetTypeFlags inDetDetTypesUsingProjections
Ui::VP1GuidesSysSettingsHGTDGuidesForm ui_hgtdguides
InDetProjFlags::DetTypeFlags pixelPartsEnabledByGUIOrDataUsage() const
Ui::VP1GuidesSysSettingsEtaConeForm ui_etacones
Ui::VP1GuidesSysSettingsPeopleForm ui_people
InDetProjFlags::InDetProjPartsFlags last_applicableTRTProjParts
InDetProjFlags::InDetProjPartsFlags last_shownTRTProjSurfaces
InDetProjFlags::InDetProjPartsFlags last_shownPixelProjSurfaces
InDetProjFlags::DetTypeFlags sctPartsEnabledByGUIOrDataUsage() const
Ui::VP1GuidesControllerForm ui
void possibleChange_axesLength()
void possibleChange_showCylindricalGrid()
void possibleChange_etaExtent()
void possibleChange_showHGTDParticleNames()
bool showMuonSpectrometer() const
SoMaterial * sctProjSurfMaterial() const
double lettersVerticalPos() const
void possibleChange_relAxesThickness()
SbColor4f gridColourAndTransp() const
void possibleChange_floorHeight()
void possibleChange_showHGTDSecondaryParticles()
SoMaterial * etaCone2Material() const
void possibleChange_etaConeValue2()
void possibleChange_showHGTDGuideHits()
double peopleVerticalPos() const
void possibleChange_showInnerDetector()
void possibleChange_showCalorimeters()
bool showHGTDSecondaryParticles() const
SoMaterial * trtProjSurfMaterial() const
void possibleChange_showHGTDPrimaryParticles()
void possibleChange_etaConeValue3()
void actualSaveSettings(VP1Serialise &) const
void possibleChange_showCartesianGrid()
void possibleChange_showFloor()
InDetProjFlags::InDetProjPartsFlags applicableTRTProjParts() const
void possibleChange_applicableSCTProjParts()
void possibleChange_gridSpacing()
void possibleChange_lettersZPos()
void possibleChange_showEtaCone3()
void possibleChange_floorExtent()
void possibleChange_floorColourAndTransp()
bool showHGTDParticleNames() const
SoMaterial * etaCone3Material() const
void setInDetDetTypesUsingProjections(InDetProjFlags::DetTypeFlags)
SoMaterial * etaCone1Material() const
void possibleChange_showHGTDGuideLines()
GuideSysController(IVP1System *sys)
void possibleChange_axesPosition()
SoMaterial * peopleMaterial() const
void floorHeightChanged(const double &)
void possibleChange_shownTRTProjSurfaces()
void possibleChange_showLetters()
void possibleChange_etaConeValue1()
void possibleChange_showPeople()
SbColor4f peopleColourAndTransp() const
double relAxesThickness() const
void possibleChange_gridExtent()
SoMaterial * idTrkVolumesMaterial() const
void lineDirectionChanged(const SbVec3f &)
void actualRestoreSettings(VP1Deserialise &)
InDetProjFlags::InDetProjPartsFlags applicablePixelProjParts() const
SoMaterial * xAxisMaterial() const
void possibleChange_applicableTRTProjParts()
void applicablePixelProjPartsChanged(InDetProjFlags::InDetProjPartsFlags)
void possibleChange_lettersVerticalPos()
bool showHGTDUnlinkedParticles() const
SbVec3f lineDirection() const
void applicableTRTProjPartsChanged(InDetProjFlags::InDetProjPartsFlags)
InDetProjFlags::InDetProjPartsFlags applicableSCTProjParts() const
void possibleChange_showHGTDUnlinkedParticles()
void possibleChange_showEtaCone1()
void possibleChange_applicablePixelProjParts()
void possibleChange_gridColourAndTransp()
void floorSpacingChanged(const double &)
SoMaterial * caloTrkVolumesMaterial() const
SbColor4f floorColourAndTransp() const
void applicableSCTProjPartsChanged(InDetProjFlags::InDetProjPartsFlags)
void possibleChange_showMuonSpectrometer()
void possibleChange_showHGTDTruthTracks()
void possibleChange_shownPixelProjSurfaces()
void floorExtentChanged(const double &)
SbVec3f axesPosition() const
void possibleChange_showEtaCone2()
InDetProjFlags::InDetProjPartsFlags shownTRTProjSurfaces() const
SoMaterial * zAxisMaterial() const
void possibleChange_showLines()
void possibleChange_showAxes()
void possibleChange_floorSpacing()
InDetProjFlags::InDetProjPartsFlags shownPixelProjSurfaces() const
SoMaterial * yAxisMaterial() const
void possibleChange_peopleColourAndTransp()
SoMaterial * pixelProjSurfMaterial() const
SoMaterial * msTrkVolumesMaterial() const
void possibleChange_showTrackingVolumes()
InDetProjFlags::InDetProjPartsFlags shownSCTProjSurfaces() const
bool showHGTDPrimaryParticles() const
void possibleChange_shownSCTProjSurfaces()
SoMaterial * lettersMaterial() const
static void projectionPartsGivenUsedDetectors(InDetProjPartsFlags &proj_pixel, InDetProjPartsFlags &proj_sct, InDetProjPartsFlags &proj_trt, const DetTypeFlags &useddets)
void initDialog(T &theUI, QPushButton *launchbutton, QAbstractButton *enabledButton=0)
static QString toString(const T &par)
void connectToLastUpdateSlot(QObject *sender, const char *signal)
const char * addUpdateSlot(const char *slot)
bool initVarsMode() const
bool changed(T &lastval, const T &newval)
QButtonGroup * defineRadioButtonGroup(QRadioButton *rb0, QRadioButton *rb1, QRadioButton *rb2=0, QRadioButton *rb3=0, QRadioButton *rb4=0, QRadioButton *rb5=0, QRadioButton *rb6=0, QRadioButton *rb7=0, QRadioButton *rb8=0, QRadioButton *rb9=0)
VP1Controller(IVP1System *sys, const QString &classname)
static bool calcParsFromExtentAndSpacing(const VP1HelperClassBase *, const double &extent, const double &spacing, const int &nmaxlimit, int &nmax, double &distmax)
Definition VP1Floor.cxx:30
static int nMax()
Definition VP1Floor.h:33
VP1HelperClassBase(IVP1System *sys=0, QString helpername="")
void messageVerbose(const QString &) const
void message(const QString &) const
static SoMaterial * createMaterial(const QColor &, const double &brightness=0.0, const double &transp=0.0)
int r
Definition globals.cxx:22