8#include "ui_perelectroncollectionsettings_form.h"
9#include "ui_settings_cuts_form.h"
18#include "Inventor/nodes/SoDrawStyle.h"
19#include "Inventor/nodes/SoLightModel.h"
20#include "Inventor/nodes/SoMaterial.h"
28#include <QDragEnterEvent>
78 theclass->messageVerbose(
"Initialising material editor dialog");
79 editwindow =
new QWidget(0,Qt::WindowStaysOnTopHint);
84 SoMaterial* defParamMat =
new SoMaterial;
96 colours.append(QColor(0.0, 170.0, 255.0));
97 colours.append(QColor(170, 85, 255));
98 colours.append(QColor(255, 85, 0));
99 colours.append(QColor(170, 0, 127));
100 colours.append(QColor(170, 255, 0));
101 colours.append(QColor(85, 0, 255));
103 for (
unsigned int i=0; i<6;++i){
113 m_d->editwindow->setWindowTitle(t);
123 m_d->theclass =
this;
124 m_d->initEditWindow();
130 m_d->trackDrawStyle =
new SoDrawStyle;
131 m_d->trackDrawStyle->setName(
"ElectronDrawStyle");
132 m_d->trackDrawStyle->pointSize=5.0;
133 m_d->trackDrawStyle->ref();
135 connect(
m_d->editwindow_ui.horizontalSlider_trackWidth,SIGNAL(valueChanged(
int)),
this,SLOT(
updateTrackDrawStyle()));
138 connect(
m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM,SIGNAL(valueChanged(
double)),
this,SLOT(
updateTrackTubeRadius()));
141 m_d->trackLightModel =
new SoLightModel;
142 m_d->trackLightModel->setName(
"ElectronLightModel");
143 m_d->trackLightModel->ref();
145 connect(
m_d->editwindow_ui.checkBox_tracksUseBaseLightModel,SIGNAL(toggled(
bool)),
this,SLOT(
updateTrackLightModel(
bool)));
148 #if defined BUILDVP1LIGHT
149 m_d->editwindow_ui.radioButton_existingParameters->setChecked(
true);
150 m_d->editwindow_ui.radioButton_existingParameters->setEnabled(
true);
151 m_d->editwindow_ui.radioButton_extrapolate->setChecked(
false);
152 m_d->editwindow_ui.radioButton_extrapolate->setEnabled(
false);
153 m_d->editwindow_ui.radioButton_extrapolate->setToolTip(
"Not available in VP1 Light");
154 m_d->editwindow_ui.horizontalSlider_numBezierSteps->setValue(10);
155 m_d->editwindow_ui.horizontalSlider_numBezierSteps->setSliderPosition(10);
199 setAcceptDrops(
true);
212 delete m_d->editwindow;
213 m_d->trackDrawStyle->unref();
214 m_d->trackLightModel->unref();
220 if (objectName().isEmpty())
221 setObjectName(
"ElectronCollectionSettingsButton");
222 messageVerbose(
"setColButtonProperties: color=" +
str(
m_d->matButton->lastAppliedDiffuseColour()));
236 if (!
m_d->editwindow)
237 m_d->initEditWindow();
239 if (
m_d->editwindow->isHidden())
240 m_d->editwindow->show();
242 m_d->editwindow->hide();
248 if (!
m_d->matButton)
m_d->initEditWindow();
249 m_d->matButton->setMaterial(mat);
255 if (!
m_d->matButton)
m_d->initEditWindow();
256 m_d->matButton->setMaterial(mat);
260 if (!
m_d->matButton)
m_d->initEditWindow();
261 return m_d->matButton->lastAppliedTransparency();
265 if (!
m_d->matButton)
m_d->initEditWindow();
266 return m_d->matButton->lastAppliedShininess();
270 if (!
m_d->matButton)
m_d->initEditWindow();
271 return m_d->matButton->lastAppliedBrightness();
276 return m_d->editwindow_ui.checkBox_trackTubes->isChecked() ?
277 m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM->value() : 0.0;
292 if (
m_d->trackDrawStyle->lineWidth.getValue()!=val)
293 m_d->trackDrawStyle->lineWidth = val;
298 if (
m_d->trackLightModel->model.getValue()!=(
base?SoLightModel::BASE_COLOR:SoLightModel::PHONG)) {
301 m_d->trackLightModel->model.setValue(SoLightModel::BASE_COLOR);
303 m_d->trackLightModel->model.setValue(SoLightModel::PHONG);
315 return m_d->trackDrawStyle;
320 return m_d->trackLightModel;
324 return m_d->editwindow_ui.radioButton_existingParameters->isChecked();
328 return m_d->editwindow_ui.horizontalSlider_numBezierSteps->value();
332 return m_d->defaultParametersMatButton->handledMaterials().at(0);
335 return (
m_d->parameterTypeMatButtons.at(
static_cast<unsigned int>(position)))->handledMaterials().at(0);
351 if (!
m_d->editwindow)
352 m_d->initEditWindow();
353 return m_d->editwindow_ui.checkBox_hideactualpaths->isChecked();
358 if (!
m_d->editwindow)
359 m_d->initEditWindow();
360 messageVerbose(
"ElectronCollectionSettingsButton::showParameters returning "+
str(
m_d->editwindow_ui.checkBox_showparameters->isChecked()));
361 return m_d->editwindow_ui.checkBox_showparameters->isChecked();
366 if (!
m_d->editwindow)
367 m_d->initEditWindow();
368 messageVerbose(
"ElectronCollectionSettingsButton::colourParametersByType returning "+
str(
m_d->editwindow_ui.checkBox_parameters_colourByType->isChecked()));
369 return m_d->editwindow_ui.checkBox_parameters_colourByType->isChecked();
375 if (!
m_d->editwindow)
376 m_d->initEditWindow();
377 return m_d->editwindow_ui.checkBox_vertexAssociated->isChecked();
383 if (event->button() == Qt::LeftButton)
384 m_d->dragStartPosition =
event->pos();
385 QPushButton::mousePressEvent(event);
391 if (event->source()!=
this && event->mimeData()->hasFormat(
"vp1/material"))
392 event->acceptProposedAction();
398 if (!(event->buttons() & Qt::LeftButton))
400 if ((event->pos() -
m_d->dragStartPosition).manhattanLength()
401 < QApplication::startDragDistance())
404 QDrag *drag =
new QDrag(
this);
405 QMimeData *mimeData =
new QMimeData;
414 mimeData->setData(
"vp1/material", byteArray);
443 drag->setMimeData(mimeData);
444 drag->exec(Qt::CopyAction | Qt::MoveAction);
450 QByteArray
data =
event->mimeData()->data(
"vp1/material");
451 event->acceptProposedAction();
461 serialise.save(
m_d->matButton);
463 serialise.save(
m_d->editwindow_ui.horizontalSlider_trackWidth);
464 serialise.save(
m_d->editwindow_ui.checkBox_trackTubes);
465 serialise.save(
m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM);
466 serialise.save(
m_d->editwindow_ui.checkBox_tracksUseBaseLightModel);
467 serialise.save(
m_d->editwindow_ui.checkBox_hideactualpaths);
470 serialise.save(
m_d->editwindow_ui.checkBox_showparameters);
471 serialise.save(
m_d->editwindow_ui.checkBox_parameters_colourByType);
473 serialise.widgetHandled(
this);
474 serialise.warnUnsaved(
this);
475 return serialise.result();
484 state.
restore(
m_d->editwindow_ui.horizontalSlider_trackWidth);
485 state.
restore(
m_d->editwindow_ui.checkBox_trackTubes);
486 state.
restore(
m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM);
487 state.
restore(
m_d->editwindow_ui.checkBox_tracksUseBaseLightModel);
488 state.
restore(
m_d->editwindow_ui.checkBox_hideactualpaths);
491 state.
restore(
m_d->editwindow_ui.checkBox_showparameters);
492 state.
restore(
m_d->editwindow_ui.checkBox_parameters_colourByType);
506 if (!
m_d->editwindow)
507 m_d->initEditWindow();
508 if (!
m_d->editwindow_ui.checkBox_cut_minpt)
516 bool isPCut =
m_d->editwindow_ui.comboBox_momtype->currentText()==
"P";
518 const double minFromInterface=
m_d->editwindow_ui.doubleSpinBox_cut_minpt_gev->value()*1000;
519 const double maxFromInterface=
m_d->editwindow_ui.doubleSpinBox_cut_maxpt_gev->value()*1000;
524 min = (
m_d->editwindow_ui.checkBox_cut_minpt->isChecked() ? minFromInterface : -std::numeric_limits<double>::infinity());
525 max = (
m_d->editwindow_ui.checkBox_cut_maxpt->isChecked() ? maxFromInterface : std::numeric_limits<double>::infinity());
527 min = (
m_d->editwindow_ui.checkBox_cut_maxpt->isChecked() ? -maxFromInterface : -std::numeric_limits<double>::infinity());
528 max = (
m_d->editwindow_ui.checkBox_cut_minpt->isChecked() ? -minFromInterface : std::numeric_limits<double>::infinity());
542 if (!
m_d->editwindow)
543 m_d->initEditWindow();
544 return m_d->editwindow_ui.etaPhiCutWidget->allowedEta();
550 if (!
m_d->editwindow)
551 m_d->initEditWindow();
552 return m_d->editwindow_ui.etaPhiCutWidget->allowedPhi();
558 if (!
m_d->editwindow)
559 m_d->initEditWindow();
560 unsigned npixel =
m_d->editwindow_ui.checkBox_cut_nhits_pixel->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nhits_pixel->value() : 0;
561 unsigned nsct =
m_d->editwindow_ui.checkBox_cut_nhits_sct->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nhits_sct->value() : 0;
562 unsigned ntrt =
m_d->editwindow_ui.checkBox_cut_nhits_trt->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nhits_trt->value() : 0;
563 unsigned nmuon =
m_d->editwindow_ui.checkBox_cut_nhits_muon->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nhits_muon->value() : 0;
565 if (!npixel&&!nsct&&!ntrt&&!nmuon)
567 l << npixel << nsct << ntrt << nmuon;
616 messageVerbose(
"ElectronCollectionSettingsButton::possibleChange_showParameters emitting showParametersChanged ");
622 messageVerbose(
"ElectronCollectionSettingsButton::possibleChange_parameterColours emitting colourParametersByTypeChanged ");
char data[hepevt_bytes_allocation_ATLAS]
void restore(QCheckBox *sb)
void warnUnrestored(QObject *)
void widgetHandled(QWidget *)
void messageVerbose(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.