ATLAS Offline Software
Loading...
Searching...
No Matches
VP1RawDataSysController.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5
7// //
8// Implementation of class VP1RawDataSysController //
9// //
10// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
11// Initial version: January 2009 //
12// //
14
15#define VP1IMPVARNAME m_d
16
18#include "ui_vp1rawdatacontrollerform.h"
19#include "ui_rawdata_settings_display_form.h"
20#include "ui_rawdata_settings_interactions_form.h"
21#include "ui_rawdata_settings_cuts_form.h"
25
26#include "GaudiKernel/SystemOfUnits.h"
27
28#include <cmath>
29
30
31//____________________________________________________________________
33public:
34 Ui::VP1RawDataControllerForm ui{};
35 Ui::RawDataSysSettingsCutsForm ui_cuts{};
36 Ui::RawDataSysSettingsInteractionsForm ui_int{};
37 Ui::RawDataSysSettingsDisplayForm ui_display{};
39
41 QList<VP1Interval> last_cutAllowedPhi;//All off: empty list. All on: list with one entry: ]-inf,inf[
45 VP1RawDataFlags::InDetPartsFlags last_enabledInDetParts;
46 bool last_trtRequireHT = false;
48 unsigned last_lucidMinQDC = 0U;
49};
50
51//____________________________________________________________________
53 : VP1Controller(sys,"VP1RawDataSysController"), m_d(new Imp)
54{
55 m_d->ui.setupUi(this);
56
57 m_d->collWidget = new VP1CollectionWidget;
58 setupCollWidgetInScrollArea(m_d->ui.collWidgetScrollArea,m_d->collWidget);
59
60 initDialog(m_d->ui_display, m_d->ui.pushButton_settings_display);
61 initDialog(m_d->ui_int, m_d->ui.pushButton_settings_interactions);
62 initDialog(m_d->ui_cuts, m_d->ui.pushButton_settings_cuts);
63
64 m_d->ui_display.widget_drawOptions->setLineWidths(1.5);
65 m_d->ui_display.widget_drawOptions->setPointSizes(2.5);
66 m_d->ui_display.widget_drawOptions->setComplexityDisabled();
67
68 m_d->ui_cuts.etaPhiCutWidget->setEtaCutEnabled(false);
69
70 m_d->ui_display.matButton_trtht->setMaterial(VP1MaterialButton::createMaterial(1.0,0.0,0.0));
71 m_d->ui_display.matButton_bcmhighatt->setMaterial(VP1MaterialButton::createMaterial(1.0,0.0,0.0));
72
73
75 // Setup connections which monitor changes in the controller so that we may emit signals as appropriate: //
77
78 // -> cutAllowedEta:
80 connectToLastUpdateSlot(m_d->ui_cuts.etaPhiCutWidget,SIGNAL(allowedEtaChanged(const VP1Interval&)));
81
82 // -> cutAllowedPhi:
84 connectToLastUpdateSlot(m_d->ui_cuts.etaPhiCutWidget,SIGNAL(allowedPhiChanged(const QList<VP1Interval>&)));
85
86 // -> showVolumeOutLines
88 connectToLastUpdateSlot(m_d->ui_display.checkBox_showVolumeOutLines);
89
90 // -> useSpecialTRTHTMaterial
92 connectToLastUpdateSlot(m_d->ui_display.checkBox_trtHTUseSpecialMat);
93
94 // -> useSpecialBCMHighAttMaterial
96 connectToLastUpdateSlot(m_d->ui_display.checkBox_bcmHighAttUseSpecialMat);
97
98 // -> enabledInDetParts
100 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_indet_barrelA);
101 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_indet_barrelC);
102 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_indet_endcapA);
103 connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_indet_endcapC);
104
105 // -> trtRequireHT
107 connectToLastUpdateSlot(m_d->ui_cuts.checkbox_cut_trt_needHT);
108
109 // -> trtAllowedToT
111 connectToLastUpdateSlot(m_d->ui_cuts.checkbox_cut_trt_TotMin);
112 connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_trt_ToTMin);
113 connectToLastUpdateSlot(m_d->ui_cuts.checkbox_cut_trt_TotMax);
114 connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_trt_ToTMax);
115
116 // -> lucidMinQDC
118 connectToLastUpdateSlot(m_d->ui_cuts.spinBox_lucid_qdc_min);
119
120 initLastVars();
121}
122
123//____________________________________________________________________
128
129
130//____________________________________________________________________
132{
133 return 1;
134}
135
136//____________________________________________________________________
138{
139 s.save(m_d->ui_cuts.etaPhiCutWidget);
140 s.save(m_d->ui_cuts.checkBox_cut_indet_barrelA);
141 s.save(m_d->ui_cuts.checkBox_cut_indet_barrelC);
142 s.save(m_d->ui_cuts.checkBox_cut_indet_endcapA);
143 s.save(m_d->ui_cuts.checkBox_cut_indet_endcapC);
144 s.save(m_d->ui_cuts.checkbox_cut_trt_needHT);
145 s.save(m_d->ui_cuts.checkbox_cut_trt_TotMin);
146 s.save(m_d->ui_cuts.spinBox_cut_trt_ToTMin);
147 s.save(m_d->ui_cuts.checkbox_cut_trt_TotMax);
148 s.save(m_d->ui_cuts.spinBox_cut_trt_ToTMax);
149 s.save(m_d->ui_display.checkBox_showVolumeOutLines);
150 s.save(m_d->ui_display.widget_drawOptions);
151 s.save(m_d->ui_display.checkBox_trtHTUseSpecialMat);
152 s.save(m_d->ui_display.checkBox_bcmHighAttUseSpecialMat);
153 s.save(m_d->ui_display.matButton_trtht);
154 s.save(m_d->ui_display.matButton_bcmhighatt);
155 s.save(m_d->ui_int.checkBox_printinfo);
156 s.save(m_d->ui_int.checkBox_printinfo_verbose);
157 s.save(m_d->ui_int.checkBox_zoom);
158 s.save(m_d->ui_cuts.spinBox_lucid_qdc_min);//Version 1+
159}
160
161//____________________________________________________________________
163{
164 if (s.version()<0||s.version()>1) {
165 message("Warning: State data in .vp1 file has unsupported version ("+str(s.version())+")");
166 return;
167 }
168 s.restore(m_d->ui_cuts.etaPhiCutWidget);
169 s.restore(m_d->ui_cuts.checkBox_cut_indet_barrelA);
170 s.restore(m_d->ui_cuts.checkBox_cut_indet_barrelC);
171 s.restore(m_d->ui_cuts.checkBox_cut_indet_endcapA);
172 s.restore(m_d->ui_cuts.checkBox_cut_indet_endcapC);
173 s.restore(m_d->ui_cuts.checkbox_cut_trt_needHT);
174 s.restore(m_d->ui_cuts.checkbox_cut_trt_TotMin);
175 s.restore(m_d->ui_cuts.spinBox_cut_trt_ToTMin);
176 s.restore(m_d->ui_cuts.checkbox_cut_trt_TotMax);
177 s.restore(m_d->ui_cuts.spinBox_cut_trt_ToTMax);
178 s.restore(m_d->ui_display.checkBox_showVolumeOutLines);
179 s.restore(m_d->ui_display.widget_drawOptions);
180 s.restore(m_d->ui_display.checkBox_trtHTUseSpecialMat);
181 s.restore(m_d->ui_display.checkBox_bcmHighAttUseSpecialMat);
182 s.restore(m_d->ui_display.matButton_trtht);
183 s.restore(m_d->ui_display.matButton_bcmhighatt);
184 s.restore(m_d->ui_int.checkBox_printinfo);
185 s.restore(m_d->ui_int.checkBox_printinfo_verbose);
186 s.restore(m_d->ui_int.checkBox_zoom);
187 if (s.version()>=1)
188 s.restore(m_d->ui_cuts.spinBox_lucid_qdc_min);
189}
190
191//____________________________________________________________________
193{
194 return m_d->collWidget;
195}
196
197//____________________________________________________________________
199{
200 return m_d->ui_display.widget_drawOptions->drawOptionsGroup();
201}
202
203//____________________________________________________________________
204bool VP1RawDataSysController::printInfoOnClick() const { return m_d->ui_int.checkBox_printinfo->isChecked(); }
205bool VP1RawDataSysController::printVerboseInfoOnClick() const { return m_d->ui_int.checkBox_printinfo_verbose->isChecked(); }
206bool VP1RawDataSysController::zoomOnClick() const { return m_d->ui_int.checkBox_zoom->isChecked(); }
207
208//____________________________________________________________________
210{
211 return m_d->ui_cuts.etaPhiCutWidget->allowedEta();
212}
213
214//____________________________________________________________________
216{
217 return m_d->ui_cuts.etaPhiCutWidget->allowedPhi();
218}
219
220//____________________________________________________________________
222{
223 return m_d->ui_display.checkBox_showVolumeOutLines->isChecked();
224}
225
226//____________________________________________________________________
228{
229 return m_d->ui_display.checkBox_trtHTUseSpecialMat->isChecked();
230}
231
232//____________________________________________________________________
234{
235 return m_d->ui_display.checkBox_bcmHighAttUseSpecialMat->isChecked();
236}
237
238//____________________________________________________________________
239VP1RawDataFlags::InDetPartsFlags VP1RawDataSysController::enabledInDetParts() const
240{
241 VP1RawDataFlags::InDetPartsFlags f;
242 if (m_d->ui_cuts.checkBox_cut_indet_barrelA->isChecked())
244 if (m_d->ui_cuts.checkBox_cut_indet_barrelC->isChecked())
246 if (m_d->ui_cuts.checkBox_cut_indet_endcapA->isChecked())
248 if (m_d->ui_cuts.checkBox_cut_indet_endcapC->isChecked())
250 return f;
251}
252
253//____________________________________________________________________
255{
256 return m_d->ui_cuts.checkbox_cut_trt_needHT->isChecked();
257}
258
259//____________________________________________________________________
261{
262 VP1Interval i( (m_d->ui_cuts.checkbox_cut_trt_TotMin->isChecked() ? (m_d->ui_cuts.spinBox_cut_trt_ToTMin->value()-0.5)*3.125*Gaudi::Units::nanosecond : -VP1Interval::inf() ),
263 (m_d->ui_cuts.checkbox_cut_trt_TotMax->isChecked() ? (m_d->ui_cuts.spinBox_cut_trt_ToTMax->value()+0.5)*3.125*Gaudi::Units::nanosecond : VP1Interval::inf() ) );
264 return i.lower()>i.upper() ? VP1Interval() : i;
265}
266
267//____________________________________________________________________
269{
270 return m_d->ui_cuts.spinBox_lucid_qdc_min->value();
271}
272
273//____________________________________________________________________
275{
276 return getMaterial(m_d->ui_display.matButton_trtht);
277}
278
279//____________________________________________________________________
281{
282 return getMaterial(m_d->ui_display.matButton_bcmhighatt);
283}
284
286// Test for possible changes in values and emit signals as appropriate:
287// (possibleChange_XXX() slots code provided by macros)
288#define VP1CONTROLLERCLASSNAME VP1RawDataSysController
290POSSIBLECHANGE_IMP(cutAllowedEta)
291POSSIBLECHANGE_IMP(cutAllowedPhi)
292POSSIBLECHANGE_IMP(showVolumeOutLines)
293POSSIBLECHANGE_IMP(useSpecialTRTHTMaterial)
294POSSIBLECHANGE_IMP(useSpecialBCMHighAttMaterial)
295POSSIBLECHANGE_IMP(enabledInDetParts)
296POSSIBLECHANGE_IMP(trtRequireHT)
297POSSIBLECHANGE_IMP(trtAllowedToT)
298POSSIBLECHANGE_IMP(lucidMinQDC)
#define POSSIBLECHANGE_IMP(x)
void initDialog(T &theUI, QPushButton *launchbutton, QAbstractButton *enabledButton=0)
SoMaterial * getMaterial(VP1MaterialButton *) const
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 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)
VP1RawDataFlags::InDetPartsFlags last_enabledInDetParts
Ui::VP1RawDataControllerForm ui
Ui::RawDataSysSettingsCutsForm ui_cuts
Ui::RawDataSysSettingsDisplayForm ui_display
Ui::RawDataSysSettingsInteractionsForm ui_int
QList< VP1Interval > cutAllowedPhi() const
void actualRestoreSettings(VP1Deserialise &)
SoMaterial * bcmHighAttMaterial() const
void possibleChange_useSpecialTRTHTMaterial()
void possibleChange_useSpecialBCMHighAttMaterial()
void actualSaveSettings(VP1Serialise &) const
void possibleChange_enabledInDetParts()
VP1CollectionWidget * collWidget() const
VP1RawDataFlags::InDetPartsFlags enabledInDetParts() const
void possibleChange_showVolumeOutLines()