8#include "ui_permuoncollectionsettings_form.h"
9#include "ui_settings_cuts_form.h"
19#include "Inventor/nodes/SoDrawStyle.h"
20#include "Inventor/nodes/SoLightModel.h"
21#include "Inventor/nodes/SoMaterial.h"
29#include <QDragEnterEvent>
77 theclass->messageVerbose(
"Initialising material editor dialog");
78 editwindow =
new QWidget(0,Qt::WindowStaysOnTopHint);
87 m_d->editwindow->setWindowTitle(t);
98 m_d->initEditWindow();
104 m_d->trackDrawStyle =
new SoDrawStyle;
105 m_d->trackDrawStyle->setName(
"MuonDrawStyle");
106 m_d->trackDrawStyle->pointSize=5.0;
107 m_d->trackDrawStyle->ref();
109 connect(
m_d->editwindow_ui.horizontalSlider_trackWidth,SIGNAL(valueChanged(
int)),
this,SLOT(
updateTrackDrawStyle()));
111 m_d->trackLightModel =
new SoLightModel;
112 m_d->trackLightModel->setName(
"MuonLightModel");
113 m_d->trackLightModel->ref();
115 connect(
m_d->editwindow_ui.checkBox_tracksUseBaseLightModel,SIGNAL(toggled(
bool)),
this,SLOT(
updateTrackLightModel(
bool)));
119 connect(
m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM,SIGNAL(valueChanged(
double)),
this,SLOT(
updateTrackTubeRadius()));
150 setAcceptDrops(
true);
163 delete m_d->editwindow;
164 m_d->trackDrawStyle->unref();
165 m_d->trackLightModel->unref();
171 if (objectName().isEmpty())
172 setObjectName(
"MuonCollectionSettingsButton");
173 messageVerbose(
"setColButtonProperties: color=" +
str(
m_d->matButton->lastAppliedDiffuseColour()));
187 if (!
m_d->editwindow)
188 m_d->initEditWindow();
190 if (
m_d->editwindow->isHidden())
191 m_d->editwindow->show();
193 m_d->editwindow->hide();
199 if (!
m_d->matButton)
m_d->initEditWindow();
200 m_d->matButton->setMaterial(mat);
206 if (!
m_d->matButton)
m_d->initEditWindow();
207 m_d->matButton->setMaterial(mat);
211 if (!
m_d->matButton)
m_d->initEditWindow();
212 return m_d->matButton->lastAppliedTransparency();
216 if (!
m_d->matButton)
m_d->initEditWindow();
217 return m_d->matButton->lastAppliedShininess();
221 if (!
m_d->matButton)
m_d->initEditWindow();
222 return m_d->matButton->lastAppliedBrightness();
227 return m_d->editwindow_ui.checkBox_trackTubes->isChecked() ?
228 m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM->value() : 0.0;
243 if (
m_d->trackDrawStyle->lineWidth.getValue()!=val)
244 m_d->trackDrawStyle->lineWidth = val;
249 if (
m_d->trackLightModel->model.getValue()!=(
base?SoLightModel::BASE_COLOR:SoLightModel::PHONG)) {
252 m_d->trackLightModel->model.setValue(SoLightModel::BASE_COLOR);
254 m_d->trackLightModel->model.setValue(SoLightModel::PHONG);
266 return m_d->trackDrawStyle;
271 return m_d->trackLightModel;
297 if (!
m_d->editwindow)
298 m_d->initEditWindow();
300 QString text =
m_d->editwindow_ui.comboBox_minimumQuality->currentText();
301 using Quality=xAOD::Muon::Quality;
302 if (text==
"Very Loose")
return static_cast<unsigned int>(Quality::VeryLoose);
303 if (text==
"Loose")
return static_cast<unsigned int>(Quality::Loose);
304 if (text==
"Medium")
return static_cast<unsigned int>(Quality::Medium);
305 if (text==
"Tight")
return static_cast<unsigned int>(Quality::Tight);
307 message(
"ERROR! MuonCollectionSettingsButton::minimumQuality - unknown value! Returning 'Very Loose'.");
308 return static_cast<unsigned int>(Quality::VeryLoose);
313 if (!
m_d->editwindow)
314 m_d->initEditWindow();
317 if (
m_d->editwindow_ui.checkBox_showTrackParticles->isChecked()) {
331 if (!
m_d->editwindow)
332 m_d->initEditWindow();
333 return m_d->editwindow_ui.checkBox_hideactualpaths->isChecked();
339 if (event->button() == Qt::LeftButton)
340 m_d->dragStartPosition =
event->pos();
341 QPushButton::mousePressEvent(event);
347 if (event->source()!=
this && event->mimeData()->hasFormat(
"vp1/material"))
348 event->acceptProposedAction();
354 if (!(event->buttons() & Qt::LeftButton))
356 if ((event->pos() -
m_d->dragStartPosition).manhattanLength()
357 < QApplication::startDragDistance())
360 QDrag *drag =
new QDrag(
this);
361 QMimeData *mimeData =
new QMimeData;
370 mimeData->setData(
"vp1/material", byteArray);
399 drag->setMimeData(mimeData);
400 drag->exec(Qt::CopyAction | Qt::MoveAction);
406 QByteArray
data =
event->mimeData()->data(
"vp1/material");
407 event->acceptProposedAction();
417 serialise.save(
m_d->matButton);
419 serialise.save(
m_d->editwindow_ui.horizontalSlider_trackWidth);
420 serialise.save(
m_d->editwindow_ui.checkBox_trackTubes);
421 serialise.save(
m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM);
422 serialise.save(
m_d->editwindow_ui.checkBox_tracksUseBaseLightModel);
423 serialise.save(
m_d->editwindow_ui.checkBox_hideactualpaths);
425 serialise.widgetHandled(
this);
426 serialise.warnUnsaved(
this);
427 return serialise.result();
436 state.
restore(
m_d->editwindow_ui.horizontalSlider_trackWidth);
437 state.
restore(
m_d->editwindow_ui.checkBox_trackTubes);
438 state.
restore(
m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM);
439 state.
restore(
m_d->editwindow_ui.checkBox_tracksUseBaseLightModel);
440 state.
restore(
m_d->editwindow_ui.checkBox_hideactualpaths);
454 if (!
m_d->editwindow)
455 m_d->initEditWindow();
456 if (!
m_d->editwindow_ui.checkBox_cut_minpt)
464 bool isPCut =
m_d->editwindow_ui.comboBox_momtype->currentText()==
"P";
466 const double minFromInterface=
m_d->editwindow_ui.doubleSpinBox_cut_minpt_gev->value()*1000;
467 const double maxFromInterface=
m_d->editwindow_ui.doubleSpinBox_cut_maxpt_gev->value()*1000;
472 min = (
m_d->editwindow_ui.checkBox_cut_minpt->isChecked() ? minFromInterface : -std::numeric_limits<double>::infinity());
473 max = (
m_d->editwindow_ui.checkBox_cut_maxpt->isChecked() ? maxFromInterface : std::numeric_limits<double>::infinity());
475 min = (
m_d->editwindow_ui.checkBox_cut_maxpt->isChecked() ? -maxFromInterface : -std::numeric_limits<double>::infinity());
476 max = (
m_d->editwindow_ui.checkBox_cut_minpt->isChecked() ? -minFromInterface : std::numeric_limits<double>::infinity());
490 if (!
m_d->editwindow)
491 m_d->initEditWindow();
492 return m_d->editwindow_ui.etaPhiCutWidget->allowedEta();
498 if (!
m_d->editwindow)
499 m_d->initEditWindow();
500 return m_d->editwindow_ui.etaPhiCutWidget->allowedPhi();
char data[hepevt_bytes_allocation_ATLAS]
void restore(QCheckBox *sb)
void warnUnrestored(QObject *)
void widgetHandled(QWidget *)
void messageVerbose(const QString &) const
void message(const QString &) const
IVP1System * systemBase() const
static double getValueLineWidthSlider(const QSlider *)
static void setLimitsLineWidthSlider(QSlider *)
static void setValueLineWidthSlider(QSlider *, const double &value)
ParameterPosition
Enum allowing us to know where in ATLAS the parameters are defined.