ATLAS Offline Software
Loading...
Searching...
No Matches
PRDSystemController.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
6// //
7// Implementation of class PRDSystemController //
8// //
9// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
10// Initial version: November 2007 //
11// //
13
14#define VP1IMPVARNAME m_d
15
17#include "ui_vp1prdcontrollerform.h"
18#include "ui_prd_settings_cuts_form.h"
19#include "ui_prd_settings_display_form.h"
20#include "ui_prd_settings_interactions_form.h"
24#include "VP1Base/VP1QtUtils.h"
26#include <Inventor/nodes/SoMaterial.h>
27#include <QBuffer>
28#include <QTimer>
29#include <QSet>
30
31//____________________________________________________________________
33public:
35 Ui::VP1PrdControllerForm ui{};
36 Ui::PRDSysSettingsInteractionsForm ui_int{};
37 Ui::PRDSysSettingsDisplayForm ui_disp{};
38 Ui::PRDSysSettingsCutsForm ui_cuts{};
40
41 SoMaterial * highlightmaterial = nullptr;
42
44 bool last_drawErrors = false;
45 bool last_drawRDOs = false;
52 bool last_projectSCTHits = false;
53 bool last_projectTRTHits = false;
54 bool last_projectMDTHits = false;
55 bool last_projectRPCHits = false;
56 bool last_projectCSCHits = false;
57 bool last_projectTGCHits = false;
58 // bool last_projectSTGCHits;
59 //Cuts:
61 QList<VP1Interval> last_cutAllowedPhi;//All off: empty list. All on: list with one entry: ]-inf,inf[
62 PRDCommonFlags::InDetPartsFlags last_inDetPartsFlags;
65 unsigned last_trtMinToT = 0U;
66 unsigned last_trtMaxToT = 0U;
67 unsigned last_trtMinLE = 0U;
68 unsigned last_trtMaxLE = 0U;
69 bool last_trtRequireHT = false;
74 std::set<PRDDetType::Type> last_shownCollectionTypes;
78 //Used ID parts:
79 InDetProjFlags::DetTypeFlags last_inDetPartsUsingProjections;
80
81 QSet<PRDDetType::Type> shownCollectionTypes() const;
82};
83
84//____________________________________________________________________
86 : VP1Controller(sys,"PRDSystemController"),m_d(new Imp)
87{
88 m_d->theclass = this;
89 m_d->ui.setupUi(this);
90
91 //FIXME: Dialogs and collwidget!
92 m_d->collWidget = new VP1CollectionWidget;
93 // m_d->trackcollwidget = new TrackCollWidget;
94 setupCollWidgetInScrollArea(m_d->ui.collWidgetScrollArea,m_d->collWidget);
95 initDialog(m_d->ui_cuts, m_d->ui.pushButton_settings_cuts);
96 initDialog(m_d->ui_disp, m_d->ui.pushButton_settings_display);
97 initDialog(m_d->ui_int, m_d->ui.pushButton_settings_interactions);
98
99 m_d->highlightmaterial = 0;
100
101 m_d->ui_int.matButton_multiselline->setMaterial(VP1MaterialButton::createMaterial(1,1,0));
102
103 m_d->ui_cuts.groupBox_cuts_tracksegmentassociation->setVisible(false);//Since it is not used at the moment!
104 if (!VP1QtUtils::environmentVariableIsOn("VP1_DEVEL_ENABLEREFIT"))
105 m_d->ui_int.groupBox_selectionMode->setVisible(false);
106
107 m_d->ui_disp.widget_drawOptions_PixelSCT->setComplexityDisabled();
108 m_d->ui_disp.widget_drawOptions_Muons->setPointSizesDisabled();
109 m_d->ui_disp.widget_drawOptions_PixelSCT->setPointSizes(3.0);
110 m_d->ui_disp.widget_drawOptions_TRT->setPointSizes(2.0);
111
112 m_d->ui_cuts.etaPhiCutWidget->setEtaCutEnabled(false);
113
115 // Setup connections which monitor changes in the controller so that we may emit signals as appropriate: //
117
119 connectToLastUpdateSlot(m_d->ui_disp.checkBox_colourByTrack);
120 connectToLastUpdateSlot(m_d->ui_disp.checkBox_colourBySegment);
121
123 connectToLastUpdateSlot(m_d->ui_disp.checkBox_drawErrors);
124
126 connectToLastUpdateSlot(m_d->ui_disp.checkBox_drawRDOs);
127
129 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_highlights_intensity);
130
132 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_highlights_intensity);
133
135 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_highlights_intensity);
136
138 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_highlights_intensity);
139
141 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_highlights_intensity);
142
144 connectToLastUpdateSlot(m_d->ui_disp.checkBox_highlight_trackoutliers);
145 connectToLastUpdateSlot(m_d->ui_disp.checkBox_colourByTrack);
146 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_highlights_intensity);
147
149 connectToLastUpdateSlot(m_d->ui_disp.checkBox_highlight_trackoutliers);
150 connectToLastUpdateSlot(m_d->ui_disp.checkBox_highlight_trtht);
151 connectToLastUpdateSlot(m_d->ui_disp.checkBox_colourByTrack);
152 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_highlights_intensity);
153
155 connectToLastUpdateSlot(m_d->ui_disp.checkBox_highlight_trackoutliers);
156 connectToLastUpdateSlot(m_d->ui_disp.checkBox_highlight_maskedmdts);
157 connectToLastUpdateSlot(m_d->ui_disp.checkBox_colourByTrack);
158 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_highlights_intensity);
159
161 connectToLastUpdateSlot(m_d->ui_disp.checkBox_highlight_trackoutliers);
162 connectToLastUpdateSlot(m_d->ui_disp.checkBox_colourByTrack);
163 connectToLastUpdateSlot(m_d->ui_disp.horizontalSlider_highlights_intensity);
164 connectToLastUpdateSlot(m_d->ui_disp.checkBox_highlight_mdt_ADC_below);
165 connectToLastUpdateSlot(m_d->ui_disp.spinBox_highlight_mdt_ADC_below);
166
168 connectToLastUpdateSlot(m_d->ui_disp.checkBox_showpixel_projected);
169
171 connectToLastUpdateSlot(m_d->ui_disp.checkBox_showsct_projected);
172
174 connectToLastUpdateSlot(m_d->ui_disp.checkBox_showtrt_projected);
175
177 connectToLastUpdateSlot(m_d->ui_disp.checkBox_showmdt_projected);
178
180 connectToLastUpdateSlot(m_d->ui_disp.checkBox_showrpc_projected);
181
183 connectToLastUpdateSlot(m_d->ui_disp.checkBox_showcsc_projected);
184
186 connectToLastUpdateSlot(m_d->ui_disp.checkBox_showtgc_projected);
187
188 // addUpdateSlot(SLOT(possibleChange_projectSTGCHits()));
189 // connectToLastUpdateSlot(m_d->ui_disp.checkBox_showstgc_projected);
190
192 connectToLastUpdateSlot(m_d->ui_cuts.etaPhiCutWidget,SIGNAL(allowedEtaChanged(const VP1Interval&)));
193
195 connectToLastUpdateSlot(m_d->ui_cuts.etaPhiCutWidget,SIGNAL(allowedPhiChanged(const QList<VP1Interval>&)));
196
198 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_indet_barrelA);
199 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_indet_barrelC);
200 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_indet_endcapA);
201 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_indet_endcapC);
202
204 connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_pixel_minnrdo);
205 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_pixel_minnrdo);
206
208 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_sct_excludeisolatedclusters);
209
211 connectToLastUpdateSlot(m_d->ui_cuts.checkbox_cut_trt_needHT);
212
214 connectToLastUpdateSlot(m_d->ui_cuts.checkbox_cut_trt_TotMin);
215 connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_trt_ToTMin);
216
218 connectToLastUpdateSlot(m_d->ui_cuts.checkbox_cut_trt_TotMax);
219 connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_trt_ToTMax);
220
222 connectToLastUpdateSlot(m_d->ui_cuts.checkbox_cut_trt_LeMin);
223 connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_trt_LEMin);
224
226 connectToLastUpdateSlot(m_d->ui_cuts.checkbox_cut_trt_LeMax);
227 connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_trt_LEMax);
228
230 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_mdt_excludeisolateddrifttubes);
231
233 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_mdt_ADClowerbound);
234 connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_mdt_ADClowerbound);
235 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_mdt_ADCupperbound);
236 connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_mdt_ADCupperbound);
237
239 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_mdt_excludemaskedhits);
240
242 connectToLastUpdateSlot(m_d->ui_cuts.comboBox_mdt_cutMdtDriftCircleStatus);
243
245 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_mdt_limitToActiveChambers);
246
251 connectToLastUpdateSlot(this,SIGNAL(inDetPartsFlagsChanged(PRDCommonFlags::InDetPartsFlags)));
252 connectToLastUpdateSlot(collWidget(),SIGNAL(visibleStdCollectionTypesChanged(const QList<qint32>&)));
253
255 connectToLastUpdateSlot(m_d->ui_int.checkBox_selModeMultiple);
256
258 connectToLastUpdateSlot(m_d->ui_int.checkBox_showSelectionLine);
259
261 connectToLastUpdateSlot(collWidget(),SIGNAL(visibleStdCollectionTypesChanged(const QList<qint32>&)));
262
265
266 //Stateless:
267 connect(m_d->ui_int.pushButton_clearSelection,SIGNAL(clicked()),this,SLOT(emitClearSelection()));
268
269 initLastVars();
270
271}
272
273//____________________________________________________________________
275{
276 if (m_d->highlightmaterial)
277 m_d->highlightmaterial->unref();
278 delete m_d;
279}
280
281//____________________________________________________________________
283{
284 return m_d->collWidget;
285}
286
287//____________________________________________________________________
289{
290 //FIXME: SET APPROPRIATE DEFAULTS!!!!
291 switch (t) {
292 case PRDDetType::TRT:
293 return m_d->ui_disp.widget_drawOptions_TRT->drawOptionsGroup();
295 case PRDDetType::SCT:
297 return m_d->ui_disp.widget_drawOptions_PixelSCT->drawOptionsGroup();
298 default:
299 return m_d->ui_disp.widget_drawOptions_Muons->drawOptionsGroup();
300 }
301}
302
303//____________________________________________________________________
305{
306 QSet<PRDDetType::Type> s;
307 for (qint32 i : collWidget->visibleStdCollectionTypes()) {
308 bool ok;
310 if (ok)
311 s.insert(t);
312 }
313 return s;
314}
315
316//____________________________________________________________________
318{
319 QList<SoMaterial*> mats = m_d->ui_int.matButton_multiselline->handledMaterials();
320 if (mats.count()!=1) {
321 message("ERROR: No material in button!");
322 return 0;//probably giving a crash...
323 }
324 return mats.at(0);
325}
326
327//____________________________________________________________________
329{
330 messageVerbose("Emitting clearSelection()");
331 emit clearSelection();
332}
333
334//____________________________________________________________________
336{
337 if (!m_d->highlightmaterial) {
338 m_d->highlightmaterial = new SoMaterial;
339 m_d->highlightmaterial->ref();
340 m_d->highlightmaterial->diffuseColor.setValue( 1.0f, 0.0f, 0.0f );
341 m_d->ui_disp.materialbutton_highlights_material->copyValuesFromMaterial(m_d->highlightmaterial);
342 m_d->ui_disp.materialbutton_highlights_material->handleMaterial(m_d->highlightmaterial);
343 }
344 return m_d->highlightmaterial;
345}
346
347//____________________________________________________________________
349{
350 return m_d->ui_int.checkBox_printinfo->isChecked();
351}
352
353//____________________________________________________________________
355{
356 return m_d->ui_int.checkBox_zoom->isChecked();
357}
358
359//____________________________________________________________________
361{
362 return zoomOnClick() && m_d->ui_int.checkBox_zoom_orientToMuonChamber->isChecked();
363}
364
365//____________________________________________________________________
367{
368 return m_d->ui_cuts.etaPhiCutWidget->allowedEta();
369}
370
371//____________________________________________________________________
372QList<VP1Interval> PRDSystemController::cutAllowedPhi() const
373{
374 return m_d->ui_cuts.etaPhiCutWidget->allowedPhi();
375}
376
377//____________________________________________________________________
378PRDCommonFlags::InDetPartsFlags PRDSystemController::inDetPartsFlags() const
379{
380 PRDCommonFlags::InDetPartsFlags flag = PRDCommonFlags::None;
381 if (m_d->ui_cuts.checkBox_cut_indet_barrelA->isChecked()) flag |= PRDCommonFlags::BarrelPositive;
382 if (m_d->ui_cuts.checkBox_cut_indet_barrelC->isChecked()) flag |= PRDCommonFlags::BarrelNegative;
383 if (m_d->ui_cuts.checkBox_cut_indet_endcapA->isChecked()) flag |= PRDCommonFlags::EndCapPositive;
384 if (m_d->ui_cuts.checkBox_cut_indet_endcapC->isChecked()) flag |= PRDCommonFlags::EndCapNegative;
385 return flag;
386}
387
388//____________________________________________________________________
390{
391 return m_d->ui_cuts.checkbox_cut_trt_TotMin->isChecked() ? m_d->ui_cuts.spinBox_cut_trt_ToTMin->value() : 0;
392}
393
394//____________________________________________________________________
396{
397 return m_d->ui_cuts.checkbox_cut_trt_TotMax->isChecked() ? m_d->ui_cuts.spinBox_cut_trt_ToTMax->value() : 24;
398}
399
400//____________________________________________________________________
402{
403 return m_d->ui_cuts.checkbox_cut_trt_LeMin->isChecked() ? m_d->ui_cuts.spinBox_cut_trt_LEMin->value() : 0;
404}
405
406//____________________________________________________________________
408{
409 return m_d->ui_cuts.checkbox_cut_trt_LeMax->isChecked() ? m_d->ui_cuts.spinBox_cut_trt_LEMax->value() : 24;
410}
411
412//____________________________________________________________________
414{
415 return m_d->ui_cuts.checkbox_cut_trt_needHT->isChecked();
416}
417
418
419//____________________________________________________________________
421{
422 return m_d->ui_cuts.checkBox_cut_pixel_minnrdo->isChecked() ? m_d->ui_cuts.spinBox_cut_pixel_minnrdo->value() : 0;
423}
424
425
426
427//____________________________________________________________________
429{
430 return m_d->ui_cuts.checkBox_cut_sct_excludeisolatedclusters->isChecked();
431}
432
433//____________________________________________________________________
435{
436 return m_d->ui_cuts.checkBox_cut_mdt_excludeisolateddrifttubes->isChecked() ? 2 : 0;
437}
438
439//____________________________________________________________________
441{
442 double lower = m_d->ui_cuts.checkBox_cut_mdt_ADClowerbound->isChecked() ?
443 m_d->ui_cuts.spinBox_cut_mdt_ADClowerbound->value()+0.5 : - VP1Interval::inf();
444 double upper = m_d->ui_cuts.checkBox_cut_mdt_ADCupperbound->isChecked() ?
445 m_d->ui_cuts.spinBox_cut_mdt_ADCupperbound->value()-0.5 : VP1Interval::inf();
446 return upper>lower? VP1Interval(lower,upper) : VP1Interval();
447}
448
449
450//____________________________________________________________________
452{
453 return m_d->ui_cuts.checkBox_cut_mdt_excludemaskedhits->isChecked();
454}
455
456//____________________________________________________________________
458{
459 return m_d->ui_cuts.comboBox_mdt_cutMdtDriftCircleStatus->currentText();
460}
461
462//____________________________________________________________________
464{
465 return m_d->ui_cuts.checkBox_cut_mdt_limitToActiveChambers->isChecked();
466}
467
468//____________________________________________________________________
470{
471 if (m_d->ui_disp.checkBox_colourByTrack->isChecked()) {
472 if (m_d->ui_disp.checkBox_colourBySegment->isChecked())
474 else
476 } else {
477 if (m_d->ui_disp.checkBox_colourBySegment->isChecked())
479 else
481 }
482}
483
484//____________________________________________________________________
486{
487 if (m_d->ui_disp.checkBox_drawErrors->isChecked()) return true;
488 return false;
489}
490
491//____________________________________________________________________
493{
494 if (m_d->ui_disp.checkBox_drawRDOs->isChecked()) return true;
495 return false;
496}
497
498
499//____________________________________________________________________
501{
502 return highLightMaterialWeight() != 0.0
503 && m_d->ui_disp.checkBox_highlight_trackoutliers->isChecked() && m_d->ui_disp.checkBox_colourByTrack->isChecked();
504}
505
506//____________________________________________________________________
508{
509 const bool outlierHLEnabledInGui(m_d->ui_disp.checkBox_highlight_trackoutliers->isChecked() && m_d->ui_disp.checkBox_colourByTrack->isChecked());
510 m_d->ui_disp.checkBox_highlight_trtht->setEnabled(!outlierHLEnabledInGui);
511 m_d->ui_disp.checkBox_highlight_maskedmdts->setEnabled(!outlierHLEnabledInGui);
512 m_d->ui_disp.checkBox_highlight_mdt_ADC_below->setEnabled(!outlierHLEnabledInGui);
513 m_d->ui_disp.spinBox_highlight_mdt_ADC_below->setEnabled(!outlierHLEnabledInGui);
514}
515
516//____________________________________________________________________
518{
519 return highLightMaterialWeight() != 0.0
520 && !highLightOutliers() && m_d->ui_disp.checkBox_highlight_trtht->isChecked();
521}
522
523
524//____________________________________________________________________
526{
527 return highLightMaterialWeight() != 0.0
528 && !highLightOutliers() && m_d->ui_disp.checkBox_highlight_maskedmdts->isChecked();
529}
530
531
532//____________________________________________________________________
534{
535 return (highLightMaterialWeight() > 0.0
536 && !highLightOutliers() && m_d->ui_disp.checkBox_highlight_mdt_ADC_below->isChecked() )
537 ? m_d->ui_disp.spinBox_highlight_mdt_ADC_below->value() : -1;
538}
539
540
541//____________________________________________________________________
543{
544 int val = m_d->ui_disp.horizontalSlider_highlights_intensity->value();
545 if (val<=1) return 0.0;
546 if (val==2) return 1.0;
547 if (val==3) return 1.9;
548 if (val==4) return 2.8;
549 if (val==5) return 5.0;
550 return 99999.0;
551}
552
553//____________________________________________________________________
554bool PRDSystemController::projectPixelHits() const { return m_d->ui_disp.checkBox_showpixel_projected->isChecked(); }
555bool PRDSystemController::projectSCTHits() const { return m_d->ui_disp.checkBox_showsct_projected->isChecked(); }
556bool PRDSystemController::projectTRTHits() const { return m_d->ui_disp.checkBox_showtrt_projected->isChecked(); }
557bool PRDSystemController::projectMDTHits() const { return m_d->ui_disp.checkBox_showmdt_projected->isChecked(); }
558bool PRDSystemController::projectRPCHits() const { return m_d->ui_disp.checkBox_showrpc_projected->isChecked(); }
559bool PRDSystemController::projectCSCHits() const { return m_d->ui_disp.checkBox_showcsc_projected->isChecked(); }
560bool PRDSystemController::projectTGCHits() const { return m_d->ui_disp.checkBox_showtgc_projected->isChecked(); }
561// bool PRDSystemController::projectSTGCHits() const { return m_d->ui_disp.checkBox_showstgc_projected->isChecked(); }
562
563//____________________________________________________________________
564InDetProjFlags::DetTypeFlags PRDSystemController::inDetPartsUsingProjections() const
565{
566 std::set<PRDDetType::Type> showncolltypes = shownCollectionTypes();
567 PRDCommonFlags::InDetPartsFlags indetparts = inDetPartsFlags();
568
569 InDetProjFlags::DetTypeFlags flag = InDetProjFlags::NoDet;
570
571 if ( projectPixelHits() && showncolltypes.find(PRDDetType::Pixel)!=showncolltypes.end() ) {
572 if (indetparts & PRDCommonFlags::BarrelPositive)
574 if (indetparts & PRDCommonFlags::BarrelNegative)
576 if (indetparts & PRDCommonFlags::EndCapPositive)
578 if (indetparts & PRDCommonFlags::EndCapNegative)
580 }
581
582 if ( projectSCTHits() && showncolltypes.find(PRDDetType::SCT)!=showncolltypes.end() ) {
583 if (indetparts & PRDCommonFlags::BarrelPositive)
585 if (indetparts & PRDCommonFlags::BarrelNegative)
587 if (indetparts & PRDCommonFlags::EndCapPositive)
589 if (indetparts & PRDCommonFlags::EndCapNegative)
591 }
592
593 if ( projectTRTHits() && showncolltypes.find(PRDDetType::TRT)!=showncolltypes.end() ) {
594 if (indetparts & PRDCommonFlags::BarrelPositive)
596 if (indetparts & PRDCommonFlags::BarrelNegative)
598 if (indetparts & PRDCommonFlags::EndCapPositive)
600 if (indetparts & PRDCommonFlags::EndCapNegative)
602 }
603
604 return flag;
605}
606
607//____________________________________________________________________
609{
610 return m_d->ui_int.checkBox_selModeMultiple->isChecked();
611}
612
613//____________________________________________________________________
615{
616 return m_d->ui_int.checkBox_showSelectionLine->isChecked();
617}
618
619//____________________________________________________________________
620std::set<PRDDetType::Type> PRDSystemController::shownCollectionTypes() const
621{
622 std::set<PRDDetType::Type> s;
623
624 for(qint32 i : collWidget()->visibleStdCollectionTypes()) {
625 bool ok;
627 if (ok)
628 s.insert(t);
629 else
630 message("shownCollectionTypes ERROR: Could not decode collection type");
631 }
632 return s;
633}
634
635
636//____________________________________________________________________
638{
639 return 3;
640}
641
642//____________________________________________________________________
644{
645 s.save(m_d->ui_disp.checkBox_colourByTrack);
646 s.save(m_d->ui_disp.checkBox_colourBySegment);
647 s.save(m_d->ui_disp.checkBox_highlight_trackoutliers);
648 s.save(m_d->ui_disp.checkBox_highlight_trtht);
649 s.save(m_d->ui_disp.checkBox_highlight_maskedmdts);
650 s.save(m_d->ui_cuts.checkBox_cut_indet_barrelA);
651 s.save(m_d->ui_cuts.checkBox_cut_indet_barrelC);
652 s.save(m_d->ui_cuts.checkBox_cut_indet_endcapA);
653 s.save(m_d->ui_cuts.checkBox_cut_indet_endcapC);
654 s.save(m_d->ui_cuts.checkBox_cut_pixel_minnrdo);
655 s.save(m_d->ui_cuts.checkBox_cut_sct_excludeisolatedclusters);
656 s.save(m_d->ui_cuts.checkbox_cut_trt_needHT);
657 s.save(m_d->ui_cuts.checkbox_cut_trt_TotMin);
658 s.save(m_d->ui_cuts.checkbox_cut_trt_TotMax);
659 s.save(m_d->ui_cuts.checkBox_cut_mdt_excludeisolateddrifttubes);
660 s.save(m_d->ui_disp.checkBox_highlight_mdt_ADC_below);
661 s.save(m_d->ui_cuts.checkBox_cut_mdt_excludemaskedhits);
662 s.save(m_d->ui_cuts.checkBox_cut_mdt_ADClowerbound);
663 s.save(m_d->ui_cuts.checkBox_cut_mdt_ADCupperbound);
664 s.save(m_d->ui_disp.checkBox_showpixel_projected);
665 s.save(m_d->ui_disp.checkBox_showsct_projected);
666 s.save(m_d->ui_disp.checkBox_showtrt_projected);
667 s.save(m_d->ui_disp.checkBox_showmdt_projected);
668 s.save(m_d->ui_disp.checkBox_showrpc_projected);
669 s.save(m_d->ui_disp.checkBox_showcsc_projected);
670 s.save(m_d->ui_disp.checkBox_showtgc_projected);
671 // s.save(m_d->ui_disp.checkBox_showstgc_projected);
672 s.save(m_d->ui_disp.horizontalSlider_highlights_intensity);
673 s.save(m_d->ui_cuts.spinBox_cut_pixel_minnrdo);
674 s.save(m_d->ui_cuts.spinBox_cut_trt_ToTMin);
675 s.save(m_d->ui_cuts.spinBox_cut_trt_ToTMax);
676 s.save(m_d->ui_disp.spinBox_highlight_mdt_ADC_below);
677 s.save(m_d->ui_cuts.spinBox_cut_mdt_ADClowerbound);
678 s.save(m_d->ui_cuts.spinBox_cut_mdt_ADCupperbound);
679 s.save(m_d->ui_disp.materialbutton_highlights_material);
680 s.save(m_d->ui_int.checkBox_selModeMultiple);
681 s.save(m_d->ui_int.checkBox_showSelectionLine);
682 s.save(m_d->ui_int.matButton_multiselline);
683 s.save(m_d->ui_cuts.etaPhiCutWidget);
684 s.save(m_d->ui_disp.widget_drawOptions_PixelSCT);
685 s.save(m_d->ui_disp.widget_drawOptions_TRT);
686 s.save(m_d->ui_disp.widget_drawOptions_Muons);
687 s.save(m_d->ui_int.checkBox_printinfo);
688 s.save(m_d->ui_int.checkBox_zoom);
689 s.save(m_d->ui_int.checkBox_zoom_orientToMuonChamber);
690
691 s.save(m_d->ui_cuts.spinBox_cut_trt_LEMin);//Version 1+
692 s.save(m_d->ui_cuts.spinBox_cut_trt_LEMax);//Version 1+
693 s.save(m_d->ui_cuts.checkbox_cut_trt_LeMin);//Version 1+
694 s.save(m_d->ui_cuts.checkbox_cut_trt_LeMax);//Version 1+
695
696 s.save(m_d->ui_disp.checkBox_drawErrors);//Version 2+
697 s.save(m_d->ui_disp.checkBox_drawRDOs);//Version 2+
698
699 s.save(m_d->ui_cuts.comboBox_mdt_cutMdtDriftCircleStatus);//Version 3+
700 s.save(m_d->ui_cuts.checkBox_cut_mdt_limitToActiveChambers);//Version 3+
701
702 //Not used yet:
703 s.ignoreWidget(m_d->ui_cuts.checkBox_cuts_ts_exclude_hits_on_track);
704 s.ignoreWidget(m_d->ui_cuts.checkBox_cuts_ts_exclude_hits_not_on_track);
705 s.ignoreWidget(m_d->ui_cuts.checkBox_cuts_ts_exclude_hits_on_segments);
706 s.ignoreWidget(m_d->ui_cuts.checkBox_cuts_ts_exclude_not_on_segments);
707
708}
709
710
711//____________________________________________________________________
713{
714 if (s.version()<0||s.version()>3) {
715 message("Warning: State data in .vp1 file has unsupported version ("+str(s.version())+")");
716 return;
717 }
718 s.restore(m_d->ui_disp.checkBox_colourByTrack);
719 s.restore(m_d->ui_disp.checkBox_colourBySegment);
720 s.restore(m_d->ui_disp.checkBox_highlight_trackoutliers);
721 s.restore(m_d->ui_disp.checkBox_highlight_trtht);
722 s.restore(m_d->ui_disp.checkBox_highlight_maskedmdts);
723 s.restore(m_d->ui_cuts.checkBox_cut_indet_barrelA);
724 s.restore(m_d->ui_cuts.checkBox_cut_indet_barrelC);
725 s.restore(m_d->ui_cuts.checkBox_cut_indet_endcapA);
726 s.restore(m_d->ui_cuts.checkBox_cut_indet_endcapC);
727 s.restore(m_d->ui_cuts.checkBox_cut_pixel_minnrdo);
728 s.restore(m_d->ui_cuts.checkBox_cut_sct_excludeisolatedclusters);
729 s.restore(m_d->ui_cuts.checkbox_cut_trt_needHT);
730 s.restore(m_d->ui_cuts.checkbox_cut_trt_TotMin);
731 s.restore(m_d->ui_cuts.checkbox_cut_trt_TotMax);
732 s.restore(m_d->ui_cuts.checkBox_cut_mdt_excludeisolateddrifttubes);
733 s.restore(m_d->ui_disp.checkBox_highlight_mdt_ADC_below);
734 s.restore(m_d->ui_cuts.checkBox_cut_mdt_excludemaskedhits);
735 s.restore(m_d->ui_cuts.checkBox_cut_mdt_ADClowerbound);
736 s.restore(m_d->ui_cuts.checkBox_cut_mdt_ADCupperbound);
737 s.restore(m_d->ui_disp.checkBox_showpixel_projected);
738 s.restore(m_d->ui_disp.checkBox_showsct_projected);
739 s.restore(m_d->ui_disp.checkBox_showtrt_projected);
740 s.restore(m_d->ui_disp.checkBox_showmdt_projected);
741 s.restore(m_d->ui_disp.checkBox_showrpc_projected);
742 s.restore(m_d->ui_disp.checkBox_showcsc_projected);
743 s.restore(m_d->ui_disp.checkBox_showtgc_projected);
744 // s.restore(m_d->ui_disp.checkBox_showstgc_projected);
745 s.restore(m_d->ui_disp.horizontalSlider_highlights_intensity);
746 s.restore(m_d->ui_cuts.spinBox_cut_pixel_minnrdo);
747 s.restore(m_d->ui_cuts.spinBox_cut_trt_ToTMin);
748 s.restore(m_d->ui_cuts.spinBox_cut_trt_ToTMax);
749 s.restore(m_d->ui_disp.spinBox_highlight_mdt_ADC_below);
750 s.restore(m_d->ui_cuts.spinBox_cut_mdt_ADClowerbound);
751 s.restore(m_d->ui_cuts.spinBox_cut_mdt_ADCupperbound);
752 s.restore(m_d->ui_disp.materialbutton_highlights_material);
753 s.restore(m_d->ui_int.checkBox_selModeMultiple);
754 s.restore(m_d->ui_int.checkBox_showSelectionLine);
755 s.restore(m_d->ui_int.matButton_multiselline);
756 s.restore(m_d->ui_cuts.etaPhiCutWidget);
757 s.restore(m_d->ui_disp.widget_drawOptions_PixelSCT);
758 s.restore(m_d->ui_disp.widget_drawOptions_TRT);
759 s.restore(m_d->ui_disp.widget_drawOptions_Muons);
760 s.restore(m_d->ui_int.checkBox_printinfo);
761 s.restore(m_d->ui_int.checkBox_zoom);
762 s.restore(m_d->ui_int.checkBox_zoom_orientToMuonChamber);
763
764 if (s.version()>=1) {
765 s.restore(m_d->ui_cuts.spinBox_cut_trt_LEMin);
766 s.restore(m_d->ui_cuts.spinBox_cut_trt_LEMax);
767 s.restore(m_d->ui_cuts.checkbox_cut_trt_LeMin);
768 s.restore(m_d->ui_cuts.checkbox_cut_trt_LeMax);
769 }
770
771 if (s.version()>=2) {
772 s.restore(m_d->ui_disp.checkBox_drawErrors);
773 s.restore(m_d->ui_disp.checkBox_drawRDOs);
774 }
775
776 if (s.version()>=3) {
777 s.restore(m_d->ui_cuts.comboBox_mdt_cutMdtDriftCircleStatus);
778 s.restore(m_d->ui_cuts.checkBox_cut_mdt_limitToActiveChambers);
779 }
780
781 //Not used yet:
782 s.ignoreWidget(m_d->ui_cuts.checkBox_cuts_ts_exclude_hits_on_track);
783 s.ignoreWidget(m_d->ui_cuts.checkBox_cuts_ts_exclude_hits_not_on_track);
784 s.ignoreWidget(m_d->ui_cuts.checkBox_cuts_ts_exclude_hits_on_segments);
785 s.ignoreWidget(m_d->ui_cuts.checkBox_cuts_ts_exclude_not_on_segments);
786}
787
789// Test for possible changes in values and emit signals as appropriate:
790// (possibleChange_XXX() slots code provided by macros)
791#define VP1CONTROLLERCLASSNAME PRDSystemController
793
794//The actual code for each variable:
802// POSSIBLECHANGE_IMP(projectSTGCHits)
int upper(int c)
#define POSSIBLECHANGE_IMP(x)
static Type intToType(const qint32 &i, bool &status)
Ui::VP1PrdControllerForm ui
QList< VP1Interval > last_cutAllowedPhi
Ui::PRDSysSettingsCutsForm ui_cuts
PRDSystemController * theclass
Ui::PRDSysSettingsDisplayForm ui_disp
QSet< PRDDetType::Type > shownCollectionTypes() const
PRDCollHandleBase::COLOURMETHOD last_colourMethod
Ui::PRDSysSettingsInteractionsForm ui_int
std::set< PRDDetType::Type > last_shownCollectionTypes
VP1CollectionWidget * collWidget
InDetProjFlags::DetTypeFlags last_inDetPartsUsingProjections
PRDCommonFlags::InDetPartsFlags last_inDetPartsFlags
void highLightOutliersChanged(bool)
void possibleChange_projectRPCHits()
void possibleChange_projectTGCHits()
unsigned mdtMinNHitsPerStation() const
SoMaterial * getHighLightMaterial()
void possibleChange_trtRequireHT()
PRDCollHandleBase::COLOURMETHOD colourMethod() const
void possibleChange_projectPixelHits()
void possibleChange_projectCSCHits()
void projectSCTHitsChanged(bool)
VP1Interval mdtAllowedADCValues() const
void possibleChange_highLightTRTHitsByHighThreshold()
void possibleChange_highLightMDTHitsByMask()
void possibleChange_mdtAllowedADCValues()
SoGroup * drawOptions(PRDDetType::Type) const
PRDCommonFlags::InDetPartsFlags inDetPartsFlags() const
void possibleChange_highLightMaterialWeight()
unsigned pixelMinNRDOPerCluster() const
void possibleChange_inDetPartsUsingProjections()
InDetProjFlags::DetTypeFlags inDetPartsUsingProjections() const
void actualRestoreSettings(VP1Deserialise &)
void possibleChange_trtMinLE()
void possibleChange_inDetPartsFlags()
void inDetPartsFlagsChanged(PRDCommonFlags::InDetPartsFlags)
void possibleChange_mdtMinNHitsPerStation()
std::set< PRDDetType::Type > shownCollectionTypes() const
void possibleChange_limitToActiveChambers()
void possibleChange_cutAllowedEta()
void possibleChange_trtMaxToT()
void actualSaveSettings(VP1Serialise &) const
bool muonOrientToChambersOnClick() const
void possibleChange_sctExcludeIsolatedClusters()
VP1Interval cutAllowedEta() const
void possibleChange_projectSCTHits()
void possibleChange_projectMDTHits()
SoMaterial * getMultiSelectionLineMaterial() const
void clearSelection() const
double highLightMaterialWeight() const
void possibleChange_trtMinToT()
void possibleChange_showSelectionLine()
void possibleChange_shownCollectionTypes()
void possibleChange_selectionModeMultiple()
void possibleChange_drawRDOs()
void possibleChange_projectTRTHits()
void possibleChange_mdtExcludeMaskedHits()
void possibleChange_highLightMDTHitsByUpperADCBound()
void projectPixelHitsChanged(bool)
QString mdt_cutMdtDriftCircleStatus() const
void possibleChange_highLightOutliers()
void possibleChange_colourMethod()
QList< VP1Interval > cutAllowedPhi() const
void possibleChange_trtMaxLE()
void possibleChange_pixelMinNRDOPerCluster()
void possibleChange_mdt_cutMdtDriftCircleStatus()
PRDSystemController(IVP1System *sys)
void possibleChange_drawErrors()
bool sctExcludeIsolatedClusters() const
void projectTRTHitsChanged(bool)
void possibleChange_cutAllowedPhi()
VP1CollectionWidget * collWidget() const
void initDialog(T &theUI, QPushButton *launchbutton, QAbstractButton *enabledButton=0)
void connectToLastUpdateSlot(QObject *sender, const char *signal)
void setupCollWidgetInScrollArea(QScrollArea *scrollarea, VP1CollectionWidget *collWidget)
const char * addUpdateSlot(const char *slot)
VP1Controller(IVP1System *sys, const QString &classname)
void messageVerbose(const QString &) const
void message(const QString &) const
static double inf()
Definition VP1Interval.h:25
static SoMaterial * createMaterial(const QColor &, const double &brightness=0.0, const double &transp=0.0)
static bool environmentVariableIsOn(const QString &name)