11#include "ui_pertrackcollectionsettings_form.h"
12#include "ui_settings_cuts_form.h"
14#include "CLHEP/Units/SystemOfUnits.h"
16#include "Inventor/nodes/SoDrawStyle.h"
17#include "Inventor/nodes/SoLightModel.h"
25#include <QDragEnterEvent>
77 theclass->messageVerbose(
"Initialising material editor dialog");
78 editwindow =
new QWidget(
nullptr,Qt::WindowStaysOnTopHint);
87 m_d->editwindow->setWindowTitle(t);
98 m_d->initEditWindow();
101 m_d->serialization_version = 2;
108 m_d->trackDrawStyle =
new SoDrawStyle;
109 m_d->trackDrawStyle->setName(
"TrackDrawStyle");
110 m_d->trackDrawStyle->ref();
112 connect(
m_d->editwindow_ui.horizontalSlider_trackWidth,SIGNAL(valueChanged(
int)),
this,SLOT(
updateTrackDrawStyle()));
114 m_d->trackLightModel =
new SoLightModel;
115 m_d->trackLightModel->setName(
"TrackLightModel");
116 m_d->trackLightModel->ref();
118 connect(
m_d->editwindow_ui.checkBox_tracksUseBaseLightModel,SIGNAL(toggled(
bool)),
this,SLOT(
updateTrackLightModel(
bool)));
122 connect(
m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM,SIGNAL(valueChanged(
double)),
this,SLOT(
updateTrackTubeRadius()));
128 m_d->last_useDefaultCuts=
m_d->editwindow_ui.checkBox_defaultCuts->isChecked();
129 messageVerbose(
"editwindow_ui.checkBox_defaultCuts->isChecked() L " +
str(
m_d->editwindow_ui.checkBox_defaultCuts->isChecked()));
180 setAcceptDrops(
true);
193 delete m_d->editwindow;
194 m_d->trackDrawStyle->unref();
195 m_d->trackLightModel->unref();
201 if (objectName().isEmpty())
202 setObjectName(
"TrackCollectionSettingsButton");
203 messageVerbose(
"setColButtonProperties: color=" +
str(
m_d->matButton->lastAppliedDiffuseColour()));
217 if (!
m_d->editwindow)
218 m_d->initEditWindow();
220 if (
m_d->editwindow->isHidden())
221 m_d->editwindow->show();
223 m_d->editwindow->hide();
228 if (!
m_d->matButton)
m_d->initEditWindow();
229 m_d->matButton->setMaterial(mat);
235 if (!
m_d->matButton)
m_d->initEditWindow();
236 m_d->matButton->setMaterial(mat);
240 if (!
m_d->matButton)
m_d->initEditWindow();
241 return m_d->matButton->lastAppliedTransparency();
245 if (!
m_d->matButton)
m_d->initEditWindow();
246 return m_d->matButton->lastAppliedShininess();
250 if (!
m_d->matButton)
m_d->initEditWindow();
251 return m_d->matButton->lastAppliedBrightness();
256 return m_d->editwindow_ui.checkBox_trackTubes->isChecked() ?
257 m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM->value()*CLHEP::mm : 0.0;
271 if (
m_d->trackDrawStyle->lineWidth.getValue()!=val)
272 m_d->trackDrawStyle->lineWidth = val;
277 if (
m_d->trackLightModel->model.getValue()!=(
base?SoLightModel::BASE_COLOR:SoLightModel::PHONG)) {
280 m_d->trackLightModel->model.setValue(SoLightModel::BASE_COLOR);
282 m_d->trackLightModel->model.setValue(SoLightModel::PHONG);
294 return m_d->trackDrawStyle;
299 return m_d->trackLightModel;
304 return m_d->editwindow_ui.checkBox_hideactualpaths->isChecked();
310 return m_d->editwindow_ui.checkBox_defaultCuts->isChecked();
315 return m_d->editwindow_ui.checkBox_vertexAssociated->isChecked();
321 if (event->button() == Qt::LeftButton)
322 m_d->dragStartPosition =
event->pos();
323 QPushButton::mousePressEvent(event);
329 if (event->source()!=
this && event->mimeData()->hasFormat(
"vp1/material"))
330 event->acceptProposedAction();
336 if (!(event->buttons() & Qt::LeftButton))
338 if ((event->pos() -
m_d->dragStartPosition).manhattanLength()
339 < QApplication::startDragDistance())
342 QDrag *drag =
new QDrag(
this);
343 QMimeData *mimeData =
new QMimeData;
352 mimeData->setData(
"vp1/material", byteArray);
381 drag->setMimeData(mimeData);
382 drag->exec(Qt::CopyAction | Qt::MoveAction);
388 QByteArray
data =
event->mimeData()->data(
"vp1/material");
389 event->acceptProposedAction();
402 serialise.save(
m_d->matButton);
404 serialise.save(
m_d->editwindow_ui.horizontalSlider_trackWidth);
405 serialise.save(
m_d->editwindow_ui.checkBox_trackTubes);
406 serialise.save(
m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM);
407 serialise.save(
m_d->editwindow_ui.checkBox_tracksUseBaseLightModel);
408 serialise.save(
m_d->editwindow_ui.checkBox_hideactualpaths);
409 serialise.save(
m_d->editwindow_ui.checkBox_defaultCuts);
410 serialise.save(
m_d->editwindow_ui.checkBox_defaultCuts);
412 serialise.save(
m_d->editwindow_ui.checkBox_cut_minpt);
413 serialise.save(
m_d->editwindow_ui.checkBox_cut_maxpt);
414 serialise.save(
m_d->editwindow_ui.doubleSpinBox_cut_minpt_gev);
415 serialise.save(
m_d->editwindow_ui.doubleSpinBox_cut_maxpt_gev);
416 serialise.save(
m_d->editwindow_ui.checkBox_cut_minpt);
417 serialise.save(
m_d->editwindow_ui.comboBox_momtype);
418 serialise.save(
m_d->editwindow_ui.etaPhiCutWidget);
419 serialise.save(
m_d->editwindow_ui.etaPhiCutWidget);
420 serialise.save(
m_d->editwindow_ui.checkBox_cut_nhits_pixel);
421 serialise.save(
m_d->editwindow_ui.checkBox_cut_nhits_sct);
422 serialise.save(
m_d->editwindow_ui.checkBox_cut_nhits_trt);
423 serialise.save(
m_d->editwindow_ui.checkBox_cut_nhits_muon);
424 serialise.save(
m_d->editwindow_ui.checkBox_cut_nprecisionhits_muon);
425 serialise.save(
m_d->editwindow_ui.spinBox_cut_nhits_pixel);
426 serialise.save(
m_d->editwindow_ui.spinBox_cut_nhits_sct);
427 serialise.save(
m_d->editwindow_ui.spinBox_cut_nhits_trt);
428 serialise.save(
m_d->editwindow_ui.spinBox_cut_nhits_muon);
429 serialise.save(
m_d->editwindow_ui.spinBox_cut_nprecisionhits_muon);
430 serialise.save(
m_d->editwindow_ui.checkBox_cut_truthtracks_creationvertexinIR);
431 serialise.save(
m_d->editwindow_ui.checkBox_cut_truthtracks_excludebarcode0);
432 serialise.save(
m_d->editwindow_ui.checkBox_cut_truthtracks_excludeneutrals);
433 serialise.save(
m_d->editwindow_ui.checkBox_vertexAssociated);
435 serialise.widgetHandled(
this);
436 serialise.warnUnsaved(
this);
437 return serialise.result();
445 message(
"Version of 'TrackCollectionSettingsButton' settings file not recognized: "+QString::number(state.
version())+
" [current: "+QString::number(
m_d->serialization_version)+
"]. Ignoring...");
449 state.
restore(
m_d->editwindow_ui.horizontalSlider_trackWidth);
450 state.
restore(
m_d->editwindow_ui.checkBox_trackTubes);
451 state.
restore(
m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM);
452 state.
restore(
m_d->editwindow_ui.checkBox_tracksUseBaseLightModel);
453 state.
restore(
m_d->editwindow_ui.checkBox_hideactualpaths);
454 state.
restore(
m_d->editwindow_ui.checkBox_defaultCuts);
456 state.
restore(
m_d->editwindow_ui.checkBox_cut_minpt);
457 state.
restore(
m_d->editwindow_ui.checkBox_cut_maxpt);
458 state.
restore(
m_d->editwindow_ui.doubleSpinBox_cut_minpt_gev);
459 state.
restore(
m_d->editwindow_ui.doubleSpinBox_cut_maxpt_gev);
460 state.
restore(
m_d->editwindow_ui.checkBox_cut_minpt);
461 state.
restore(
m_d->editwindow_ui.comboBox_momtype);
462 state.
restore(
m_d->editwindow_ui.etaPhiCutWidget);
463 state.
restore(
m_d->editwindow_ui.etaPhiCutWidget);
464 state.
restore(
m_d->editwindow_ui.checkBox_cut_nhits_pixel);
465 state.
restore(
m_d->editwindow_ui.checkBox_cut_nhits_sct);
466 state.
restore(
m_d->editwindow_ui.checkBox_cut_nhits_trt);
467 state.
restore(
m_d->editwindow_ui.checkBox_cut_nhits_muon);
468 state.
restore(
m_d->editwindow_ui.checkBox_cut_nprecisionhits_muon);
469 state.
restore(
m_d->editwindow_ui.spinBox_cut_nhits_pixel);
470 state.
restore(
m_d->editwindow_ui.spinBox_cut_nhits_sct);
471 state.
restore(
m_d->editwindow_ui.spinBox_cut_nhits_trt);
472 state.
restore(
m_d->editwindow_ui.spinBox_cut_nhits_muon);
473 state.
restore(
m_d->editwindow_ui.spinBox_cut_nprecisionhits_muon);
474 state.
restore(
m_d->editwindow_ui.checkBox_cut_truthtracks_creationvertexinIR);
475 state.
restore(
m_d->editwindow_ui.checkBox_cut_truthtracks_excludebarcode0);
476 state.
restore(
m_d->editwindow_ui.checkBox_cut_truthtracks_excludeneutrals);
477 state.
restore(
m_d->editwindow_ui.checkBox_vertexAssociated);
491 if (!
m_d->editwindow_ui.checkBox_cut_minpt)
499 bool isPCut =
m_d->editwindow_ui.comboBox_momtype->currentText()==
"P";
501 const double minFromInterface=
m_d->editwindow_ui.doubleSpinBox_cut_minpt_gev->value()*CLHEP::GeV;
502 const double maxFromInterface=
m_d->editwindow_ui.doubleSpinBox_cut_maxpt_gev->value()*CLHEP::GeV;
507 min = (
m_d->editwindow_ui.checkBox_cut_minpt->isChecked() ? minFromInterface : -std::numeric_limits<double>::infinity());
508 max = (
m_d->editwindow_ui.checkBox_cut_maxpt->isChecked() ? maxFromInterface : std::numeric_limits<double>::infinity());
510 min = (
m_d->editwindow_ui.checkBox_cut_maxpt->isChecked() ? -maxFromInterface : -std::numeric_limits<double>::infinity());
511 max = (
m_d->editwindow_ui.checkBox_cut_minpt->isChecked() ? -minFromInterface : std::numeric_limits<double>::infinity());
525 return m_d->editwindow_ui.etaPhiCutWidget->allowedEta();
531 return m_d->editwindow_ui.etaPhiCutWidget->allowedPhi();
537 unsigned npixel =
m_d->editwindow_ui.checkBox_cut_nhits_pixel->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nhits_pixel->value() : 0;
538 unsigned nsct =
m_d->editwindow_ui.checkBox_cut_nhits_sct->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nhits_sct->value() : 0;
539 unsigned ntrt =
m_d->editwindow_ui.checkBox_cut_nhits_trt->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nhits_trt->value() : 0;
540 unsigned nmuon =
m_d->editwindow_ui.checkBox_cut_nhits_muon->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nhits_muon->value() : 0;
541 unsigned nprecmuon =
m_d->editwindow_ui.checkBox_cut_nprecisionhits_muon->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nprecisionhits_muon->value() : 0;
543 if (!npixel&&!nsct&&!ntrt&&!nmuon&&!nprecmuon)
545 l << npixel << nsct << ntrt << nmuon << nprecmuon;
550 return m_d->editwindow_ui.checkBox_requireDetectorElement->isChecked() ?
m_d->editwindow_ui.lineEdit_detectorElementId->text(): QString();
556 return m_d->editwindow_ui.checkBox_cut_truthtracks_creationvertexinIR->isChecked();
562 return m_d->editwindow_ui.checkBox_cut_truthtracks_excludebarcode0->isChecked();
568 return m_d->editwindow_ui.checkBox_cut_truthtracks_excludeneutrals->isChecked();
611 messageVerbose(
"TrackCollectionSettingsButton::possibleChange_cutRequiredNHits");
620 messageVerbose(
"TrackCollectionSettingsButton::possibleChange_cutRequiredDetectorElement");
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)