15#define VP1IMPVARNAME m_d
19#include "ui_vp1caloclustercontrollerform.h"
20#include "ui_calocluster_settings_display_form.h"
21#include "ui_calocluster_settings_interactions_form.h"
22#include "ui_calocluster_settings_cuts_form.h"
27#include "CLHEP/Units/SystemOfUnits.h"
32 Ui::VP1CaloClusterControllerForm
ui{};
33 Ui::CaloClusterSysSettingsCutsForm
ui_cuts{};
34 Ui::CaloClusterSysSettingsInteractionsForm
ui_int{};
51 return "<"+QString(par.first?
"log":
"linear")+
", "+QString::number(par.second/(CLHEP::cm/CLHEP::GeV))+
" cm/GeV>";
58 m_d->ui.setupUi(
this);
59 m_d->gui_mostEnergetic = 0;
68 m_d->ui_display.widget_drawOptions->setLineWidths(2.0);
69 m_d->ui_display.widget_drawOptions->setPointSizesDisabled();
70 m_d->ui_display.widget_drawOptions->setBaseLightingDisabled();
71 m_d->ui_display.widget_drawOptions->setComplexityDisabled();
73 m_d->ui_cuts.etaPhiCutWidget->setEtaCutEnabled(
false);
135 s.save(
m_d->ui_display.checkBox_logscale);
136 s.save(
m_d->ui_display.radioButton_relativeScale,
m_d->ui_display.radioButton_absoluteScale);
137 s.save(
m_d->ui_display.doubleSpinBox_lengthOfMostEnergetic);
138 s.save(
m_d->ui_display.doubleSpinBox_lengthOf10GeV);
139 s.save(
m_d->ui_cuts.checkBox_Emin);
140 s.save(
m_d->ui_cuts.doubleSpinBox_Emin);
141 s.save(
m_d->ui_cuts.checkBox_Emax);
142 s.save(
m_d->ui_cuts.doubleSpinBox_Emax);
143 s.save(
m_d->ui_cuts.etaPhiCutWidget);
144 s.save(
m_d->ui_int.checkBox_printinfo);
145 s.save(
m_d->ui_int.checkBox_printinfo_verbose);
146 s.save(
m_d->ui_int.checkBox_zoom);
147 s.save(
m_d->ui_display.checkBox_showVolumeOutLines);
148 s.save(
m_d->ui_display.widget_drawOptions);
149 s.save(
m_d->ui.radioButton_energyMode_Et,
m_d->ui.radioButton_energyMode_E);
155 if (s.version()<0||s.version()>3) {
156 message(
"Warning: State data in .vp1 file has unsupported version ("+
str(s.version())+
")");
161 s.restore(
m_d->ui_display.checkBox_logscale);
162 s.restore(
m_d->ui_display.radioButton_relativeScale,
m_d->ui_display.radioButton_absoluteScale);
163 s.restore(
m_d->ui_display.doubleSpinBox_lengthOfMostEnergetic);
164 s.restore(
m_d->ui_display.doubleSpinBox_lengthOf10GeV);
165 s.restore(
m_d->ui_cuts.checkBox_Emin);
166 s.restore(
m_d->ui_cuts.doubleSpinBox_Emin);
167 s.restore(
m_d->ui_cuts.checkBox_Emax);
168 s.restore(
m_d->ui_cuts.doubleSpinBox_Emax);
169 s.restore(
m_d->ui_cuts.etaPhiCutWidget);
170 if (s.version()>=1) {
171 s.restore(
m_d->ui_int.checkBox_printinfo);
172 s.restore(
m_d->ui_int.checkBox_printinfo_verbose);
173 s.restore(
m_d->ui_int.checkBox_zoom);
175 if (s.version()>=2) {
176 s.restore(
m_d->ui_display.checkBox_showVolumeOutLines);
177 s.restore(
m_d->ui_display.widget_drawOptions);
180 s.restore(
m_d->ui.radioButton_energyMode_Et,
m_d->ui.radioButton_energyMode_E);
186 return m_d->collWidget;
194 bool save =
m_d->ui_cuts.etaPhiCutWidget->blockSignals(
true);
196 if (sender()==
m_d->ui_cuts.toolButton_quicketa_barrel)
197 m_d->ui_cuts.etaPhiCutWidget->setEtaCut(cracketa);
198 else if (sender()==
m_d->ui_cuts.toolButton_quicketa_endcapA)
199 m_d->ui_cuts.etaPhiCutWidget->setEtaCut(cracketa,9.0);
200 else if (sender()==
m_d->ui_cuts.toolButton_quicketa_endcapC)
201 m_d->ui_cuts.etaPhiCutWidget->setEtaCut(-9.0,-cracketa);
203 message(
"ERROR: Unknown sender() in etaCutPresetButtonTriggered() slot.");
205 m_d->ui_cuts.etaPhiCutWidget->blockSignals(save);
212 return m_d->ui_display.widget_drawOptions->drawOptionsGroup();
223 const bool relative =
m_d->ui_display.radioButton_relativeScale->isChecked();
224 const bool logscale =
m_d->ui_display.checkBox_logscale->isChecked();
226 double highestvisibleenergy=0*CLHEP::eV;
229 if ( col && highestvisibleenergy < col->highestVisibleClusterEnergy() )
232 if (
m_d->gui_mostEnergetic!=highestvisibleenergy) {
233 m_d->gui_mostEnergetic=highestvisibleenergy;
234 m_d->ui_display.label_current_most_energetic->setText(
"Current value: "+QString::number(
m_d->gui_mostEnergetic/CLHEP::GeV,
'f',2)+
" GeV");
237 const double length = (relative ?
m_d->ui_display.doubleSpinBox_lengthOfMostEnergetic->value()*CLHEP::m
238 :
m_d->ui_display.doubleSpinBox_lengthOf10GeV->value()*CLHEP::m );
239 const double energy = relative ? highestvisibleenergy : 10*CLHEP::GeV;
240 const double minscale = 1*CLHEP::mm/(1*CLHEP::GeV);
241 const double maxscale = 1*CLHEP::m/(1*CLHEP::MeV);
246 scl = logscale ?
length/log(1+fabs(energy)) :
length/energy;
247 if (scl!=scl||scl>maxscale)
251 return QPair<bool,double>(logscale,scl);
257 const double min = (
m_d->ui_cuts.checkBox_Emin->isChecked() ?
m_d->ui_cuts.doubleSpinBox_Emin->value()*CLHEP::GeV : -std::numeric_limits<double>::infinity());
258 const double max = (
m_d->ui_cuts.checkBox_Emax->isChecked() ?
m_d->ui_cuts.doubleSpinBox_Emax->value()*CLHEP::GeV : std::numeric_limits<double>::infinity());
267 return m_d->ui_cuts.etaPhiCutWidget->allowedEta();
273 return m_d->ui_cuts.etaPhiCutWidget->allowedPhi();
279 return m_d->ui_display.checkBox_showVolumeOutLines->isChecked();
284 return m_d->ui.radioButton_energyMode_Et->isChecked();
290#define VP1CONTROLLERCLASSNAME CaloClusterSysController
#define POSSIBLECHANGE_IMP(x)
VP1Interval last_cutAllowedEnergies
Ui::VP1CaloClusterControllerForm ui
QPair< bool, double > last_scale
Ui::CaloClusterSysSettingsCutsForm ui_cuts
bool last_useTransverseEnergies
Ui::CaloClusterSysSettingsDisplayForm ui_display
QList< VP1Interval > last_cutAllowedPhi
bool last_showVolumeOutLines
VP1CollectionWidget * collWidget
VP1Interval last_cutAllowedEta
Ui::CaloClusterSysSettingsInteractionsForm ui_int
VP1CollectionWidget * collWidget() const
VP1Interval cutAllowedEta() const
bool printInfoOnClick() const
void possibleChange_showVolumeOutLines()
void possibleChange_useTransverseEnergies()
virtual ~CaloClusterSysController()
bool showVolumeOutLines() const
bool useTransverseEnergies() const
VP1Interval cutAllowedEnergies() const
QList< VP1Interval > cutAllowedPhi() const
int currentSettingsVersion() const
bool printVerboseInfoOnClick() const
SoGroup * drawOptions() const
void possibleChange_cutAllowedEta()
void possibleChange_scale()
void possibleChange_cutAllowedPhi()
static QString toString(const T &t)
void possibleChange_cutAllowedEnergies()
void actualSaveSettings(VP1Serialise &) const
void etaCutPresetButtonTriggered()
QPair< bool, double > scale() const
CaloClusterSysController(IVP1System *sys)
void actualRestoreSettings(VP1Deserialise &)
double highestVisibleClusterEnergy() 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 message(const QString &) const