8#include "ui_pertrackparticlecollectionsettings_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(
"TrackParticleDrawStyle");
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(
"TrackParticleLightModel");
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);
198 setAcceptDrops(
true);
211 delete m_d->editwindow;
212 m_d->trackDrawStyle->unref();
213 m_d->trackLightModel->unref();
219 if (objectName().isEmpty())
220 setObjectName(
"TrackParticleCollectionSettingsButton");
221 messageVerbose(
"setColButtonProperties: color=" +
str(
m_d->matButton->lastAppliedDiffuseColour()));
235 if (!
m_d->editwindow)
236 m_d->initEditWindow();
238 if (
m_d->editwindow->isHidden())
239 m_d->editwindow->show();
241 m_d->editwindow->hide();
247 if (!
m_d->matButton)
m_d->initEditWindow();
248 m_d->matButton->setMaterial(mat);
254 if (!
m_d->matButton)
m_d->initEditWindow();
255 m_d->matButton->setMaterial(mat);
259 if (!
m_d->matButton)
m_d->initEditWindow();
260 return m_d->matButton->lastAppliedTransparency();
264 if (!
m_d->matButton)
m_d->initEditWindow();
265 return m_d->matButton->lastAppliedShininess();
269 if (!
m_d->matButton)
m_d->initEditWindow();
270 return m_d->matButton->lastAppliedBrightness();
275 return m_d->editwindow_ui.checkBox_trackTubes->isChecked() ?
276 m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM->value() : 0.0;
291 if (
m_d->trackDrawStyle->lineWidth.getValue()!=val)
292 m_d->trackDrawStyle->lineWidth = val;
297 if (
m_d->trackLightModel->model.getValue()!=(
base?SoLightModel::BASE_COLOR:SoLightModel::PHONG)) {
300 m_d->trackLightModel->model.setValue(SoLightModel::BASE_COLOR);
302 m_d->trackLightModel->model.setValue(SoLightModel::PHONG);
314 return m_d->trackDrawStyle;
319 return m_d->trackLightModel;
323 return m_d->editwindow_ui.radioButton_existingParameters->isChecked();
327 return m_d->editwindow_ui.horizontalSlider_numBezierSteps->value();
331 return m_d->defaultParametersMatButton->handledMaterials().at(0);
334 return (
m_d->parameterTypeMatButtons.at(
static_cast<unsigned int>(position)))->handledMaterials().at(0);
350 if (!
m_d->editwindow)
351 m_d->initEditWindow();
352 return m_d->editwindow_ui.checkBox_hideactualpaths->isChecked();
357 if (!
m_d->editwindow)
358 m_d->initEditWindow();
359 messageVerbose(
"TrackParticleCollectionSettingsButton::showParameters returning "+
str(
m_d->editwindow_ui.checkBox_showparameters->isChecked()));
360 return m_d->editwindow_ui.checkBox_showparameters->isChecked();
365 if (!
m_d->editwindow)
366 m_d->initEditWindow();
367 messageVerbose(
"TrackParticleCollectionSettingsButton::colourParametersByType returning "+
str(
m_d->editwindow_ui.checkBox_parameters_colourByType->isChecked()));
368 return m_d->editwindow_ui.checkBox_parameters_colourByType->isChecked();
374 if (!
m_d->editwindow)
375 m_d->initEditWindow();
376 return m_d->editwindow_ui.checkBox_vertexAssociated->isChecked();
382 if (event->button() == Qt::LeftButton)
383 m_d->dragStartPosition =
event->pos();
384 QPushButton::mousePressEvent(event);
390 if (event->source()!=
this && event->mimeData()->hasFormat(
"vp1/material"))
391 event->acceptProposedAction();
397 if (!(event->buttons() & Qt::LeftButton))
399 if ((event->pos() -
m_d->dragStartPosition).manhattanLength()
400 < QApplication::startDragDistance())
403 QDrag *drag =
new QDrag(
this);
404 QMimeData *mimeData =
new QMimeData;
413 mimeData->setData(
"vp1/material", byteArray);
442 drag->setMimeData(mimeData);
443 drag->exec(Qt::CopyAction | Qt::MoveAction);
449 QByteArray
data =
event->mimeData()->data(
"vp1/material");
450 event->acceptProposedAction();
460 serialise.save(
m_d->matButton);
462 serialise.save(
m_d->editwindow_ui.horizontalSlider_trackWidth);
463 serialise.save(
m_d->editwindow_ui.checkBox_trackTubes);
464 serialise.save(
m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM);
465 serialise.save(
m_d->editwindow_ui.checkBox_tracksUseBaseLightModel);
466 serialise.save(
m_d->editwindow_ui.checkBox_hideactualpaths);
469 serialise.save(
m_d->editwindow_ui.checkBox_showparameters);
470 serialise.save(
m_d->editwindow_ui.checkBox_parameters_colourByType);
472 serialise.widgetHandled(
this);
473 serialise.warnUnsaved(
this);
474 return serialise.result();
483 state.
restore(
m_d->editwindow_ui.horizontalSlider_trackWidth);
484 state.
restore(
m_d->editwindow_ui.checkBox_trackTubes);
485 state.
restore(
m_d->editwindow_ui.doubleSpinBox_trackTubesRadiusMM);
486 state.
restore(
m_d->editwindow_ui.checkBox_tracksUseBaseLightModel);
487 state.
restore(
m_d->editwindow_ui.checkBox_hideactualpaths);
490 state.
restore(
m_d->editwindow_ui.checkBox_showparameters);
491 state.
restore(
m_d->editwindow_ui.checkBox_parameters_colourByType);
505 if (!
m_d->editwindow)
506 m_d->initEditWindow();
507 if (!
m_d->editwindow_ui.checkBox_cut_minpt)
515 bool isPCut =
m_d->editwindow_ui.comboBox_momtype->currentText()==
"P";
517 const double minFromInterface=
m_d->editwindow_ui.doubleSpinBox_cut_minpt_gev->value()*1000;
518 const double maxFromInterface=
m_d->editwindow_ui.doubleSpinBox_cut_maxpt_gev->value()*1000;
523 min = (
m_d->editwindow_ui.checkBox_cut_minpt->isChecked() ? minFromInterface : -std::numeric_limits<double>::infinity());
524 max = (
m_d->editwindow_ui.checkBox_cut_maxpt->isChecked() ? maxFromInterface : std::numeric_limits<double>::infinity());
526 min = (
m_d->editwindow_ui.checkBox_cut_maxpt->isChecked() ? -maxFromInterface : -std::numeric_limits<double>::infinity());
527 max = (
m_d->editwindow_ui.checkBox_cut_minpt->isChecked() ? -minFromInterface : std::numeric_limits<double>::infinity());
541 if (!
m_d->editwindow)
542 m_d->initEditWindow();
543 return m_d->editwindow_ui.etaPhiCutWidget->allowedEta();
549 if (!
m_d->editwindow)
550 m_d->initEditWindow();
551 return m_d->editwindow_ui.etaPhiCutWidget->allowedPhi();
557 if (!
m_d->editwindow)
558 m_d->initEditWindow();
559 unsigned npixel =
m_d->editwindow_ui.checkBox_cut_nhits_pixel->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nhits_pixel->value() : 0;
560 unsigned nsct =
m_d->editwindow_ui.checkBox_cut_nhits_sct->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nhits_sct->value() : 0;
561 unsigned ntrt =
m_d->editwindow_ui.checkBox_cut_nhits_trt->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nhits_trt->value() : 0;
562 unsigned nmuon =
m_d->editwindow_ui.checkBox_cut_nhits_muon->isChecked() ?
m_d->editwindow_ui.spinBox_cut_nhits_muon->value() : 0;
564 if (!npixel&&!nsct&&!ntrt&&!nmuon)
566 l << npixel << nsct << ntrt << nmuon;
615 messageVerbose(
"TrackParticleCollectionSettingsButton::possibleChange_showParameters emitting showParametersChanged ");
621 messageVerbose(
"TrackParticleCollectionSettingsButton::possibleChange_parameterColours emitting colourParametersByTypeChanged ");
char data[hepevt_bytes_allocation_ATLAS]
VP1Interval last_cutAllowedEta
TrackParticleCollectionSettingsButton * theclass
bool last_cutOnlyVertexAssocTracks
QList< unsigned > last_cutRequiredNHits
VP1MaterialButton * matButton
QList< VP1Interval > last_cutAllowedPhi
VP1MaterialButton * defaultParametersMatButton
double last_trackTubeRadius
QList< VP1MaterialButton * > parameterTypeMatButtons
SoDrawStyle * trackDrawStyle
Ui::TrackParticleCollectionSettingsForm editwindow_ui
VP1Interval last_cutAllowedP
VP1Interval last_cutAllowedPt
SoLightModel * trackLightModel
QList< VP1Interval > cutAllowedPhi() const
void possibleChange_parameterColours()
bool useExistingParameters() const
VP1Interval cutAllowedPt() const
void trackTubeRadiusChanged(const double &)
void setMaterialText(const QString &)
void lastAppliedChanged()
virtual bool setMaterial(SoMaterial *)
void updateTrackLightModel(bool)
void possibleChange_cutRequiredNHits()
void setDimension(int dim)
bool hideActualTrackPath() const
void colourParametersByTypeChanged(bool)
void cutAllowedPtChanged(const VP1Interval &)
SoMaterial * defaultParameterMaterial() const
void updateTrackDrawStyle()
SoLightModel * trackLightModel() const
QByteArray saveState() const
fill out with the state of the object (used for drag and drop etc)
int numOfStepsForInterpolation() const
Returns true if the propagation should use the parameters already on the particle,...
virtual void copyValuesFromMaterial(SoMaterial *)
bool showParameters() const
Returns the number of steps to use when interpolating between paramters (0 is no interpolation....
void restoreFromState(const QByteArray &)
double trackTubeRadius() const
void mousePressEvent(QMouseEvent *event)
VP1Interval cutAllowedEta() const
void cutAllowedPhiChanged(const QList< VP1Interval > &)
void dropEvent(QDropEvent *event)
virtual double lastAppliedBrightness() const
bool cutOnlyVertexAssocTracks() const
Return true if this collection should only should tracks associated to a vertex.
void dragEnterEvent(QDragEnterEvent *event)
void mouseMoveEvent(QMouseEvent *event)
void hideActualTrackPathChanged(bool)
void possibleChange_cutAllowedEta()
void propagationOptionsChanged()
virtual double lastAppliedTransparency() const
TrackParticleCollectionSettingsButton(QWidget *parent=0, int dim=25)
void showParametersChanged(bool)
void updateTrackTubeRadius()
bool colourParametersByType() const
virtual double lastAppliedShininess() const
void possibleChange_cutAllowedPt()
QList< unsigned > cutRequiredNHits() const
SoMaterial * parameterMaterial(xAOD::ParameterPosition) const
void possibleChange_cutAllowedPhi()
void possibleChange_cutOnlyVertexAssocTracks()
void cutRequiredNHitsChanged(const QList< unsigned > &)
void showEditMaterialDialog()
SoDrawStyle * trackDrawStyle() const
void updateHideActualTrackPath(bool)
virtual ~TrackParticleCollectionSettingsButton()
void cutAllowedEtaChanged(const VP1Interval &)
void cutOnlyVertexAssocTracksChanged(bool)
void possibleChange_showParameters()
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.