ATLAS Offline Software
Loading...
Searching...
No Matches
GeoSysController.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5
7// //
8// Implementation of class GeoSysController //
9// //
10// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
11// Initial version: October 2008 //
12// //
14
15#define VP1IMPVARNAME m_d
16
21#include "VP1Base/VP1Settings.h"
22#include "VP1Base/IVP1System.h"
23#ifndef BUILDVP1LIGHT
25#endif
26
27#include "ui_geometrysystemcontroller.h"
28#include "ui_settings_display_form.h"
29#include "ui_settings_iconisedvols_form.h"
30#include "ui_settings_interactions_form.h"
31#include "ui_settings_misc_form.h"
32#include "ui_settings_muonchamber_form.h"
33#include "ui_settings_treebrowser_form.h"
34
35#include <Inventor/nodes/SoPickStyle.h>
36
37#include <QFileDialog>
38
39#include <map>
40
41
42//____________________________________________________________________
44public:
46 Ui::GeometrySystemControllerForm ui{};
47 Ui::GeoSysSettingsDisplayForm ui_disp{};
48 Ui::GeoSysSettingsIconisedVolumesForm ui_iconisedvols{};
49 Ui::GeoSysSettingsInteractionsForm ui_int{};
50 Ui::GeoSysSettingsMiscForm ui_misc{};
51 Ui::GeoSysSettingsMuonChamberForm ui_muon{};
52 Ui::GeoSysSettingsTreeBrowserForm ui_treebrowser{};
53 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*> subSysCheckBoxMap;
54 float last_transparency = 0.0F;
56 VP1GeoFlags::MuonChamberAdaptionStyleFlags last_muonChamberAdaptionStyle;
57 int last_labels = 0;
59 SoPickStyle * pickStyle = nullptr;
62
65
66// std::map<QString, QList<QCheckBox*> > labelProvidingSystems; //!< First is name of system, second is list of types of information provided (system stores actual information)
67};
68
69
70//____________________________________________________________________
72 : VP1Controller(sys,"GeoSysController"), m_d(new Imp)
73{
74 m_d->theclass = this;
75 m_d->ui.setupUi(this);
76
77 initDialog(m_d->ui_disp, m_d->ui.pushButton_settings_display);
78 initDialog(m_d->ui_iconisedvols, m_d->ui.pushButton_settings_iconisedvols);
79 initDialog(m_d->ui_int, m_d->ui.pushButton_settings_interactions);
80 initDialog(m_d->ui_misc, m_d->ui.pushButton_settings_misc);
81 initDialog(m_d->ui_muon, m_d->ui.pushButton_settings_muonchambers);
82 initDialog(m_d->ui_treebrowser, m_d->ui.pushButton_settings_treebrowser);
83
84 // m_d->ui_disp.widget_drawOptions->setLineWidthsDisabled();
85 m_d->ui_disp.widget_drawOptions->setPointSizesDisabled();
86// m_d->ui_disp.widget_drawOptions->setBaseLightingDisabled();
87 m_d->ui_disp.widget_drawOptions->setComplexity(0.6);
88
89 m_d->pickStyle = new SoPickStyle;
90 m_d->pickStyle->ref();
91
92 #ifndef BUILDVP1LIGHT
93 //Possibly hide parts of gui, depending on job configuration:
95 m_d->ui.groupBox_innerdetector->setVisible(false);
96 m_d->ui.groupBox_calorimeters->setVisible(false);
97 m_d->ui.groupBox_muonsystems->setVisible(false);
98 m_d->ui.pushButton_settings_muonchambers->setEnabled(false);
99 m_d->ui_misc.groupBox_pixelactivemodules->setVisible(false);
100 m_d->ui_misc.groupBox_sctactivemodules->setVisible(false);
101 m_d->ui.groupBox_misc->setVisible(false);
102 m_d->ui_muon.groupBox_muonchamberconfig->setVisible(false);
103 m_d->ui_misc.groupBox_show_NSW_chambers->setVisible(false);
104 m_d->ui_int.checkBox_AutomaticMuonChamberEndViews->setVisible(false);
105 message("GeoModel not properly initialised.");
106 } else {
107 m_d->ui.groupBox_innerdetector->setVisible(VP1JobConfigInfo::hasPixelGeometry()
112 m_d->ui_misc.groupBox_pixelactivemodules->setVisible(VP1JobConfigInfo::hasPixelGeometry() || VP1JobConfigInfo::hasITkGeometry() );
113 m_d->ui_misc.groupBox_sctactivemodules->setVisible(VP1JobConfigInfo::hasSCTGeometry() || VP1JobConfigInfo::hasITkGeometry() );
114 m_d->ui.groupBox_calorimeters->setVisible(VP1JobConfigInfo::hasLArGeometry()
116 m_d->ui.groupBox_muonsystems->setVisible(VP1JobConfigInfo::hasMuonGeometry());
117 m_d->ui.pushButton_settings_muonchambers->setEnabled(VP1JobConfigInfo::hasMuonGeometry());
118 m_d->ui_int.checkBox_print_muonstationinfo->setVisible(VP1JobConfigInfo::hasMuonGeometry());
119 m_d->ui_muon.groupBox_muonchamberconfig->setVisible(VP1JobConfigInfo::hasMuonGeometry());
120 m_d->ui_misc.groupBox_show_NSW_chambers->setVisible(VP1JobConfigInfo::hasMuonNSWGeometry());
121 m_d->ui_int.checkBox_AutomaticMuonChamberEndViews->setVisible(VP1JobConfigInfo::hasMuonGeometry());
122 }
123 #endif
124
125
126 m_d->zappedVolumeListModel = new ZappedVolumeListModel(m_d->ui_iconisedvols.listView_iconisedvolumes);
127 m_d->ui_iconisedvols.listView_iconisedvolumes->setUniformItemSizes(true);
128 m_d->ui_iconisedvols.listView_iconisedvolumes->setSelectionMode(QAbstractItemView::ExtendedSelection);
129 m_d->ui_iconisedvols.listView_iconisedvolumes->setModel(m_d->zappedVolumeListModel);
130
131 connect(m_d->ui_iconisedvols.listView_iconisedvolumes,SIGNAL(activated(const QModelIndex&)),
132 m_d->zappedVolumeListModel,SLOT(activated(const QModelIndex&)));
133
135 // Setup connections which monitor changes in the controller so that we may emit signals as appropriate: //
137
139 connectToLastUpdateSlot(m_d->ui_int.checkBox_geomselectable);
140
142 connectToLastUpdateSlot(m_d->ui_disp.checkBox_showVolumeOutLines);
143
145 connectToLastUpdateSlot(m_d->ui_disp.spinBox_transp);
146
148 connectToLastUpdateSlot(m_d->ui_muon.checkBox_muonadapt_openmdtchambers);
149 connectToLastUpdateSlot(m_d->ui_muon.checkBox_muonadapt_hidetubes);
150 connectToLastUpdateSlot(m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes);
151 connectToLastUpdateSlot(m_d->ui_muon.checkBox_muonadapt_opencscchambers);
152 connectToLastUpdateSlot(m_d->ui_muon.checkBox_muonadapt_opentgcchambers);
153
154 initLastVars();
155
156 //Connections for state-less signals:
157
158 connect(m_d->ui_disp.pushButton_saveChangedMaterials,SIGNAL(clicked()),this,SLOT(saveMaterialsRequested()));
159 connect(m_d->ui_disp.pushButton_loadMaterials,SIGNAL(clicked()),this,SLOT(loadMaterialsRequested()));
160
161 connect(m_d->ui_misc.pushButton_nonStandardShapes_Iconify,SIGNAL(clicked()),
163 connect(m_d->ui_misc.pushButton_nonStandardShapes_Expand,SIGNAL(clicked()),
165
166 // Expand volumes based on Material
167 connect(m_d->ui_misc.lineEdit_expand_vols_matname,SIGNAL(returnPressed()),this,SLOT(emit_autoExpandByVolumeOrMaterialName()));
168 connect(m_d->ui_misc.pushButton_expand_vols_matname,SIGNAL(clicked()),this,SLOT(emit_autoExpandByVolumeOrMaterialName()));
169
170 // Expand volumes based on Name
171 connect(m_d->ui_misc.lineEdit_expand_vols_volname,SIGNAL(returnPressed()),this,SLOT(emit_autoExpandByVolumeOrMaterialName()));
172 connect(m_d->ui_misc.pushButton_expand_vols_volname,SIGNAL(clicked()),this,SLOT(emit_autoExpandByVolumeOrMaterialName()));
173
174 // Iconify/Zap volumes based on Name
175 connect(m_d->ui_misc.lineEdit_iconify_vols_volname,SIGNAL(returnPressed()),this,SLOT(emit_autoIconifyByVolumeOrMaterialName()));
176 connect(m_d->ui_misc.pushButton_iconify_vols_volname,SIGNAL(clicked()),this,SLOT(emit_autoIconifyByVolumeOrMaterialName()));
177
178 connect(m_d->ui_muon.pushButton_muonadapt_adapttoevtdata,SIGNAL(clicked()),this,SLOT(emit_adaptMuonChambersToEventData()));
179
180 connect(m_d->ui_misc.toolButton_pixelmod_adapt,SIGNAL(clicked(bool)),this,SLOT(emit_autoAdaptPixelsOrSCT()));
181 connect(m_d->ui_misc.toolButton_sctmod_adapt,SIGNAL(clicked(bool)),this,SLOT(emit_autoAdaptPixelsOrSCT()));
182
183 connect(m_d->ui_misc.toolButton_nswchambers_adapt,SIGNAL(clicked(bool)),this,SLOT(emit_autoAdaptMuonNSW()));
184 connect(m_d->ui_misc.toolButton_nswchambers_reset,SIGNAL(clicked(bool)),this,SLOT(emit_autoAdaptMuonNSW()));
185
186 connect(m_d->ui_misc.toolButton_pixelmod_reset,SIGNAL(clicked(bool)),this,SLOT(emit_resetSubSystems()));
187 connect(m_d->ui_misc.toolButton_sctmod_reset,SIGNAL(clicked(bool)),this,SLOT(emit_resetSubSystems()));
188 connect(m_d->ui_muon.pushButton_muonadapt_resetToAllChambers,SIGNAL(clicked()),this,SLOT(emit_resetSubSystems()));
189
191
192 // INNER DETECTOR
193 m_d->subSysCheckBoxMap[VP1GeoFlags::Pixel] = m_d->ui.checkBox_Pixel;
194 m_d->subSysCheckBoxMap[VP1GeoFlags::SCT] = m_d->ui.checkBox_SCT;
195 m_d->subSysCheckBoxMap[VP1GeoFlags::TRT] = m_d->ui.checkBox_TRT;
196 m_d->subSysCheckBoxMap[VP1GeoFlags::InDetServMat] = m_d->ui.checkBox_InDetServMat;
197 // Phase-II
198 m_d->subSysCheckBoxMap[VP1GeoFlags::ITkPixel] = m_d->ui.checkBox_ITkPixel;
199 m_d->subSysCheckBoxMap[VP1GeoFlags::ITkStrip] = m_d->ui.checkBox_ITkStrip;
200
201 // CALO
202 m_d->subSysCheckBoxMap[VP1GeoFlags::LAr] = m_d->ui.checkBox_LAr;
203 m_d->subSysCheckBoxMap[VP1GeoFlags::Tile] = m_d->ui.checkBox_Tile;
204
205 // MUON TOROID
206 m_d->subSysCheckBoxMap[VP1GeoFlags::BarrelToroid] = m_d->ui.checkBox_MuonBarrelToroid;
207 m_d->subSysCheckBoxMap[VP1GeoFlags::ToroidECA] = m_d->ui.checkBox_MuonECAToroid;
208 // m_d->subSysCheckBoxMap[VP1GeoFlags::ToroidECC] = m_d->ui.checkBox_MuonECCToroid;
209 // MUON MISC
210 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonFeet] = m_d->ui.checkBox_MuonFeet;
211 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonShielding] = m_d->ui.checkBox_MuonShielding;
212 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonToroidsEtc] = m_d->ui.checkBox_MuonEtc; // this is the "Services" checkbox in the GUI
213 // MUON CHAMBERS
214 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonEndcapStationCSC] = m_d->ui.checkBox_MuonEndcapStationCSC;
215 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonEndcapStationTGC] = m_d->ui.checkBox_MuonEndcapStationTGC;
216 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonEndcapStationMDT] = m_d->ui.checkBox_MuonEndcapStationMDT;
217 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonEndcapStationNSW] = m_d->ui.checkBox_NSW;
218 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonBarrelStationInner] = m_d->ui.checkBox_MuonBarrelStationInner;
219 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonBarrelStationMiddle] = m_d->ui.checkBox_MuonBarrelStationMiddle;
220 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonBarrelStationOuter] = m_d->ui.checkBox_MuonBarrelStationOuter;
221
222 // MISCELLANEOUS
223 m_d->subSysCheckBoxMap[VP1GeoFlags::CavernInfra] = m_d->ui.checkBox_CavernInfra;
224 m_d->subSysCheckBoxMap[VP1GeoFlags::BeamPipe] = m_d->ui.checkBox_BeamPipe;
225 m_d->subSysCheckBoxMap[VP1GeoFlags::LUCID] = m_d->ui.checkBox_LUCID;
226 m_d->subSysCheckBoxMap[VP1GeoFlags::ZDC] = m_d->ui.checkBox_ZDC;
227 m_d->subSysCheckBoxMap[VP1GeoFlags::ALFA] = m_d->ui.checkBox_ALFA;
228 m_d->subSysCheckBoxMap[VP1GeoFlags::AFP] = m_d->ui.checkBox_AFP;
229 m_d->subSysCheckBoxMap[VP1GeoFlags::ForwardRegion] = m_d->ui.checkBox_ForwardRegion;
230 // OTHER
231 m_d->subSysCheckBoxMap[VP1GeoFlags::AllUnrecognisedVolumes] = m_d->ui.checkBox_other;
232
233 // -> labels
235 connectToLastUpdateSlot(m_d->ui_disp.groupBox_labels);
236 connectToLastUpdateSlot(m_d->ui_disp.checkBox_labels_names);
237 connectToLastUpdateSlot(m_d->ui_disp.checkBox_labels_mooret0s);
238 connectToLastUpdateSlot(m_d->ui_disp.checkBox_labels_mboyt0s);
239 connectToLastUpdateSlot(m_d->ui_disp.checkBox_labels_hits);
240
242 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_labels_xOffset);
243 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_labels_yOffset);
244 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_labels_zOffset);
245
246 m_d->last_labels=0;
247}
248
249//____________________________________________________________________
251{
252 m_d->pickStyle->unref();
253 delete m_d;
254}
255
256//____________________________________________________________________
258{
259 m_d->ui_int.checkBox_geomselectable->setChecked(b);
261}
262
263//____________________________________________________________________
265{
266 m_d->ui_disp.widget_drawOptions->setComplexity(c);
267}
268
269//____________________________________________________________________
271{
272 m_d->ui_int.checkBox_zoomToVolumes->setChecked(b);
273}
274
275//____________________________________________________________________
277{
278 m_d->ui_int.checkBox_AutomaticMuonChamberEndViews->setChecked(b);
279}
280
281//____________________________________________________________________
283{
284 m_d->ui_muon.checkBox_muonadapt_autoadapt->setChecked(b);
285}
286
287//____________________________________________________________________
289{
290 m_d->lastSelectedVolHandle = vh;
291 m_d->ui_disp.matButton_lastSel->setEnabled(vh!=0);
292 if (vh) {
293 QList<SoMaterial*> mats = m_d->ui_disp.matButton_lastSel->handledMaterials();
294 if (mats.isEmpty()||mats.at(0)!=vh->material()) {
295 m_d->ui_disp.matButton_lastSel->clearHandledMaterials();
296 m_d->ui_disp.matButton_lastSel->setMaterial(vh->material());
297 }
298 } else {
299 m_d->ui_disp.matButton_lastSel->clearHandledMaterials();
300 }
301}
302
303//____________________________________________________________________
305{
306 return m_d->lastSelectedVolHandle;
307}
308
309//____________________________________________________________________
311{
312 const bool ctrl_isdown = (Qt::ControlModifier & QApplication::keyboardModifiers());
313 const bool onlyChangedMaterials = !ctrl_isdown;
314
315 QString filename
316 = QFileDialog::getSaveFileName(this, "Select geometry material file to save",
317 (m_d->lastSaveMaterialsFile.isEmpty()?
319 :m_d->lastSaveMaterialsFile),
320 "VP1 geometry material files (*.vp1geomat)",
321 0,QFileDialog::DontResolveSymlinks);
322
323 if(filename.isEmpty())
324 return;
325
326 if (!filename.endsWith(".vp1geomat"))
327 filename += ".vp1geomat";
328
329 m_d->lastSaveMaterialsFile = filename;
330
331 messageVerbose("Emitting saveMaterialsToFile(\""+filename+"\","+str(onlyChangedMaterials)+")");
332 emit saveMaterialsToFile(filename,onlyChangedMaterials);
333
334}
335
336//____________________________________________________________________
338{
339 QString filename = QFileDialog::getOpenFileName(this, "Select geometry material file to load",
340 (m_d->lastLoadMaterialsFile.isEmpty()?
342 :m_d->lastLoadMaterialsFile),
343 "VP1 geometry material files (*.vp1geomat)",
344 0,QFileDialog::DontResolveSymlinks);
345 if(filename.isEmpty())
346 return;
347
348 m_d->lastLoadMaterialsFile = filename;
349
350 messageVerbose("Emitting loadMaterialsFromFile(\""+filename+"\")");
351 emit loadMaterialsFromFile(filename);
352}
353
354//____________________________________________________________________
356{
357 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*>::const_iterator it = m_d->subSysCheckBoxMap.find(f);
358 return it==m_d->subSysCheckBoxMap.end() ? 0 : it->second;
359}
360
361//____________________________________________________________________
363{
364 return m_d->ui_disp.widget_drawOptions->drawOptionsGroup();
365}
366
367//____________________________________________________________________
368SoPickStyle * GeoSysController::pickStyle() const
369{
370 return m_d->pickStyle;
371}
372
373//____________________________________________________________________
375{
376 return m_d->ui_treebrowser.treeView_volumebrowser;
377}
378
379//____________________________________________________________________
381{
382 return m_d->ui_disp.phisectionwidget;
383}
384
385//____________________________________________________________________
387{
388 return m_d->zappedVolumeListModel;
389}
390
391//____________________________________________________________________
393{
394 return m_d->ui_int.checkBox_zoomToVolumes->isChecked();
395}
396
397//____________________________________________________________________
399{
400 return m_d->ui_int.checkBox_AutomaticMuonChamberEndViews->isChecked();
401}
402
403//____________________________________________________________________
405{
406 return m_d->ui_int.checkBox_print_shape->isChecked();
407}
408
409//____________________________________________________________________
411{
412 return m_d->ui_int.checkBox_print_material->isChecked();
413}
414
415//____________________________________________________________________
417{
418 return m_d->ui_int.checkBox_print_copyno->isChecked();
419}
420
421//____________________________________________________________________
423{
424 return m_d->ui_int.checkBox_print_transform->isChecked();
425}
426
427//____________________________________________________________________
429{
430 return m_d->ui_int.checkBox_print_tree->isChecked();
431}
432
433//____________________________________________________________________
435{
436 return m_d->ui_int.checkBox_print_mass->isChecked();
437}
438
439//____________________________________________________________________
441{
442 return m_d->ui_int.checkBox_print_muonstationinfo->isChecked();
443}
444
445//____________________________________________________________________
447{
448 return m_d->ui_muon.checkBox_muonadapt_autoadapt->isChecked();
449}
450
451//_____________________________________________________________________________________
453{
454 m_d->pickStyle->style = m_d->ui_int.checkBox_geomselectable->isChecked()
455 ? SoPickStyle::SHAPE : SoPickStyle::UNPICKABLE;
456}
457
458//____________________________________________________________________
460{
461 int v(m_d->ui_disp.spinBox_transp->value());
462 return (v>=100?1.0:(v<=0?0.0:v/100.0));
463}
464
465//____________________________________________________________________
467{
468 return m_d->ui_disp.checkBox_showVolumeOutLines->isChecked();
469}
470
471//____________________________________________________________________
472VP1GeoFlags::MuonChamberAdaptionStyleFlags GeoSysController::muonChamberAdaptionStyle() const
473{
474 VP1GeoFlags::MuonChamberAdaptionStyleFlags f;
475 if (m_d->ui_muon.checkBox_muonadapt_openmdtchambers->isChecked())
477 if (m_d->ui_muon.checkBox_muonadapt_hidetubes->isChecked())
479 if (m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes->isChecked())
481 if (m_d->ui_muon.checkBox_muonadapt_opencscchambers->isChecked())
483 if (m_d->ui_muon.checkBox_muonadapt_opentgcchambers->isChecked())
485 return f;
486}
487
488//void GeoSysController::setAvailableLabels(IVP1System* sys, QStringList providedLabels){
489// messageVerbose("setAvailableLabels for "+sys->name() );
490// if (m_d->labelProvidingSystems.find(sys->name())!=m_d->labelProvidingSystems.end())
491// return;
492// QList<QCheckBox*> checkboxes;
493// for(const QString& label : providedLabels) {
494// QCheckBox *checkbox = new QCheckBox(label, this);
495// checkboxes.append(checkbox);
496// }
497// m_d->labelProvidingSystems[sys->name()]= checkboxes;
499//
500//}
501
502void GeoSysController::setLabelsEnabled(bool t0s, bool hits){
503 // make sure that when labels are enabled, only the systems which we have are enabled too
504 if (t0s) {
505 connect(m_d->ui_disp.groupBox_labels,SIGNAL(toggled(bool)),
506 m_d->ui_disp.checkBox_labels_mooret0s,SLOT(setEnabled(bool)));
507 connect(m_d->ui_disp.groupBox_labels,SIGNAL(toggled(bool)),
508 m_d->ui_disp.checkBox_labels_mboyt0s,SLOT(setEnabled(bool)));
509 } else {
510 m_d->ui_disp.checkBox_labels_mooret0s->setEnabled(false);
511 m_d->ui_disp.checkBox_labels_mboyt0s->setEnabled(false);
512 }
513 if (hits) {
514 connect(m_d->ui_disp.groupBox_labels,SIGNAL(toggled(bool)),
515 m_d->ui_disp.checkBox_labels_hits,SLOT(setEnabled(bool)));
516 } else {
517 m_d->ui_disp.checkBox_labels_hits->setEnabled(false);
518 }
519
520 messageVerbose("setLabelsEnabled() t0s="+str(t0s)+", hits="+str(hits));
521}
522
523
525 if (!m_d->ui_disp.groupBox_labels->isChecked()) return 0;
526 int labels=0;
527 if (m_d->ui_disp.checkBox_labels_names->isChecked()) labels|=0x1;
528 if (m_d->ui_disp.checkBox_labels_mooret0s->isChecked()) labels|=0x2;
529 if (m_d->ui_disp.checkBox_labels_mboyt0s->isChecked()) labels|=0x4;
530 // leaving space for another t0 type, if necessary
531 if (m_d->ui_disp.checkBox_labels_hits->isChecked()) labels|=0x10;
532 return labels;
533}
534
536{
537 QList<int> values;
538 values << m_d->ui_disp.horizontalSlider_labels_xOffset->value();
539 values << m_d->ui_disp.horizontalSlider_labels_yOffset->value();
540 values << m_d->ui_disp.horizontalSlider_labels_zOffset->value();
541 return values;
542}
543
544//____________________________________________________________________
546{
547 messageVerbose("Emitting adaptMuonChambersToEventData()");
549}
550
551//____________________________________________________________________
553{
554 bool pixel(sender()==m_d->ui_misc.toolButton_pixelmod_adapt);
555 bool brl = pixel ? m_d->ui_misc.checkBox_pixelmod_barrel->isChecked()
556 : m_d->ui_misc.checkBox_sctmod_barrel->isChecked();
557 bool ecA = pixel ? m_d->ui_misc.checkBox_pixelmod_endcapA->isChecked()
558 : m_d->ui_misc.checkBox_sctmod_endcapA->isChecked();
559 bool ecC = pixel ? m_d->ui_misc.checkBox_pixelmod_endcapC->isChecked()
560 : m_d->ui_misc.checkBox_sctmod_endcapC->isChecked();
561 bool bcmA = pixel ? m_d->ui_misc.checkBox_bcmMod_Aside->isChecked() : false;
562 bool bcmC = pixel ? m_d->ui_misc.checkBox_bcmMod_Cside->isChecked() : false;
563
564 messageVerbose ("Emitting autoAdaptPixelsOrSCT("+str(pixel)+", "+str(brl)+","+str(ecA)+","+str(ecC)+","+str(bcmA)+","+str(bcmC)+")");
565 emit autoAdaptPixelsOrSCT(pixel,brl,ecA,ecC,bcmA,bcmC);
566}
567
568
569//____________________________________________________________________
571{
572 bool reset = false;
573 if (sender()==m_d->ui_misc.toolButton_nswchambers_reset) {
574 reset = true;
575 }
576 bool stgc = m_d->ui_misc.checkBox_NSW_sTGC->isChecked();
577 bool mm = m_d->ui_misc.checkBox_NSW_MM->isChecked();
578 bool pSp = m_d->ui_misc.checkBox_NSW_Passive_Spacer->isChecked();
579 bool pSt = m_d->ui_misc.checkBox_NSW_Passive_Structure->isChecked();
580 bool pAP = m_d->ui_misc.checkBox_NSW_Passive_APlate->isChecked();
581
582 messageVerbose ("Emitting autoAdaptMuonNSW("+str(reset)+","+str(stgc)+","+str(mm)+")");
583 emit autoAdaptMuonNSW(reset, stgc, mm, pSp, pSt, pAP);
584}
585
586
587
588//____________________________________________________________________
590{
591 bool volname(sender()==m_d->ui_misc.pushButton_iconify_vols_volname
592 ||sender()==m_d->ui_misc.lineEdit_iconify_vols_volname);
593
594 QString name(volname ? m_d->ui_misc.lineEdit_iconify_vols_volname->text()
595 : "" );
596
597 if (name.isEmpty())
598 return;
599 messageVerbose("emitting autoIconifyByVolumeOrMaterialName("+str(!volname)+", "+name+")");
600 emit autoIconifyByVolumeOrMaterialName(!volname,name);
601}
602
603//____________________________________________________________________
605{
606 bool volname(sender()==m_d->ui_misc.pushButton_expand_vols_volname
607 ||sender()==m_d->ui_misc.lineEdit_expand_vols_volname);
608 QString name(volname?m_d->ui_misc.lineEdit_expand_vols_volname->text()
609 :m_d->ui_misc.lineEdit_expand_vols_matname->text());
610 if (name.isEmpty())
611 return;
612 messageVerbose("emitting autoExpandByVolumeOrMaterialName("+str(!volname)+", "+name+")");
613 emit autoExpandByVolumeOrMaterialName(!volname,name);
614}
615
616//____________________________________________________________________
618 bool zap(sender()==m_d->ui_misc.pushButton_nonStandardShapes_Iconify);
619 messageVerbose("emitting actionOnAllNonStandardVolumes("+str(zap)+")");
621}
622
623//____________________________________________________________________
625
641{
642 VP1GeoFlags::SubSystemFlags f;
643 if (sender()==m_d->ui_misc.toolButton_pixelmod_reset)
645 else if (sender()==m_d->ui_misc.toolButton_sctmod_reset)
647 else if (sender()==m_d->ui_muon.pushButton_muonadapt_resetToAllChambers)
649 messageVerbose(" Emitting resetSubSystems("+str(f)+")");
650 emit resetSubSystems(f);
651}
652
653//____________________________________________________________________
655{
656 return 6;
657}
658
659//____________________________________________________________________
661{
662 s.save(m_d->ui_disp.phisectionwidget);//version <=1 saved in old format
663 s.save(m_d->ui_disp.spinBox_transp);
664 s.save(m_d->ui_muon.checkBox_muonadapt_autoadapt);
665 s.save(m_d->ui_muon.checkBox_muonadapt_openmdtchambers);
666 s.save(m_d->ui_muon.checkBox_muonadapt_hidetubes);
667 s.save(m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes);
668 s.save(m_d->ui_muon.checkBox_muonadapt_opencscchambers);
669 s.save(m_d->ui_muon.checkBox_muonadapt_opentgcchambers);
670 s.save(m_d->ui_misc.checkBox_pixelmod_barrel);
671 s.save(m_d->ui_misc.checkBox_pixelmod_endcapA);
672 s.save(m_d->ui_misc.checkBox_pixelmod_endcapC);
673 s.save(m_d->ui_misc.checkBox_sctmod_barrel);
674 s.save(m_d->ui_misc.checkBox_sctmod_endcapA);
675 s.save(m_d->ui_misc.checkBox_sctmod_endcapC);
676 s.save(m_d->ui_disp.widget_drawOptions);
677 s.save(m_d->ui_misc.lineEdit_expand_vols_matname);
678 s.save(m_d->ui_misc.lineEdit_expand_vols_volname);
679 s.save(m_d->ui_int.checkBox_geomselectable);
680 s.save(m_d->ui_int.checkBox_print_shape);
681 s.save(m_d->ui_int.checkBox_print_material);
682 s.save(m_d->ui_int.checkBox_print_transform);
683 s.save(m_d->ui_int.checkBox_print_mass);
684 s.save(m_d->ui_int.checkBox_print_copyno);
685 s.save(m_d->ui_int.checkBox_print_tree);
686 s.save(m_d->ui_int.checkBox_print_muonstationinfo);
687 s.save(m_d->ui_int.checkBox_zoomToVolumes);
688 s.save(m_d->ui_int.checkBox_AutomaticMuonChamberEndViews);
689 s.save(m_d->ui_disp.checkBox_showVolumeOutLines);//version 1+
690 s.save(m_d->ui_misc.checkBox_bcmMod_Aside);//version 3+
691 s.save(m_d->ui_misc.checkBox_bcmMod_Cside);//version 3+
692
693 // labels - version 4+
694 s.save(m_d->ui_disp.groupBox_labels);
695 s.save(m_d->ui_disp.horizontalSlider_labels_xOffset);
696 s.save(m_d->ui_disp.horizontalSlider_labels_yOffset);
697 s.save(m_d->ui_disp.horizontalSlider_labels_zOffset);
698 s.save(m_d->ui_disp.checkBox_labels_names);
699 //version 5+
700 s.save(m_d->ui_disp.checkBox_labels_mboyt0s);
701 s.save(m_d->ui_disp.checkBox_labels_mooret0s);
702 s.save(m_d->ui_disp.checkBox_labels_hits);
703 // version >=6
704 s.save(m_d->ui_misc.checkBox_NSW_MM);
705 s.save(m_d->ui_misc.checkBox_NSW_sTGC);
706 s.save(m_d->ui_misc.checkBox_NSW_Passive_Spacer);
707 s.save(m_d->ui_misc.checkBox_NSW_Passive_Structure);
708 s.save(m_d->ui_misc.checkBox_NSW_Passive_APlate);
709
710
711 s.ignoreWidget(m_d->ui_disp.matButton_lastSel);
712 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*>::const_iterator it,itE(m_d->subSysCheckBoxMap.end());
713 for (it=m_d->subSysCheckBoxMap.begin();it!=itE;++it)
714 s.ignoreWidget(it->second);
715}
716
717//____________________________________________________________________
719{
720 if (s.version()<0||s.version()>currentSettingsVersion()) {
721 message("Warning: State data in .vp1 file has unsupported version ("+str(s.version())+")");
722 return;
723 }
724
725 if (s.version()<=1) {
726 s.ignoreObsoletePhiSectionWidgetState();
727 s.ignoreWidget(m_d->ui_disp.phisectionwidget);
728 } else {
729 s.restore(m_d->ui_disp.phisectionwidget);
730 }
731 s.restore(m_d->ui_disp.spinBox_transp);
732 s.restore(m_d->ui_muon.checkBox_muonadapt_autoadapt);
733 s.restore(m_d->ui_muon.checkBox_muonadapt_openmdtchambers);
734 s.restore(m_d->ui_muon.checkBox_muonadapt_hidetubes);
735 s.restore(m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes);
736 s.restore(m_d->ui_muon.checkBox_muonadapt_opencscchambers);
737 s.restore(m_d->ui_muon.checkBox_muonadapt_opentgcchambers);
738 s.restore(m_d->ui_misc.checkBox_pixelmod_barrel);
739 s.restore(m_d->ui_misc.checkBox_pixelmod_endcapA);
740 s.restore(m_d->ui_misc.checkBox_pixelmod_endcapC);
741 s.restore(m_d->ui_misc.checkBox_sctmod_barrel);
742 s.restore(m_d->ui_misc.checkBox_sctmod_endcapA);
743 s.restore(m_d->ui_misc.checkBox_sctmod_endcapC);
744 s.restore(m_d->ui_disp.widget_drawOptions);
745 s.restore(m_d->ui_misc.lineEdit_expand_vols_matname);
746 s.restore(m_d->ui_misc.lineEdit_expand_vols_volname);
747 s.restore(m_d->ui_int.checkBox_geomselectable);
748 s.restore(m_d->ui_int.checkBox_print_shape);
749 s.restore(m_d->ui_int.checkBox_print_material);
750 s.restore(m_d->ui_int.checkBox_print_transform);
751 s.restore(m_d->ui_int.checkBox_print_mass);
752 s.restore(m_d->ui_int.checkBox_print_copyno);
753 s.restore(m_d->ui_int.checkBox_print_tree);
754 s.restore(m_d->ui_int.checkBox_print_muonstationinfo);
755 s.restore(m_d->ui_int.checkBox_zoomToVolumes);
756 s.restore(m_d->ui_int.checkBox_AutomaticMuonChamberEndViews);
757 if (s.version()>=1)
758 s.restore(m_d->ui_disp.checkBox_showVolumeOutLines);
759
760 if (s.version()>=3) {
761 s.restore(m_d->ui_misc.checkBox_bcmMod_Aside);
762 s.restore(m_d->ui_misc.checkBox_bcmMod_Cside);
763 }
764
765 // labels
766 if (s.version()>=4){
767 s.restore(m_d->ui_disp.groupBox_labels);
768 s.restore(m_d->ui_disp.horizontalSlider_labels_xOffset);
769 s.restore(m_d->ui_disp.horizontalSlider_labels_yOffset);
770 s.restore(m_d->ui_disp.horizontalSlider_labels_zOffset);
771 s.restore(m_d->ui_disp.checkBox_labels_names);
772 }
773 if (s.version()>=5){
774 s.restore(m_d->ui_disp.checkBox_labels_mboyt0s);
775 s.restore(m_d->ui_disp.checkBox_labels_mooret0s);
776 s.restore(m_d->ui_disp.checkBox_labels_hits);
777 }
778 if (s.version()>=6){
779 s.restore(m_d->ui_misc.checkBox_NSW_MM);
780 s.restore(m_d->ui_misc.checkBox_NSW_sTGC);
781 s.restore(m_d->ui_misc.checkBox_NSW_Passive_Spacer);
782 s.restore(m_d->ui_misc.checkBox_NSW_Passive_Structure);
783 s.restore(m_d->ui_misc.checkBox_NSW_Passive_APlate);
784 }
785
786 s.ignoreWidget(m_d->ui_disp.matButton_lastSel);
787 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*>::const_iterator it,itE(m_d->subSysCheckBoxMap.end());
788 for (it=m_d->subSysCheckBoxMap.begin();it!=itE;++it)
789 s.ignoreWidget(it->second);
790
791 m_d->ui_int.groupBox_printOnSelection->setEnabled(m_d->ui_int.checkBox_geomselectable->isChecked());
792 m_d->ui_int.groupBox_automaticViewReorientations->setEnabled(m_d->ui_int.checkBox_geomselectable->isChecked());
793
794}
795
797// Test for possible changes in values and emit signals as appropriate:
798// (possibleChange_XXX() slots code provided by macros)
799#define VP1CONTROLLERCLASSNAME GeoSysController
801POSSIBLECHANGE_IMP(transparency)
802POSSIBLECHANGE_IMP(showVolumeOutLines)
803POSSIBLECHANGE_IMP(muonChamberAdaptionStyle)
804POSSIBLECHANGE_IMP(labels)
805POSSIBLECHANGE_IMP(labelPosOffset)
806
807
808
#define POSSIBLECHANGE_IMP(x)
Ui::GeoSysSettingsMuonChamberForm ui_muon
QList< int > last_labelPosOffset
needed for POSSIBLECHANGE_IMP macro.
Ui::GeometrySystemControllerForm ui
int last_labels
needed for POSSIBLECHANGE_IMP macro.
std::map< VP1GeoFlags::SubSystemFlag, QCheckBox * > subSysCheckBoxMap
Ui::GeoSysSettingsMiscForm ui_misc
Ui::GeoSysSettingsIconisedVolumesForm ui_iconisedvols
Ui::GeoSysSettingsTreeBrowserForm ui_treebrowser
VolumeHandle * lastSelectedVolHandle
VP1GeoFlags::MuonChamberAdaptionStyleFlags last_muonChamberAdaptionStyle
Ui::GeoSysSettingsInteractionsForm ui_int
ZappedVolumeListModel * zappedVolumeListModel
GeoSysController * theclass
Ui::GeoSysSettingsDisplayForm ui_disp
bool printInfoOnClick_Transform() const
void adaptMuonChambersToEventData()
void possibleChange_labels()
void loadMaterialsFromFile(QString)
void possibleChange_muonChamberAdaptionStyle()
void autoAdaptMuonNSW(bool, bool, bool, bool, bool, bool)
void setGeometrySelectable(bool)
void emit_resetSubSystems()
Reset to the sub-system top volume.
bool showVolumeOutLines() const
int currentSettingsVersion() const
bool printInfoOnClick_Tree() const
bool printInfoOnClick_Shape() const
void actionOnAllNonStandardVolumes(bool)
SoPickStyle * pickStyle() const
VP1GeoFlags::MuonChamberAdaptionStyleFlags muonChamberAdaptionStyle() const
GeoSysController(IVP1System *sys)
void emit_autoIconifyByVolumeOrMaterialName()
void emit_actionOnAllNonStandardVolumes()
void possibleChange_transparency()
bool autoAdaptMuonChambersToEventData() const
VolumeHandle * lastSelectedVolume() const
void actualRestoreSettings(VP1Deserialise &)
bool printInfoOnClick_MuonStationInfo() const
void autoIconifyByVolumeOrMaterialName(bool, QString)
void possibleChange_showVolumeOutLines()
void setAutoAdaptMuonChambersToEventData(bool)
ZappedVolumeListModel * zappedVolumeListModel() const
void setZoomToVolumeOnClick(bool)
void setLabelsEnabled(bool t0s, bool hits)
controls whether the checkboxes are enabled or not.
bool printInfoOnClick_CopyNumber() const
VP1GeoTreeView * volumeTreeBrowser() const
PhiSectionWidget * phiSectionWidget() const
QList< int > labelPosOffset()
Offset in x,y,z.
bool orientViewToMuonChambersOnClick() const
void resetSubSystems(VP1GeoFlags::SubSystemFlags)
bool printInfoOnClick_Mass() const
bool zoomToVolumeOnClick() const
SoGroup * drawOptions() const
QCheckBox * subSystemCheckBox(VP1GeoFlags::SubSystemFlag) const
void autoAdaptPixelsOrSCT(bool, bool, bool, bool, bool, bool)
void possibleChange_labelPosOffset()
void setLastSelectedVolume(VolumeHandle *)
void saveMaterialsToFile(QString, bool)
void autoExpandByVolumeOrMaterialName(bool, QString)
void actualSaveSettings(VP1Serialise &) const
void emit_adaptMuonChambersToEventData()
void emit_autoExpandByVolumeOrMaterialName()
void setComplexity(double)
bool printInfoOnClick_Material() const
float transparency() const
void setOrientViewToMuonChambersOnClick(bool)
void initDialog(T &theUI, QPushButton *launchbutton, QAbstractButton *enabledButton=0)
void connectToLastUpdateSlot(QObject *sender, const char *signal)
const char * addUpdateSlot(const char *slot)
VP1Controller(IVP1System *sys, const QString &classname)
@ MuonEndcapStationTGC
Definition VP1GeoFlags.h:47
@ AllUnrecognisedVolumes
Definition VP1GeoFlags.h:73
@ MuonEndcapStationNSW
Definition VP1GeoFlags.h:65
@ MuonBarrelStationInner
Definition VP1GeoFlags.h:42
@ MuonBarrelStationMiddle
Definition VP1GeoFlags.h:44
@ MuonBarrelStationOuter
Definition VP1GeoFlags.h:45
@ MuonEndcapStationCSC
Definition VP1GeoFlags.h:46
@ MuonEndcapStationMDT
Definition VP1GeoFlags.h:49
void messageVerbose(const QString &) const
void message(const QString &) const
static bool hasTileGeometry()
static bool hasTRTGeometry()
static bool hasInDetServiceMaterialGeometry()
static bool hasMuonNSWGeometry()
static bool hasLArGeometry()
static bool hasGeoModelExperiment()
static bool hasPixelGeometry()
static bool hasSCTGeometry()
static bool hasITkGeometry()
static bool hasMuonGeometry()
static QString defaultFileSelectDirectory()
SoMaterial * material()