ATLAS Offline Software
Loading...
Searching...
No Matches
GeoSysController.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 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()
111 m_d->ui_misc.groupBox_pixelactivemodules->setVisible(VP1JobConfigInfo::hasPixelGeometry());
112 m_d->ui_misc.groupBox_sctactivemodules->setVisible(VP1JobConfigInfo::hasSCTGeometry());
113 m_d->ui.groupBox_calorimeters->setVisible(VP1JobConfigInfo::hasLArGeometry()
115 m_d->ui.groupBox_muonsystems->setVisible(VP1JobConfigInfo::hasMuonGeometry());
116 m_d->ui.pushButton_settings_muonchambers->setEnabled(VP1JobConfigInfo::hasMuonGeometry());
117 m_d->ui_int.checkBox_print_muonstationinfo->setVisible(VP1JobConfigInfo::hasMuonGeometry());
118 m_d->ui_muon.groupBox_muonchamberconfig->setVisible(VP1JobConfigInfo::hasMuonGeometry());
119 m_d->ui_misc.groupBox_show_NSW_chambers->setVisible(VP1JobConfigInfo::hasMuonNSWGeometry());
120 m_d->ui_int.checkBox_AutomaticMuonChamberEndViews->setVisible(VP1JobConfigInfo::hasMuonGeometry());
121 }
122 #endif
123
124
125 m_d->zappedVolumeListModel = new ZappedVolumeListModel(m_d->ui_iconisedvols.listView_iconisedvolumes);
126 m_d->ui_iconisedvols.listView_iconisedvolumes->setUniformItemSizes(true);
127 m_d->ui_iconisedvols.listView_iconisedvolumes->setSelectionMode(QAbstractItemView::ExtendedSelection);
128 m_d->ui_iconisedvols.listView_iconisedvolumes->setModel(m_d->zappedVolumeListModel);
129
130 connect(m_d->ui_iconisedvols.listView_iconisedvolumes,SIGNAL(activated(const QModelIndex&)),
131 m_d->zappedVolumeListModel,SLOT(activated(const QModelIndex&)));
132
134 // Setup connections which monitor changes in the controller so that we may emit signals as appropriate: //
136
138 connectToLastUpdateSlot(m_d->ui_int.checkBox_geomselectable);
139
141 connectToLastUpdateSlot(m_d->ui_disp.checkBox_showVolumeOutLines);
142
144 connectToLastUpdateSlot(m_d->ui_disp.spinBox_transp);
145
147 connectToLastUpdateSlot(m_d->ui_muon.checkBox_muonadapt_openmdtchambers);
148 connectToLastUpdateSlot(m_d->ui_muon.checkBox_muonadapt_hidetubes);
149 connectToLastUpdateSlot(m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes);
150 connectToLastUpdateSlot(m_d->ui_muon.checkBox_muonadapt_opencscchambers);
151 connectToLastUpdateSlot(m_d->ui_muon.checkBox_muonadapt_opentgcchambers);
152
153 initLastVars();
154
155 //Connections for state-less signals:
156
157 connect(m_d->ui_disp.pushButton_saveChangedMaterials,SIGNAL(clicked()),this,SLOT(saveMaterialsRequested()));
158 connect(m_d->ui_disp.pushButton_loadMaterials,SIGNAL(clicked()),this,SLOT(loadMaterialsRequested()));
159
160 connect(m_d->ui_misc.pushButton_nonStandardShapes_Iconify,SIGNAL(clicked()),
162 connect(m_d->ui_misc.pushButton_nonStandardShapes_Expand,SIGNAL(clicked()),
164
165 // Expand volumes based on Material
166 connect(m_d->ui_misc.lineEdit_expand_vols_matname,SIGNAL(returnPressed()),this,SLOT(emit_autoExpandByVolumeOrMaterialName()));
167 connect(m_d->ui_misc.pushButton_expand_vols_matname,SIGNAL(clicked()),this,SLOT(emit_autoExpandByVolumeOrMaterialName()));
168
169 // Expand volumes based on Name
170 connect(m_d->ui_misc.lineEdit_expand_vols_volname,SIGNAL(returnPressed()),this,SLOT(emit_autoExpandByVolumeOrMaterialName()));
171 connect(m_d->ui_misc.pushButton_expand_vols_volname,SIGNAL(clicked()),this,SLOT(emit_autoExpandByVolumeOrMaterialName()));
172
173 // Iconify/Zap volumes based on Name
174 connect(m_d->ui_misc.lineEdit_iconify_vols_volname,SIGNAL(returnPressed()),this,SLOT(emit_autoIconifyByVolumeOrMaterialName()));
175 connect(m_d->ui_misc.pushButton_iconify_vols_volname,SIGNAL(clicked()),this,SLOT(emit_autoIconifyByVolumeOrMaterialName()));
176
177 connect(m_d->ui_muon.pushButton_muonadapt_adapttoevtdata,SIGNAL(clicked()),this,SLOT(emit_adaptMuonChambersToEventData()));
178
179 connect(m_d->ui_misc.toolButton_pixelmod_adapt,SIGNAL(clicked(bool)),this,SLOT(emit_autoAdaptPixelsOrSCT()));
180 connect(m_d->ui_misc.toolButton_sctmod_adapt,SIGNAL(clicked(bool)),this,SLOT(emit_autoAdaptPixelsOrSCT()));
181
182 connect(m_d->ui_misc.toolButton_nswchambers_adapt,SIGNAL(clicked(bool)),this,SLOT(emit_autoAdaptMuonNSW()));
183 connect(m_d->ui_misc.toolButton_nswchambers_reset,SIGNAL(clicked(bool)),this,SLOT(emit_autoAdaptMuonNSW()));
184
185 connect(m_d->ui_misc.toolButton_pixelmod_reset,SIGNAL(clicked(bool)),this,SLOT(emit_resetSubSystems()));
186 connect(m_d->ui_misc.toolButton_sctmod_reset,SIGNAL(clicked(bool)),this,SLOT(emit_resetSubSystems()));
187 connect(m_d->ui_muon.pushButton_muonadapt_resetToAllChambers,SIGNAL(clicked()),this,SLOT(emit_resetSubSystems()));
188
190
191 // INNER DETECTOR
192 m_d->subSysCheckBoxMap[VP1GeoFlags::Pixel] = m_d->ui.checkBox_Pixel;
193 m_d->subSysCheckBoxMap[VP1GeoFlags::SCT] = m_d->ui.checkBox_SCT;
194 m_d->subSysCheckBoxMap[VP1GeoFlags::TRT] = m_d->ui.checkBox_TRT;
195 m_d->subSysCheckBoxMap[VP1GeoFlags::InDetServMat] = m_d->ui.checkBox_InDetServMat;
196
197 // CALO
198 m_d->subSysCheckBoxMap[VP1GeoFlags::LAr] = m_d->ui.checkBox_LAr;
199 m_d->subSysCheckBoxMap[VP1GeoFlags::Tile] = m_d->ui.checkBox_Tile;
200
201 // MUON TOROID
202 m_d->subSysCheckBoxMap[VP1GeoFlags::BarrelToroid] = m_d->ui.checkBox_MuonBarrelToroid;
203 m_d->subSysCheckBoxMap[VP1GeoFlags::ToroidECA] = m_d->ui.checkBox_MuonECAToroid;
204 // m_d->subSysCheckBoxMap[VP1GeoFlags::ToroidECC] = m_d->ui.checkBox_MuonECCToroid;
205 // MUON MISC
206 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonFeet] = m_d->ui.checkBox_MuonFeet;
207 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonShielding] = m_d->ui.checkBox_MuonShielding;
208 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonToroidsEtc] = m_d->ui.checkBox_MuonEtc; // this is the "Services" checkbox in the GUI
209 // MUON CHAMBERS
210 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonEndcapStationCSC] = m_d->ui.checkBox_MuonEndcapStationCSC;
211 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonEndcapStationTGC] = m_d->ui.checkBox_MuonEndcapStationTGC;
212 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonEndcapStationMDT] = m_d->ui.checkBox_MuonEndcapStationMDT;
213 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonEndcapStationNSW] = m_d->ui.checkBox_NSW;
214 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonBarrelStationInner] = m_d->ui.checkBox_MuonBarrelStationInner;
215 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonBarrelStationMiddle] = m_d->ui.checkBox_MuonBarrelStationMiddle;
216 m_d->subSysCheckBoxMap[VP1GeoFlags::MuonBarrelStationOuter] = m_d->ui.checkBox_MuonBarrelStationOuter;
217
218 // MISCELLANEOUS
219 m_d->subSysCheckBoxMap[VP1GeoFlags::CavernInfra] = m_d->ui.checkBox_CavernInfra;
220 m_d->subSysCheckBoxMap[VP1GeoFlags::BeamPipe] = m_d->ui.checkBox_BeamPipe;
221 m_d->subSysCheckBoxMap[VP1GeoFlags::LUCID] = m_d->ui.checkBox_LUCID;
222 m_d->subSysCheckBoxMap[VP1GeoFlags::ZDC] = m_d->ui.checkBox_ZDC;
223 m_d->subSysCheckBoxMap[VP1GeoFlags::ALFA] = m_d->ui.checkBox_ALFA;
224 m_d->subSysCheckBoxMap[VP1GeoFlags::AFP] = m_d->ui.checkBox_AFP;
225 m_d->subSysCheckBoxMap[VP1GeoFlags::ForwardRegion] = m_d->ui.checkBox_ForwardRegion;
226 // OTHER
227 m_d->subSysCheckBoxMap[VP1GeoFlags::AllUnrecognisedVolumes] = m_d->ui.checkBox_other;
228
229 // -> labels
231 connectToLastUpdateSlot(m_d->ui_disp.groupBox_labels);
232 connectToLastUpdateSlot(m_d->ui_disp.checkBox_labels_names);
233 connectToLastUpdateSlot(m_d->ui_disp.checkBox_labels_mooret0s);
234 connectToLastUpdateSlot(m_d->ui_disp.checkBox_labels_mboyt0s);
235 connectToLastUpdateSlot(m_d->ui_disp.checkBox_labels_hits);
236
238 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_labels_xOffset);
239 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_labels_yOffset);
240 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_labels_zOffset);
241
242 m_d->last_labels=0;
243}
244
245//____________________________________________________________________
247{
248 m_d->pickStyle->unref();
249 delete m_d;
250}
251
252//____________________________________________________________________
254{
255 m_d->ui_int.checkBox_geomselectable->setChecked(b);
257}
258
259//____________________________________________________________________
261{
262 m_d->ui_disp.widget_drawOptions->setComplexity(c);
263}
264
265//____________________________________________________________________
267{
268 m_d->ui_int.checkBox_zoomToVolumes->setChecked(b);
269}
270
271//____________________________________________________________________
273{
274 m_d->ui_int.checkBox_AutomaticMuonChamberEndViews->setChecked(b);
275}
276
277//____________________________________________________________________
279{
280 m_d->ui_muon.checkBox_muonadapt_autoadapt->setChecked(b);
281}
282
283//____________________________________________________________________
285{
286 m_d->lastSelectedVolHandle = vh;
287 m_d->ui_disp.matButton_lastSel->setEnabled(vh!=0);
288 if (vh) {
289 QList<SoMaterial*> mats = m_d->ui_disp.matButton_lastSel->handledMaterials();
290 if (mats.isEmpty()||mats.at(0)!=vh->material()) {
291 m_d->ui_disp.matButton_lastSel->clearHandledMaterials();
292 m_d->ui_disp.matButton_lastSel->setMaterial(vh->material());
293 }
294 } else {
295 m_d->ui_disp.matButton_lastSel->clearHandledMaterials();
296 }
297}
298
299//____________________________________________________________________
301{
302 return m_d->lastSelectedVolHandle;
303}
304
305//____________________________________________________________________
307{
308 const bool ctrl_isdown = (Qt::ControlModifier & QApplication::keyboardModifiers());
309 const bool onlyChangedMaterials = !ctrl_isdown;
310
311 QString filename
312 = QFileDialog::getSaveFileName(this, "Select geometry material file to save",
313 (m_d->lastSaveMaterialsFile.isEmpty()?
315 :m_d->lastSaveMaterialsFile),
316 "VP1 geometry material files (*.vp1geomat)",
317 0,QFileDialog::DontResolveSymlinks);
318
319 if(filename.isEmpty())
320 return;
321
322 if (!filename.endsWith(".vp1geomat"))
323 filename += ".vp1geomat";
324
325 m_d->lastSaveMaterialsFile = filename;
326
327 messageVerbose("Emitting saveMaterialsToFile(\""+filename+"\","+str(onlyChangedMaterials)+")");
328 emit saveMaterialsToFile(filename,onlyChangedMaterials);
329
330}
331
332//____________________________________________________________________
334{
335 QString filename = QFileDialog::getOpenFileName(this, "Select geometry material file to load",
336 (m_d->lastLoadMaterialsFile.isEmpty()?
338 :m_d->lastLoadMaterialsFile),
339 "VP1 geometry material files (*.vp1geomat)",
340 0,QFileDialog::DontResolveSymlinks);
341 if(filename.isEmpty())
342 return;
343
344 m_d->lastLoadMaterialsFile = filename;
345
346 messageVerbose("Emitting loadMaterialsFromFile(\""+filename+"\")");
347 emit loadMaterialsFromFile(filename);
348}
349
350//____________________________________________________________________
352{
353 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*>::const_iterator it = m_d->subSysCheckBoxMap.find(f);
354 return it==m_d->subSysCheckBoxMap.end() ? 0 : it->second;
355}
356
357//____________________________________________________________________
359{
360 return m_d->ui_disp.widget_drawOptions->drawOptionsGroup();
361}
362
363//____________________________________________________________________
364SoPickStyle * GeoSysController::pickStyle() const
365{
366 return m_d->pickStyle;
367}
368
369//____________________________________________________________________
371{
372 return m_d->ui_treebrowser.treeView_volumebrowser;
373}
374
375//____________________________________________________________________
377{
378 return m_d->ui_disp.phisectionwidget;
379}
380
381//____________________________________________________________________
383{
384 return m_d->zappedVolumeListModel;
385}
386
387//____________________________________________________________________
389{
390 return m_d->ui_int.checkBox_zoomToVolumes->isChecked();
391}
392
393//____________________________________________________________________
395{
396 return m_d->ui_int.checkBox_AutomaticMuonChamberEndViews->isChecked();
397}
398
399//____________________________________________________________________
401{
402 return m_d->ui_int.checkBox_print_shape->isChecked();
403}
404
405//____________________________________________________________________
407{
408 return m_d->ui_int.checkBox_print_material->isChecked();
409}
410
411//____________________________________________________________________
413{
414 return m_d->ui_int.checkBox_print_copyno->isChecked();
415}
416
417//____________________________________________________________________
419{
420 return m_d->ui_int.checkBox_print_transform->isChecked();
421}
422
423//____________________________________________________________________
425{
426 return m_d->ui_int.checkBox_print_tree->isChecked();
427}
428
429//____________________________________________________________________
431{
432 return m_d->ui_int.checkBox_print_mass->isChecked();
433}
434
435//____________________________________________________________________
437{
438 return m_d->ui_int.checkBox_print_muonstationinfo->isChecked();
439}
440
441//____________________________________________________________________
443{
444 return m_d->ui_muon.checkBox_muonadapt_autoadapt->isChecked();
445}
446
447//_____________________________________________________________________________________
449{
450 m_d->pickStyle->style = m_d->ui_int.checkBox_geomselectable->isChecked()
451 ? SoPickStyle::SHAPE : SoPickStyle::UNPICKABLE;
452}
453
454//____________________________________________________________________
456{
457 int v(m_d->ui_disp.spinBox_transp->value());
458 return (v>=100?1.0:(v<=0?0.0:v/100.0));
459}
460
461//____________________________________________________________________
463{
464 return m_d->ui_disp.checkBox_showVolumeOutLines->isChecked();
465}
466
467//____________________________________________________________________
468VP1GeoFlags::MuonChamberAdaptionStyleFlags GeoSysController::muonChamberAdaptionStyle() const
469{
470 VP1GeoFlags::MuonChamberAdaptionStyleFlags f;
471 if (m_d->ui_muon.checkBox_muonadapt_openmdtchambers->isChecked())
473 if (m_d->ui_muon.checkBox_muonadapt_hidetubes->isChecked())
475 if (m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes->isChecked())
477 if (m_d->ui_muon.checkBox_muonadapt_opencscchambers->isChecked())
479 if (m_d->ui_muon.checkBox_muonadapt_opentgcchambers->isChecked())
481 return f;
482}
483
484//void GeoSysController::setAvailableLabels(IVP1System* sys, QStringList providedLabels){
485// messageVerbose("setAvailableLabels for "+sys->name() );
486// if (m_d->labelProvidingSystems.find(sys->name())!=m_d->labelProvidingSystems.end())
487// return;
488// QList<QCheckBox*> checkboxes;
489// for(const QString& label : providedLabels) {
490// QCheckBox *checkbox = new QCheckBox(label, this);
491// checkboxes.append(checkbox);
492// }
493// m_d->labelProvidingSystems[sys->name()]= checkboxes;
495//
496//}
497
498void GeoSysController::setLabelsEnabled(bool t0s, bool hits){
499 // make sure that when labels are enabled, only the systems which we have are enabled too
500 if (t0s) {
501 connect(m_d->ui_disp.groupBox_labels,SIGNAL(toggled(bool)),
502 m_d->ui_disp.checkBox_labels_mooret0s,SLOT(setEnabled(bool)));
503 connect(m_d->ui_disp.groupBox_labels,SIGNAL(toggled(bool)),
504 m_d->ui_disp.checkBox_labels_mboyt0s,SLOT(setEnabled(bool)));
505 } else {
506 m_d->ui_disp.checkBox_labels_mooret0s->setEnabled(false);
507 m_d->ui_disp.checkBox_labels_mboyt0s->setEnabled(false);
508 }
509 if (hits) {
510 connect(m_d->ui_disp.groupBox_labels,SIGNAL(toggled(bool)),
511 m_d->ui_disp.checkBox_labels_hits,SLOT(setEnabled(bool)));
512 } else {
513 m_d->ui_disp.checkBox_labels_hits->setEnabled(false);
514 }
515
516 messageVerbose("setLabelsEnabled() t0s="+str(t0s)+", hits="+str(hits));
517}
518
519
521 if (!m_d->ui_disp.groupBox_labels->isChecked()) return 0;
522 int labels=0;
523 if (m_d->ui_disp.checkBox_labels_names->isChecked()) labels|=0x1;
524 if (m_d->ui_disp.checkBox_labels_mooret0s->isChecked()) labels|=0x2;
525 if (m_d->ui_disp.checkBox_labels_mboyt0s->isChecked()) labels|=0x4;
526 // leaving space for another t0 type, if necessary
527 if (m_d->ui_disp.checkBox_labels_hits->isChecked()) labels|=0x10;
528 return labels;
529}
530
532{
533 QList<int> values;
534 values << m_d->ui_disp.horizontalSlider_labels_xOffset->value();
535 values << m_d->ui_disp.horizontalSlider_labels_yOffset->value();
536 values << m_d->ui_disp.horizontalSlider_labels_zOffset->value();
537 return values;
538}
539
540//____________________________________________________________________
542{
543 messageVerbose("Emitting adaptMuonChambersToEventData()");
545}
546
547//____________________________________________________________________
549{
550 bool pixel(sender()==m_d->ui_misc.toolButton_pixelmod_adapt);
551 bool brl = pixel ? m_d->ui_misc.checkBox_pixelmod_barrel->isChecked()
552 : m_d->ui_misc.checkBox_sctmod_barrel->isChecked();
553 bool ecA = pixel ? m_d->ui_misc.checkBox_pixelmod_endcapA->isChecked()
554 : m_d->ui_misc.checkBox_sctmod_endcapA->isChecked();
555 bool ecC = pixel ? m_d->ui_misc.checkBox_pixelmod_endcapC->isChecked()
556 : m_d->ui_misc.checkBox_sctmod_endcapC->isChecked();
557 bool bcmA = pixel ? m_d->ui_misc.checkBox_bcmMod_Aside->isChecked() : false;
558 bool bcmC = pixel ? m_d->ui_misc.checkBox_bcmMod_Cside->isChecked() : false;
559
560 messageVerbose ("Emitting autoAdaptPixelsOrSCT("+str(pixel)+", "+str(brl)+","+str(ecA)+","+str(ecC)+","+str(bcmA)+","+str(bcmC)+")");
561 emit autoAdaptPixelsOrSCT(pixel,brl,ecA,ecC,bcmA,bcmC);
562}
563
564
565//____________________________________________________________________
567{
568 bool reset = false;
569 if (sender()==m_d->ui_misc.toolButton_nswchambers_reset) {
570 reset = true;
571 }
572 bool stgc = m_d->ui_misc.checkBox_NSW_sTGC->isChecked();
573 bool mm = m_d->ui_misc.checkBox_NSW_MM->isChecked();
574 bool pSp = m_d->ui_misc.checkBox_NSW_Passive_Spacer->isChecked();
575 bool pSt = m_d->ui_misc.checkBox_NSW_Passive_Structure->isChecked();
576 bool pAP = m_d->ui_misc.checkBox_NSW_Passive_APlate->isChecked();
577
578 messageVerbose ("Emitting autoAdaptPixelsOrSCT("+str(reset)+","+str(stgc)+","+str(mm)+")");
579 emit autoAdaptMuonNSW(reset, stgc, mm, pSp, pSt, pAP);
580}
581
582
583
584//____________________________________________________________________
586{
587 bool volname(sender()==m_d->ui_misc.pushButton_iconify_vols_volname
588 ||sender()==m_d->ui_misc.lineEdit_iconify_vols_volname);
589
590 QString name(volname ? m_d->ui_misc.lineEdit_iconify_vols_volname->text()
591 : "" );
592
593 if (name.isEmpty())
594 return;
595 messageVerbose("emitting autoIconifyByVolumeOrMaterialName("+str(!volname)+", "+name+")");
596 emit autoIconifyByVolumeOrMaterialName(!volname,name);
597}
598
599//____________________________________________________________________
601{
602 bool volname(sender()==m_d->ui_misc.pushButton_expand_vols_volname
603 ||sender()==m_d->ui_misc.lineEdit_expand_vols_volname);
604 QString name(volname?m_d->ui_misc.lineEdit_expand_vols_volname->text()
605 :m_d->ui_misc.lineEdit_expand_vols_matname->text());
606 if (name.isEmpty())
607 return;
608 messageVerbose("emitting autoExpandByVolumeOrMaterialName("+str(!volname)+", "+name+")");
609 emit autoExpandByVolumeOrMaterialName(!volname,name);
610}
611
612//____________________________________________________________________
614 bool zap(sender()==m_d->ui_misc.pushButton_nonStandardShapes_Iconify);
615 messageVerbose("emitting actionOnAllNonStandardVolumes("+str(zap)+")");
617}
618
619//____________________________________________________________________
621
637{
638 VP1GeoFlags::SubSystemFlags f;
639 if (sender()==m_d->ui_misc.toolButton_pixelmod_reset)
641 else if (sender()==m_d->ui_misc.toolButton_sctmod_reset)
643 else if (sender()==m_d->ui_muon.pushButton_muonadapt_resetToAllChambers)
645 messageVerbose(" Emitting resetSubSystems("+str(f)+")");
646 emit resetSubSystems(f);
647}
648
649//____________________________________________________________________
651{
652 return 6;
653}
654
655//____________________________________________________________________
657{
658 s.save(m_d->ui_disp.phisectionwidget);//version <=1 saved in old format
659 s.save(m_d->ui_disp.spinBox_transp);
660 s.save(m_d->ui_muon.checkBox_muonadapt_autoadapt);
661 s.save(m_d->ui_muon.checkBox_muonadapt_openmdtchambers);
662 s.save(m_d->ui_muon.checkBox_muonadapt_hidetubes);
663 s.save(m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes);
664 s.save(m_d->ui_muon.checkBox_muonadapt_opencscchambers);
665 s.save(m_d->ui_muon.checkBox_muonadapt_opentgcchambers);
666 s.save(m_d->ui_misc.checkBox_pixelmod_barrel);
667 s.save(m_d->ui_misc.checkBox_pixelmod_endcapA);
668 s.save(m_d->ui_misc.checkBox_pixelmod_endcapC);
669 s.save(m_d->ui_misc.checkBox_sctmod_barrel);
670 s.save(m_d->ui_misc.checkBox_sctmod_endcapA);
671 s.save(m_d->ui_misc.checkBox_sctmod_endcapC);
672 s.save(m_d->ui_disp.widget_drawOptions);
673 s.save(m_d->ui_misc.lineEdit_expand_vols_matname);
674 s.save(m_d->ui_misc.lineEdit_expand_vols_volname);
675 s.save(m_d->ui_int.checkBox_geomselectable);
676 s.save(m_d->ui_int.checkBox_print_shape);
677 s.save(m_d->ui_int.checkBox_print_material);
678 s.save(m_d->ui_int.checkBox_print_transform);
679 s.save(m_d->ui_int.checkBox_print_mass);
680 s.save(m_d->ui_int.checkBox_print_copyno);
681 s.save(m_d->ui_int.checkBox_print_tree);
682 s.save(m_d->ui_int.checkBox_print_muonstationinfo);
683 s.save(m_d->ui_int.checkBox_zoomToVolumes);
684 s.save(m_d->ui_int.checkBox_AutomaticMuonChamberEndViews);
685 s.save(m_d->ui_disp.checkBox_showVolumeOutLines);//version 1+
686 s.save(m_d->ui_misc.checkBox_bcmMod_Aside);//version 3+
687 s.save(m_d->ui_misc.checkBox_bcmMod_Cside);//version 3+
688
689 // labels - version 4+
690 s.save(m_d->ui_disp.groupBox_labels);
691 s.save(m_d->ui_disp.horizontalSlider_labels_xOffset);
692 s.save(m_d->ui_disp.horizontalSlider_labels_yOffset);
693 s.save(m_d->ui_disp.horizontalSlider_labels_zOffset);
694 s.save(m_d->ui_disp.checkBox_labels_names);
695 //version 5+
696 s.save(m_d->ui_disp.checkBox_labels_mboyt0s);
697 s.save(m_d->ui_disp.checkBox_labels_mooret0s);
698 s.save(m_d->ui_disp.checkBox_labels_hits);
699 // version >=6
700 s.save(m_d->ui_misc.checkBox_NSW_MM);
701 s.save(m_d->ui_misc.checkBox_NSW_sTGC);
702 s.save(m_d->ui_misc.checkBox_NSW_Passive_Spacer);
703 s.save(m_d->ui_misc.checkBox_NSW_Passive_Structure);
704 s.save(m_d->ui_misc.checkBox_NSW_Passive_APlate);
705
706
707 s.ignoreWidget(m_d->ui_disp.matButton_lastSel);
708 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*>::const_iterator it,itE(m_d->subSysCheckBoxMap.end());
709 for (it=m_d->subSysCheckBoxMap.begin();it!=itE;++it)
710 s.ignoreWidget(it->second);
711}
712
713//____________________________________________________________________
715{
716 if (s.version()<0||s.version()>currentSettingsVersion()) {
717 message("Warning: State data in .vp1 file has unsupported version ("+str(s.version())+")");
718 return;
719 }
720
721 if (s.version()<=1) {
722 s.ignoreObsoletePhiSectionWidgetState();
723 s.ignoreWidget(m_d->ui_disp.phisectionwidget);
724 } else {
725 s.restore(m_d->ui_disp.phisectionwidget);
726 }
727 s.restore(m_d->ui_disp.spinBox_transp);
728 s.restore(m_d->ui_muon.checkBox_muonadapt_autoadapt);
729 s.restore(m_d->ui_muon.checkBox_muonadapt_openmdtchambers);
730 s.restore(m_d->ui_muon.checkBox_muonadapt_hidetubes);
731 s.restore(m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes);
732 s.restore(m_d->ui_muon.checkBox_muonadapt_opencscchambers);
733 s.restore(m_d->ui_muon.checkBox_muonadapt_opentgcchambers);
734 s.restore(m_d->ui_misc.checkBox_pixelmod_barrel);
735 s.restore(m_d->ui_misc.checkBox_pixelmod_endcapA);
736 s.restore(m_d->ui_misc.checkBox_pixelmod_endcapC);
737 s.restore(m_d->ui_misc.checkBox_sctmod_barrel);
738 s.restore(m_d->ui_misc.checkBox_sctmod_endcapA);
739 s.restore(m_d->ui_misc.checkBox_sctmod_endcapC);
740 s.restore(m_d->ui_disp.widget_drawOptions);
741 s.restore(m_d->ui_misc.lineEdit_expand_vols_matname);
742 s.restore(m_d->ui_misc.lineEdit_expand_vols_volname);
743 s.restore(m_d->ui_int.checkBox_geomselectable);
744 s.restore(m_d->ui_int.checkBox_print_shape);
745 s.restore(m_d->ui_int.checkBox_print_material);
746 s.restore(m_d->ui_int.checkBox_print_transform);
747 s.restore(m_d->ui_int.checkBox_print_mass);
748 s.restore(m_d->ui_int.checkBox_print_copyno);
749 s.restore(m_d->ui_int.checkBox_print_tree);
750 s.restore(m_d->ui_int.checkBox_print_muonstationinfo);
751 s.restore(m_d->ui_int.checkBox_zoomToVolumes);
752 s.restore(m_d->ui_int.checkBox_AutomaticMuonChamberEndViews);
753 if (s.version()>=1)
754 s.restore(m_d->ui_disp.checkBox_showVolumeOutLines);
755
756 if (s.version()>=3) {
757 s.restore(m_d->ui_misc.checkBox_bcmMod_Aside);
758 s.restore(m_d->ui_misc.checkBox_bcmMod_Cside);
759 }
760
761 // labels
762 if (s.version()>=4){
763 s.restore(m_d->ui_disp.groupBox_labels);
764 s.restore(m_d->ui_disp.horizontalSlider_labels_xOffset);
765 s.restore(m_d->ui_disp.horizontalSlider_labels_yOffset);
766 s.restore(m_d->ui_disp.horizontalSlider_labels_zOffset);
767 s.restore(m_d->ui_disp.checkBox_labels_names);
768 }
769 if (s.version()>=5){
770 s.restore(m_d->ui_disp.checkBox_labels_mboyt0s);
771 s.restore(m_d->ui_disp.checkBox_labels_mooret0s);
772 s.restore(m_d->ui_disp.checkBox_labels_hits);
773 }
774 if (s.version()>=6){
775 s.restore(m_d->ui_misc.checkBox_NSW_MM);
776 s.restore(m_d->ui_misc.checkBox_NSW_sTGC);
777 s.restore(m_d->ui_misc.checkBox_NSW_Passive_Spacer);
778 s.restore(m_d->ui_misc.checkBox_NSW_Passive_Structure);
779 s.restore(m_d->ui_misc.checkBox_NSW_Passive_APlate);
780 }
781
782 s.ignoreWidget(m_d->ui_disp.matButton_lastSel);
783 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*>::const_iterator it,itE(m_d->subSysCheckBoxMap.end());
784 for (it=m_d->subSysCheckBoxMap.begin();it!=itE;++it)
785 s.ignoreWidget(it->second);
786
787 m_d->ui_int.groupBox_printOnSelection->setEnabled(m_d->ui_int.checkBox_geomselectable->isChecked());
788 m_d->ui_int.groupBox_automaticViewReorientations->setEnabled(m_d->ui_int.checkBox_geomselectable->isChecked());
789
790}
791
793// Test for possible changes in values and emit signals as appropriate:
794// (possibleChange_XXX() slots code provided by macros)
795#define VP1CONTROLLERCLASSNAME GeoSysController
797POSSIBLECHANGE_IMP(transparency)
798POSSIBLECHANGE_IMP(showVolumeOutLines)
799POSSIBLECHANGE_IMP(muonChamberAdaptionStyle)
800POSSIBLECHANGE_IMP(labels)
801POSSIBLECHANGE_IMP(labelPosOffset)
802
803
804
#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 hasMuonGeometry()
static QString defaultFileSelectDirectory()
SoMaterial * material()