16#define VP1IMPVARNAME m_d
19#include <Inventor/C/errors/debugerror.h>
20#include <Inventor/nodes/SoSelection.h>
33#include "ui_vp1trackcontrollerform.h"
34#include "ui_settings_ascobjs_form.h"
35#include "ui_settings_colouring_form.h"
36#include "ui_settings_extrapolation_form.h"
37#include "ui_settings_interactions_form.h"
38#include "ui_settings_projections_form.h"
39#include "ui_settings_cuts_form.h"
40#include "ui_shift_muon_chamber_form.h"
41#include "ui_objectbrowser.h"
64#include "Inventor/nodes/SoMaterial.h"
65#include "Inventor/nodes/SoDrawStyle.h"
66#include "Inventor/nodes/SoComplexity.h"
67#include "Inventor/nodes/SoLightModel.h"
68#include <Inventor/nodes/SoSeparator.h>
69#include <Inventor/actions/SoSearchAction.h>
71#include "CLHEP/Units/SystemOfUnits.h"
74#include <QTreeWidgetItem>
75#include <QtCoreVersion>
84 Ui::VP1TrackControllerForm
ui{};
87 static SoMaterial *
createMaterial(
const int&
r,
const int& g,
const int& b) ;
146 Ui::TrackSysSettingsColouringForm
ui_col{};
148 Ui::TrackSysSettingsInteractionsForm
ui_int{};
149 Ui::TrackSysSettingsProjectionsForm
ui_proj{};
176 for(
unsigned i : l) {
177 if (!s.isEmpty()) s+=
", ";
178 s+=QString::number(i);
188 if (!s.isEmpty()) s+=
", ";
189 s+=QString::number(i);
202 QString tooltype(
"Trk::Extrapolator");
209#if QTCORE_VERSION >= 0x050E00
215 if (existingExtrapolators.contains(key))
217 sys->messageDebug(
"Attempting creation of fitter with tooltype/key "+key);
220 sys->message(
"WARNING: Could not create tool type/key "+key);
234 QStringList fittertypes;
235 fittertypes <<
"Trk::KalmanFitter"
236 <<
"Trk::GlobalChi2Fitter"
237 <<
"Trk::GaussianSumFilter"
238 <<
"Trk::DistributedKalmanFilter"
239 <<
"Trk::DeterministicAnnealingFilter";
246#if QTCORE_VERSION >= 0x050E00
252 if (existingFitters.contains(
instance))
254 sys->messageDebug(
"Attempting creation of fitter with tooltype/key "+
instance);
257 sys->message(
"WARNING: Could not create tool with type/key "+
instance);
266 m_d->theclass =
this;
267 m_d->lastUpdatedAvailableExtrapolators = QStringList(
"<dummy>");
268 m_d->lastUpdatedAvailableFitters = QStringList(
"<dummy>");
271 m_d->toolaccesshelper =
nullptr;
272 m_d->toolhelper_extrapolators =
nullptr;
273 m_d->toolhelper_fitters =
nullptr;
274 m_d->matmixer =
nullptr;
276 m_d->ui.setupUi(
this);
289 m_d->numberOfSelectedPRDs=1;
292 m_d->initMaterials();
294 m_d->materialFallback =
new SoMaterial;
295 m_d->materialFallback->ref();
297 m_d->ui_cuts.etaPhiCutWidget->setSystemBasePointer(
systemBase());
300 m_d->ascObjDrawStyle =
new SoDrawStyle;
301 m_d->ascObjDrawStyle->setName(
"AscObjDrawStyle");
302 m_d->ascObjDrawStyle->ref();
307 m_d->ascObjComplexity =
new SoComplexity;
308 m_d->ascObjComplexity->setName(
"AscObjComplexity");
309 m_d->ascObjComplexity->ref();
322 m_d->ui_proj.checkBox_projections_muonchambers->setChecked(
false);
323 m_d->ui_proj.checkBox_projections_muonchambers->setEnabled(
false);
328 m_d->ui_proj.checkBox_projections_indet->setChecked(
false);
329 m_d->ui_proj.checkBox_projections_indet->setEnabled(
false);
334 m_d->last_propagator =
nullptr;
335 m_d->last_trackFitter =
nullptr;
500 connect(
m_d->ui_col.pushButton_colourbyrandom_rerandomise,SIGNAL(clicked()),
this,SLOT(
emitRerandomise()));
503 connect(
m_d->ui_int.pushButton_refit,SIGNAL(clicked()),
this,SLOT(
emitRefit()));
507 m_d->objBrowserWidget =
m_d->ui_objBrowser.treeWidget;
508 m_d->objBrowserWidget->setSortingEnabled(
false);
510 l<<
"Object"<<
"Information";
511 m_d->objBrowserWidget->setHeaderLabels(l);
512 connect(
m_d->objBrowserWidget,SIGNAL(itemClicked(QTreeWidgetItem *,
int)),
this,SLOT(
objectBrowserClicked(QTreeWidgetItem *,
int)));
517 QWidget *widget =
new QWidget;
518 m_d->ui_shiftmuonchambers.setupUi(widget);
521 connect(
m_d->ui_shiftmuonchambers.pushButton_Update,SIGNAL(clicked()),sys,SLOT(updateAlignment()));
525 m_d->ui_int.checkBox_selsingle_printinfo->setChecked(
true);
528 m_d->calorimeterEntryLayer =
new Trk::Volume(
nullptr, std::make_shared<Trk::CylinderVolumeBounds>(1100.0, 3200.0));
529 m_d->muonSpectrometerEntryLayer =
new Trk::Volume(
nullptr, std::make_shared<Trk::CylinderVolumeBounds>(4250.0, 6779.0));
530 m_d->muonSpectrometerExitLayer =
new Trk::Volume(
nullptr, std::make_shared<Trk::CylinderVolumeBounds>(15000.0, 21000.0));
546 messageVerbose(
"Setting up tool helper to monitor extrapolators - start");
549 m_d->toolhelper_extrapolators->addMonitoredType(
"Trk::Extrapolator",(QStringList() <<
"*Fatras*"));
550 connect(
m_d->toolhelper_extrapolators,SIGNAL(availableToolsChanged(
const QStringList&)),
553 messageVerbose(
"Setting up tool helper to monitor extrapolators - end");
555 messageVerbose(
"Setting up tool helper to monitor fitters - start");
557 QStringList fittertypes;
558 fittertypes <<
"Trk::KalmanFitter"
559 <<
"Trk::GlobalChi2Fitter"
560 <<
"Trk::GaussianSumFilter"
561 <<
"Trk::DistributedKalmanFilter"
562 <<
"Trk::DeterministicAnnealingFilter";
563 m_d->toolhelper_fitters->addMonitoredTypes(fittertypes);
564 connect(
m_d->toolhelper_fitters,SIGNAL(availableToolsChanged(
const QStringList&)),
567 messageVerbose(
"Setting up tool helper to monitor fitters - end");
569 m_d->toolhelper_extrapolators =
nullptr;
570 m_d->toolhelper_fitters =
nullptr;
571 m_d->ui_extrap.comboBox_propagator->clear();
573 m_d->ui_extrap.comboBox_propagator->setEnabled(
false);
574 m_d->ui_extrap.radioButton_athenaExtrapolator->setEnabled(
false);
575 m_d->ui_extrap.radioButton_none->setChecked(
true);
576 m_d->ui_int.comboBox_fitters->clear();
578 m_d->ui_int.comboBox_fitters->setEnabled(
false);
652 SoMaterial * materialeffectsontrackMat =
createMaterial(200,255,75);
653 materialeffectsontrackMat->transparency=0.5;
654 ui_ascobjs.matButton_materialeffectsontrack->setMaterial(materialeffectsontrackMat);
662 delete m_d->toolaccesshelper;
663 delete m_d->matmixer;
664 m_d->materialFallback->unref();
667 m_d->ascObjDrawStyle->unref();
668 m_d->ascObjComplexity->unref();
670 delete m_d->calorimeterEntryLayer ;
671 delete m_d->muonSpectrometerEntryLayer;
672 delete m_d->muonSpectrometerExitLayer ;
699 messageDebug(
"Serialize - current version: "+QString::number( s.version() ));
702 s.save(QString(
"TrackSystemSettings"));
714 s.save(QString(
"Projections options"));
715 s.save(
m_d->ui_proj.checkBox_projections_indet);
716 s.save(
m_d->ui_proj.checkBox_projections_muonchambers);
717 s.save(
m_d->ui_proj.groupBox_projections_vertex);
718 s.save(
m_d->ui_proj.spinBox_projections_vertex);
719 s.save(
m_d->ui_proj.horizontalSlider_projections_vertex);
732 s.save(QString(
"Propagation options"));
733 s.save(
m_d->ui_extrap.radioButton_none,
734 m_d->ui_extrap.radioButton_helical,
735 m_d->ui_extrap.radioButton_athenaExtrapolator);
736 s.save(
m_d->ui_extrap.comboBox_propagator);
743 s.save(QString(
"Interactions options"));
744 s.save(
m_d->ui_int.lineEdit_fittedTrackCollName);
745 s.save(
m_d->ui_int.comboBox_fitters);
756 s.save(
m_d->ui_ascobjs.comboBox_assocobj_detaillevel);
760 s.save(
m_d->ui_ascobjs.checkBox_truthtracks_display_points);
763 s.save(QString(
"Colour options"));
765 s.save(
m_d->ui_col.matButton_electrons);
766 s.save(
m_d->ui_col.matButton_muons);
767 s.save(
m_d->ui_col.matButton_pions);
768 s.save(
m_d->ui_col.matButton_protons);
769 s.save(
m_d->ui_col.matButton_chargedkaons);
770 s.save(
m_d->ui_col.matButton_othercharged);
771 s.save(
m_d->ui_col.matButton_neutrons);
772 s.save(
m_d->ui_col.matButton_photons);
773 s.save(
m_d->ui_col.matButton_neutrinos);
774 s.save(
m_d->ui_col.matButton_otherneutrals);
777 s.save(
m_d->ui_col.matButton_charge_neg);
778 s.save(
m_d->ui_col.matButton_charge_pos);
779 s.save(
m_d->ui_col.matButton_charge_neutral);
782 s.save(
m_d->ui_col.matButton_0GeV);
783 s.save(
m_d->ui_col.matButton_15GeV);
794 s.save(QString(
"Cuts options"));
796 s.save(
m_d->ui_cuts.checkBox_cut_minpt);
797 s.save(
m_d->ui_cuts.doubleSpinBox_cut_minpt_gev);
798 s.save(
m_d->ui_cuts.checkBox_cut_maxpt);
799 s.save(
m_d->ui_cuts.doubleSpinBox_cut_maxpt_gev);
800 s.save(
m_d->ui_cuts.comboBox_momtype);
802 s.save(
m_d->ui_cuts.etaPhiCutWidget);
806 s.save(
m_d->ui_cuts.checkBox_cut_nhits_pixel);
807 s.save(
m_d->ui_cuts.checkBox_cut_nhits_sct);
808 s.save(
m_d->ui_cuts.checkBox_cut_nhits_trt);
809 s.save(
m_d->ui_cuts.checkBox_cut_nhits_muon);
810 s.save(
m_d->ui_cuts.spinBox_cut_nhits_pixel);
811 s.save(
m_d->ui_cuts.spinBox_cut_nhits_sct);
812 s.save(
m_d->ui_cuts.spinBox_cut_nhits_trt);
813 s.save(
m_d->ui_cuts.spinBox_cut_nhits_muon);
816 s.save(
m_d->ui_cuts.checkBox_cut_truthtracks_creationvertexinIR);
817 s.save(
m_d->ui_cuts.checkBox_cut_truthtracks_excludeneutrals);
818 s.save(
m_d->ui_cuts.checkBox_cut_truthtracks_excludebarcode0);
820 s.save(
m_d->ui_cuts.checkBox_vertexAssociated);
829 s.save(QString(
"Interactions options"));
831 s.save(
m_d->ui_int.radioButton_selmode_single,
832 m_d->ui_int.radioButton_selmode_multitracks,
833 m_d->ui_int.radioButton_selmode_trackfits);
835 s.save(
m_d->ui_int.checkBox_selsingle_printinfo);
836 s.save(
m_d->ui_int.checkBox_selsingle_printinfo_verbose);
837 s.save(
m_d->ui_int.checkBox_selsingle_orientzoom);
838 s.save(
m_d->ui_int.checkBox_sel_printtotmom);
839 s.save(
m_d->ui_int.checkBox_sel_showtotmom);
840 s.save(
m_d->ui_int.comboBox_fitterMode);
841 s.save(
m_d->ui_int.checkBox_removeOutliers);
842 s.save(
m_d->ui_int.comboBox_particleHypo);
849 s.save(QString(
"AscObjs options"));
851 s.save(
m_d->ui_ascobjs.checkBox_materialeffectsontrack_forceposontrack);
852 s.save(
m_d->ui_ascobjs.checkBox_materialeffectsontrack_hideNoDE);
853 s.save(
m_d->ui_ascobjs.checkBox_measurements_shorttubes_mdt);
854 s.save(
m_d->ui_ascobjs.checkBox_measurements_shorttubes_trt);
855 s.save(
m_d->ui_ascobjs.checkBox_measurements_drawGP);
856 s.save(
m_d->ui_ascobjs.checkBox_parerror_drawcylinder);
857 s.save(
m_d->ui_ascobjs.checkBox_parerror_hideperigeeerrors);
858 s.save(
m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces);
859 s.save(
m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces);
860 s.save(
m_d->ui_ascobjs.checkBox_usecolour_materialeffectsontrack);
861 s.save(
m_d->ui_ascobjs.checkBox_usecolour_meas_outliers);
862 s.save(
m_d->ui_ascobjs.checkBox_usecolour_measurements);
863 s.save(
m_d->ui_ascobjs.checkBox_usecolour_parametererrors);
864 s.save(
m_d->ui_ascobjs.checkBox_usecolour_parameters);
865 s.save(
m_d->ui_ascobjs.checkBox_useHoleColour_parameters);
866 s.save(
m_d->ui_ascobjs.checkBox_usecolour_surfaces);
868 s.save(
m_d->ui_ascobjs.doubleSpinBox_parerror_stddev);
869 s.save(
m_d->ui_ascobjs.groupBox_materialeffectsontrack);
870 s.save(
m_d->ui_ascobjs.groupBox_measurements);
871 s.save(
m_d->ui_ascobjs.groupBox_errors);
872 s.save(
m_d->ui_ascobjs.checkBox_parametererrors);
873 s.save(
m_d->ui_ascobjs.checkBox_measurementerrors);
874 s.save(
m_d->ui_ascobjs.groupBox_parameters);
875 s.save(
m_d->ui_ascobjs.groupBox_surfaces);
876 s.save(
m_d->ui_ascobjs.horizontalSlider_complexity);
877 s.save(
m_d->ui_ascobjs.horizontalSlider_linewidths);
878 s.save(
m_d->ui_ascobjs.horizontalSlider_materialeffectsontrack_scale);
879 s.save(
m_d->ui_ascobjs.horizontalSlider_pointsizes);
880 s.save(
m_d->ui_ascobjs.matButton_materialeffectsontrack);
881 s.save(
m_d->ui_ascobjs.matButton_meas_outliers);
882 s.save(
m_d->ui_ascobjs.matButton_measurements);
883 s.save(
m_d->ui_ascobjs.matButton_parameters);
884 s.save(
m_d->ui_ascobjs.matButton_holeParameters);
885 s.save(
m_d->ui_ascobjs.matButton_parerrors);
886 s.save(
m_d->ui_ascobjs.matButton_surfaces);
887 s.save(
m_d->ui_ascobjs.doubleSpinBox_measurements_shorttubes_scale);
894 s.save(QString(
"Colouring options"));
896 s.save(
m_d->ui_col.groupBox_labels);
897 s.save(
m_d->ui_col.horizontalSlider_labels_trkOffset);
898 s.save(
m_d->ui_col.horizontalSlider_labels_xOffset);
899 s.save(
m_d->ui_col.horizontalSlider_labels_yOffset);
900 s.save(
m_d->ui_col.horizontalSlider_labels_zOffset);
901 s.save(
m_d->ui_col.checkBox_trkLabels_p);
902 s.save(
m_d->ui_col.checkBox_trkLabels_Pt);
903 s.save(
m_d->ui_col.checkBox_trkLabels_pid);
904 s.save(
m_d->ui_col.checkBox_trkLabels_hits);
905 s.save(
m_d->ui_col.checkBox_trkLabels_fitQuality);
906 s.save(
m_d->ui_col.checkBox_trkLabels_direction);
915 s.save(QString(
"Extrapolator options"));
916 s.save(
m_d->ui_extrap.checkBox_ignoreMEoT);
917 s.save(
m_d->ui_extrap.checkBox_extendAllInDetTracks);
918 s.save(
m_d->ui_extrap.comboBox_extendAllInDetTracksToHere);
919 s.save(
m_d->ui_extrap.horizontalSlider_granularity);
920 s.save(
m_d->ui_extrap.checkBox_maxRadius);
921 s.save(
m_d->ui_extrap.spinBox_maxRadiusValue);
925 messageVerbose(
"TrackSystemController::actualSaveSettings() - DONE.");
932 messageDebug(
"TrackSystemController::actualRestoreSettings()");
943 messageDebug(
"Deserialize - current version: "+QString::number( s.version() ));
946 message(
"Warning: State data in .vp1 file has unsupported version ("+
str(s.version())+
")");
950 if (s.version()<17) {
951 message(
"Warning: the VP1 GUI has changed since .vp1 file format version ("+
str(s.version())+
"), which means you will have lost the line thickness etc. settings formally found in the Colouring pop-up dialogue.");
954 if (s.version()<17) {
957 QString tt = s.restoreString();
959 if (tt !=
"TrackSystemSettings") {
960 messageDebug(
"\n\nERROR!! Settings order does not match!!");
987 if (s.version()>=17 && s.restoreString() !=
"Projections options")
messageDebug(
"\n\nERROR! --> 'Projections options'");
988 s.restore(
m_d->ui_proj.checkBox_projections_indet);
989 s.restore(
m_d->ui_proj.checkBox_projections_muonchambers);
990 if (s.version()>=15){
991 s.restore(
m_d->ui_proj.groupBox_projections_vertex);
992 s.restore(
m_d->ui_proj.spinBox_projections_vertex);
993 s.restore(
m_d->ui_proj.horizontalSlider_projections_vertex);
1008 if (s.version()<17){
1020 if (s.version()>=17 && s.restoreString() !=
"Propagation options")
messageDebug(
"\n\nERROR! --> 'Propagation options'");
1022 s.restore(
m_d->ui_extrap.radioButton_none,
1023 m_d->ui_extrap.radioButton_helical,
1024 m_d->ui_extrap.radioButton_athenaExtrapolator);
1025 m_d->restoredLastPropagator = s.restoreString();
1026 s.widgetHandled(
m_d->ui_extrap.comboBox_propagator);
1033 if (s.version()>=17 && s.restoreString() !=
"Interactions options")
messageDebug(
"\n\nERROR! --> 'Interactions options'");
1034 if (s.version()>=6) {
1035 s.restore(
m_d->ui_int.lineEdit_fittedTrackCollName);
1036 m_d->restoredLastFitter = s.restoreString();
1037 s.widgetHandled(
m_d->ui_int.comboBox_fitters);
1047 if (s.version()==0) {
1056 s.restore(
m_d->ui_ascobjs.comboBox_assocobj_detaillevel);
1057 if (s.version()<=2) {
1063 s.restore(
m_d->ui_ascobjs.checkBox_truthtracks_display_points);
1067 if (s.version()>=17 && s.restoreString() !=
"Colour options")
messageDebug(
"\n\nERROR! --> 'Colour options'");
1069 s.restore(
m_d->ui_col.matButton_electrons);
1070 s.restore(
m_d->ui_col.matButton_muons);
1071 s.restore(
m_d->ui_col.matButton_pions);
1072 s.restore(
m_d->ui_col.matButton_protons);
1073 s.restore(
m_d->ui_col.matButton_chargedkaons);
1074 s.restore(
m_d->ui_col.matButton_othercharged);
1075 s.restore(
m_d->ui_col.matButton_neutrons);
1076 s.restore(
m_d->ui_col.matButton_photons);
1077 s.restore(
m_d->ui_col.matButton_neutrinos);
1078 s.restore(
m_d->ui_col.matButton_otherneutrals);
1079 if (s.version()>=2) {
1081 s.restore(
m_d->ui_col.matButton_charge_neg);
1082 s.restore(
m_d->ui_col.matButton_charge_pos);
1083 s.restore(
m_d->ui_col.matButton_charge_neutral);
1086 s.restore(
m_d->ui_col.matButton_0GeV);
1087 s.restore(
m_d->ui_col.matButton_15GeV);
1096 if (s.version()>=17 && s.restoreString() !=
"Cuts options")
messageDebug(
"\n\nERROR! --> 'Cuts options'");
1098 s.restore(
m_d->ui_cuts.checkBox_cut_minpt);
1099 s.restore(
m_d->ui_cuts.doubleSpinBox_cut_minpt_gev);
1100 s.restore(
m_d->ui_cuts.checkBox_cut_maxpt);
1101 s.restore(
m_d->ui_cuts.doubleSpinBox_cut_maxpt_gev);
1103 if (s.version()>=10) {
1104 s.restore(
m_d->ui_cuts.comboBox_momtype);
1107 if (s.version()>=7) {
1108 s.restore(
m_d->ui_cuts.etaPhiCutWidget);
1115 s.ignoreObsoletePhiSectionWidgetState();
1118 if (s.version()>=9) {
1119 s.restore(
m_d->ui_cuts.checkBox_cut_nhits_pixel);
1120 s.restore(
m_d->ui_cuts.checkBox_cut_nhits_sct);
1121 s.restore(
m_d->ui_cuts.checkBox_cut_nhits_trt);
1122 s.restore(
m_d->ui_cuts.checkBox_cut_nhits_muon);
1123 s.restore(
m_d->ui_cuts.spinBox_cut_nhits_pixel);
1124 s.restore(
m_d->ui_cuts.spinBox_cut_nhits_sct);
1125 s.restore(
m_d->ui_cuts.spinBox_cut_nhits_trt);
1126 s.restore(
m_d->ui_cuts.spinBox_cut_nhits_muon);
1130 s.restore(
m_d->ui_cuts.checkBox_cut_truthtracks_creationvertexinIR);
1131 s.restore(
m_d->ui_cuts.checkBox_cut_truthtracks_excludeneutrals);
1132 s.restore(
m_d->ui_cuts.checkBox_cut_truthtracks_excludebarcode0);
1134 if (s.version()>=14) s.restore(
m_d->ui_cuts.checkBox_vertexAssociated);
1142 if (s.version()>=17 && s.restoreString() !=
"Interactions options")
messageDebug(
"\n\nERROR! --> 'Interactions options'");
1144 s.restore(
m_d->ui_int.radioButton_selmode_single,
1145 m_d->ui_int.radioButton_selmode_multitracks,
1146 m_d->ui_int.radioButton_selmode_trackfits);
1148 s.restore(
m_d->ui_int.checkBox_selsingle_printinfo);
1149 s.restore(
m_d->ui_int.checkBox_selsingle_printinfo_verbose);
1150 s.restore(
m_d->ui_int.checkBox_selsingle_orientzoom);
1151 s.restore(
m_d->ui_int.checkBox_sel_printtotmom);
1152 s.restore(
m_d->ui_int.checkBox_sel_showtotmom);
1153 if (s.version()>=12){
1154 s.restore(
m_d->ui_int.comboBox_fitterMode);
1155 s.restore(
m_d->ui_int.checkBox_removeOutliers);
1156 s.restore(
m_d->ui_int.comboBox_particleHypo);
1167 if (s.version()>=17 && s.restoreString() !=
"AscObjs options")
messageDebug(
"\n\nERROR! --> 'AscObjs options'");
1169 s.restore(
m_d->ui_ascobjs.checkBox_materialeffectsontrack_forceposontrack);
1170 s.restore(
m_d->ui_ascobjs.checkBox_materialeffectsontrack_hideNoDE);
1171 s.restore(
m_d->ui_ascobjs.checkBox_measurements_shorttubes_mdt);
1172 s.restore(
m_d->ui_ascobjs.checkBox_measurements_shorttubes_trt);
1173 if (s.version()>=11) s.restore(
m_d->ui_ascobjs.checkBox_measurements_drawGP);
1174 s.restore(
m_d->ui_ascobjs.checkBox_parerror_drawcylinder);
1175 s.restore(
m_d->ui_ascobjs.checkBox_parerror_hideperigeeerrors);
1176 s.restore(
m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces);
1177 if (s.version()>=11) s.restore(
m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces);
1178 s.restore(
m_d->ui_ascobjs.checkBox_usecolour_materialeffectsontrack);
1179 s.restore(
m_d->ui_ascobjs.checkBox_usecolour_meas_outliers);
1180 s.restore(
m_d->ui_ascobjs.checkBox_usecolour_measurements);
1181 if (s.version()<12) s.restore(
m_d->ui_ascobjs.checkBox_parametererrors);
1182 s.restore(
m_d->ui_ascobjs.checkBox_usecolour_parametererrors);
1183 s.restore(
m_d->ui_ascobjs.checkBox_usecolour_parameters);
1184 if (s.version()>=14)
1185 s.restore(
m_d->ui_ascobjs.checkBox_useHoleColour_parameters);
1186 s.restore(
m_d->ui_ascobjs.checkBox_usecolour_surfaces);
1187 s.restore(
m_d->ui_ascobjs.doubleSpinBox_parerror_stddev);
1188 s.restore(
m_d->ui_ascobjs.groupBox_materialeffectsontrack);
1189 s.restore(
m_d->ui_ascobjs.groupBox_measurements);
1190 if (s.version()>=12) {
1191 s.restore(
m_d->ui_ascobjs.groupBox_errors);
1192 s.restore(
m_d->ui_ascobjs.checkBox_parametererrors);
1193 s.restore(
m_d->ui_ascobjs.checkBox_measurementerrors);
1195 s.restore(
m_d->ui_ascobjs.groupBox_parameters);
1196 s.restore(
m_d->ui_ascobjs.groupBox_surfaces);
1197 s.restore(
m_d->ui_ascobjs.horizontalSlider_complexity);
1198 s.restore(
m_d->ui_ascobjs.horizontalSlider_linewidths);
1199 s.restore(
m_d->ui_ascobjs.horizontalSlider_materialeffectsontrack_scale);
1200 s.restore(
m_d->ui_ascobjs.horizontalSlider_pointsizes);
1201 s.restore(
m_d->ui_ascobjs.matButton_materialeffectsontrack);
1202 s.restore(
m_d->ui_ascobjs.matButton_meas_outliers);
1203 s.restore(
m_d->ui_ascobjs.matButton_measurements);
1204 s.restore(
m_d->ui_ascobjs.matButton_parameters);
1205 if (s.version()>=14)
1206 s.restore(
m_d->ui_ascobjs.matButton_holeParameters);
1207 s.restore(
m_d->ui_ascobjs.matButton_parerrors);
1208 s.restore(
m_d->ui_ascobjs.matButton_surfaces);
1210 s.restore(
m_d->ui_ascobjs.doubleSpinBox_measurements_shorttubes_scale);
1223 if (s.version()>=17 && s.restoreString() !=
"Colouring options")
messageDebug(
"\n\nERROR! --> 'Colouring options'");
1224 if (s.version()>=12){
1225 s.restore(
m_d->ui_col.groupBox_labels);
1226 s.restore(
m_d->ui_col.horizontalSlider_labels_trkOffset);
1227 s.restore(
m_d->ui_col.horizontalSlider_labels_xOffset);
1228 s.restore(
m_d->ui_col.horizontalSlider_labels_yOffset);
1229 s.restore(
m_d->ui_col.horizontalSlider_labels_zOffset);
1230 s.restore(
m_d->ui_col.checkBox_trkLabels_p);
1231 s.restore(
m_d->ui_col.checkBox_trkLabels_Pt);
1232 s.restore(
m_d->ui_col.checkBox_trkLabels_pid);
1233 s.restore(
m_d->ui_col.checkBox_trkLabels_hits);
1234 s.restore(
m_d->ui_col.checkBox_trkLabels_fitQuality);
1236 if (s.version()>=16)
1237 s.restore(
m_d->ui_col.checkBox_trkLabels_direction);
1245 if (s.version()>=17 && s.restoreString() !=
"Extrapolator options")
messageDebug(
"\n\nERROR! --> 'Extrapolator options'");
1246 if (s.version()>=14){
1247 s.restore(
m_d->ui_extrap.checkBox_ignoreMEoT);
1248 s.restore(
m_d->ui_extrap.checkBox_extendAllInDetTracks);
1249 s.restore(
m_d->ui_extrap.comboBox_extendAllInDetTracksToHere);
1250 s.restore(
m_d->ui_extrap.horizontalSlider_granularity);
1253 if (s.version()>=15){
1254 s.restore(
m_d->ui_extrap.checkBox_maxRadius);
1255 s.restore(
m_d->ui_extrap.spinBox_maxRadiusValue);
1261 messageDebug(
"TrackSystemController::actualRestoreSettings() - DONE.");
1268 return m_d->trackcollwidget;
1277 theclass->message(
"ERROR: Null material button pointer");
1280 QList<SoMaterial*> mats = mb->handledMaterials();
1281 if (mats.count()!=1) {
1282 theclass->message(
"ERROR: No material in button");
1292 int abspdg = abs(pdgCode);
1294 case 211: matbutton =
m_d->ui_col.matButton_pions;
break;
1295 case 11: matbutton =
m_d->ui_col.matButton_electrons;
break;
1296 case 22: matbutton =
m_d->ui_col.matButton_photons;
break;
1297 case 13: matbutton =
m_d->ui_col.matButton_muons;
break;
1298 case 2212: matbutton =
m_d->ui_col.matButton_protons;
break;
1299 case 2112: matbutton =
m_d->ui_col.matButton_neutrons;
break;
1300 case 2:
return m_d->materialFallback;
1309 matbutton =
m_d->ui_col.matButton_chargedkaons;
break;
1314 matbutton =
m_d->ui_col.matButton_neutrinos;
break;
1320 message(
"WARNING: Could not look up charge of pdg code "+
str(abspdg)+
". Assuming charged.");
1324 matbutton =
m_d->ui_col.matButton_otherneutrals;
1326 matbutton =
m_d->ui_col.matButton_othercharged;
1329 return m_d->getMat(matbutton);
1336 return m_d->getMat(
m_d->ui_col.matButton_charge_pos);
1338 return m_d->getMat(
m_d->ui_col.matButton_charge_neg);
1339 return m_d->getMat(
m_d->ui_col.matButton_charge_neutral);
1345 static const double low=0*CLHEP::GeV;
1346 static const double high=15*CLHEP::GeV;
1348 return m_d->getMat(
m_d->ui_col.matButton_0GeV);
1349 else if (absmom>=high)
1350 return m_d->getMat(
m_d->ui_col.matButton_15GeV);
1355 const double x = (absmom-low)/(high-low);
1356 return m_d->matmixer->getMixedMaterial(
m_d->getMat(
m_d->ui_col.matButton_0GeV), 1-
x,
1357 m_d->getMat(
m_d->ui_col.matButton_15GeV),
x );
1363 return m_d->getMat(
m_d->ui_ascobjs.matButton_measurements);
1369 return m_d->getMat(
m_d->ui_ascobjs.matButton_meas_outliers);
1375 return m_d->getMat(
m_d->ui_ascobjs.matButton_parameters);
1381 return m_d->getMat(
m_d->ui_ascobjs.matButton_holeParameters);
1387 return m_d->getMat(
m_d->ui_ascobjs.matButton_parerrors);
1393 return m_d->getMat(
m_d->ui_ascobjs.matButton_materialeffectsontrack);
1399 return m_d->getMat(
m_d->ui_ascobjs.matButton_surfaces);
1428 if (
m_d->ascObjDrawStyle->lineWidth.getValue()!=val_lw)
1429 m_d->ascObjDrawStyle->lineWidth = val_lw;
1430 if (
m_d->ascObjDrawStyle->pointSize.getValue()!=val_ps)
1431 m_d->ascObjDrawStyle->pointSize = val_ps;
1439 const double val = std::min<double>(1.0,std::max<double>(0.0,0.01+0.991*
1440 (
m_d->ui_ascobjs.horizontalSlider_complexity->value()
1441 -
m_d->ui_ascobjs.horizontalSlider_complexity->minimum())/
1442 (
m_d->ui_ascobjs.horizontalSlider_complexity->maximum()*1.0)));
1443 if (
m_d->ascObjComplexity->value.getValue()!=val)
1444 m_d->ascObjComplexity->value.setValue(val);
1462 return m_d->ascObjDrawStyle;
1468 return m_d->ascObjComplexity;
1474 QString name =
m_d->ui_int.lineEdit_fittedTrackCollName->text().simplified();
1475 return name.isEmpty() ?
"<noname>" : name;
1493 if (!
m_d->ui_proj.groupBox_projections_vertex->isChecked())
return -1;
1494 return m_d->ui_proj.spinBox_projections_vertex->value();
1508 if (
m_d->ui_ascobjs.groupBox_parameters->isChecked())
1510 if (
m_d->ui_ascobjs.groupBox_errors->isChecked()&&
m_d->ui_ascobjs.checkBox_parametererrors->isChecked()) {
1512 if (!
m_d->ui_ascobjs.checkBox_parerror_hideperigeeerrors->isChecked())
1515 if (
m_d->ui_ascobjs.groupBox_errors->isChecked()&&
m_d->ui_ascobjs.checkBox_measurementerrors->isChecked()) {
1518 if (
m_d->ui_ascobjs.groupBox_measurements->isChecked()) {
1522 if (
m_d->ui_ascobjs.groupBox_surfaces->isChecked()) {
1524 if (!
m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces->isChecked())
1526 if (!
m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces->isChecked())
1529 if (
m_d->ui_ascobjs.groupBox_materialeffectsontrack->isChecked()) {
1531 if (!
m_d->ui_ascobjs.checkBox_materialeffectsontrack_hideNoDE->isChecked())
1542 if (
m_d->ui_ascobjs.checkBox_usecolour_measurements->isChecked())
1544 if (
m_d->ui_ascobjs.checkBox_usecolour_meas_outliers->isChecked())
1546 if (
m_d->ui_ascobjs.checkBox_usecolour_parameters->isChecked())
1548 if (
m_d->ui_ascobjs.checkBox_useHoleColour_parameters->isChecked())
1550 if (
m_d->ui_ascobjs.checkBox_usecolour_parametererrors->isChecked())
1552 if (
m_d->ui_ascobjs.checkBox_usecolour_materialeffectsontrack->isChecked())
1554 if (
m_d->ui_ascobjs.checkBox_usecolour_surfaces->isChecked())
1563 return m_d->ui_ascobjs.checkBox_measurements_shorttubes_trt->isChecked();
1569 return m_d->ui_ascobjs.checkBox_measurements_shorttubes_mdt->isChecked();
1575 return m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces->isChecked();
1581 return m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces->isChecked();
1587 return m_d->ui_ascobjs.checkBox_measurements_drawGP->isChecked();
1594 return std::max(0.1*CLHEP::mm,
m_d->ui_ascobjs.doubleSpinBox_measurements_shorttubes_scale->value()*CLHEP::cm);
1600 return std::min<double>(1.0e3,std::max<double>(1.0e-3,
m_d->ui_ascobjs.doubleSpinBox_parerror_stddev->value()));
1606 return m_d->ui_ascobjs.checkBox_parerror_drawcylinder->isChecked();
1612 const int val(
m_d->ui_ascobjs.horizontalSlider_complexity->value());
1613 const int max(
m_d->ui_ascobjs.horizontalSlider_complexity->maximum());
1614 const int min(
m_d->ui_ascobjs.horizontalSlider_complexity->minimum());
1622 const int n(1+
static_cast<int>(0.5+7.0*(val-
min)/(1.0*
max)));
1623 return std::min<int>(32,std::max<int>(4,4*n));
1629 return m_d->ui_ascobjs.horizontalSlider_materialeffectsontrack_scale->value()/5.0;
1635 if (!
m_d->toolaccesshelper
1636 ||!
m_d->ui_extrap.radioButton_athenaExtrapolator->isChecked()
1637 ||
m_d->ui_extrap.comboBox_propagator->count()==0)
1640 QString key =
m_d->ui_extrap.comboBox_propagator->currentText();
1654 if (!
m_d->ui_extrap.checkBox_maxRadius->isChecked())
return -1.0;
1655 return m_d->ui_extrap.spinBox_maxRadiusValue->value();
1664 return m_d->ui_extrap.checkBox_ignoreMEoT->isChecked();
1670 if (!
m_d->toolaccesshelper
1671 ||
m_d->ui_int.comboBox_fitters->count()==0)
1674 QString key =
m_d->ui_int.comboBox_fitters->currentText();
1677 return key.isEmpty() ? nullptr :
m_d->toolaccesshelper->getToolPointer<
Trk::ITrackFitter>(key);
1682 QString key =
"Muon::MuonEDMPrinterTool/MuonEDMPrinterTool";
1693 if (
m_d->ui_extrap.comboBox_extendAllInDetTracksToHere->currentText()==
"Calorimeter")
1694 return m_d->calorimeterEntryLayer;
1695 if (
m_d->ui_extrap.comboBox_extendAllInDetTracksToHere->currentText()==
"Muon Entrance")
1696 return m_d->muonSpectrometerEntryLayer;
1697 if (
m_d->ui_extrap.comboBox_extendAllInDetTracksToHere->currentText()==
"Muon Exit")
1698 return m_d->muonSpectrometerExitLayer;
1705 if (
m_d->ui_int.radioButton_selmode_single->isChecked())
1707 else if (
m_d->ui_int.radioButton_selmode_multitracks->isChecked())
1709 else if (
m_d->ui_int.radioButton_selmode_trackfits->isChecked())
1711 message(
"selectionMode ERROR: Inconsistency detected.");
1717 if (
m_d->ui_int.comboBox_fitterMode->currentText()==
"Fit PRDs")
1719 else if (
m_d->ui_int.comboBox_fitterMode->currentText()==
"Refit Track")
1721 else if (
m_d->ui_int.comboBox_fitterMode->currentText()==
"Extend Track with PRDs")
1723 else if (
m_d->ui_int.comboBox_fitterMode->currentText()==
"Combine Two Tracks")
1726 message(
"fitterMode ERROR: Inconsistency detected. Mode not known.");
1733 return m_d->ui_int.checkBox_removeOutliers->isChecked();
1738 if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Pion")
1740 else if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Non Interacting")
1742 else if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Electron")
1744 else if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Muon")
1746 else if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Kaon")
1748 else if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Proton")
1750 else if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Photon")
1753 message(
"fitterMode ERROR: Inconsistency detected. Mode not known.");
1760 return m_d->ui_ascobjs.checkBox_truthtracks_display_points->isChecked();
1766 if (
m_d->ui_ascobjs.comboBox_assocobj_detaillevel->currentText()==
"Auto")
1768 else if (
m_d->ui_ascobjs.comboBox_assocobj_detaillevel->currentText()==
"Simple")
1775 if (
m_d->ui_cuts.checkBox_vertexAssociated->isEnabled()!=b) {
1776 m_d->ui_cuts.checkBox_vertexAssociated->setEnabled(b);
1782 if (!
m_d->ui_cuts.checkBox_vertexAssociated->isEnabled())
return false;
1783 return m_d->ui_cuts.checkBox_vertexAssociated->isChecked();
1790 if (!
m_d->ui_cuts.checkBox_cut_minpt)
1798 bool isPCut =
m_d->ui_cuts.comboBox_momtype->currentText()==
"P";
1800 const double minFromInterface=
m_d->ui_cuts.doubleSpinBox_cut_minpt_gev->value()*CLHEP::GeV;
1801 const double maxFromInterface=
m_d->ui_cuts.doubleSpinBox_cut_maxpt_gev->value()*CLHEP::GeV;
1806 min = (
m_d->ui_cuts.checkBox_cut_minpt->isChecked() ? minFromInterface : -std::numeric_limits<double>::infinity());
1807 max = (
m_d->ui_cuts.checkBox_cut_maxpt->isChecked() ? maxFromInterface : std::numeric_limits<double>::infinity());
1809 min = (
m_d->ui_cuts.checkBox_cut_maxpt->isChecked() ? -maxFromInterface : -std::numeric_limits<double>::infinity());
1810 max = (
m_d->ui_cuts.checkBox_cut_minpt->isChecked() ? -minFromInterface : std::numeric_limits<double>::infinity());
1824 return m_d->ui_cuts.etaPhiCutWidget->allowedEta();
1830 return m_d->ui_cuts.etaPhiCutWidget->allowedPhi();
1836 unsigned npixel =
m_d->ui_cuts.checkBox_cut_nhits_pixel->isChecked() ?
m_d->ui_cuts.spinBox_cut_nhits_pixel->value() : 0;
1837 unsigned nsct =
m_d->ui_cuts.checkBox_cut_nhits_sct->isChecked() ?
m_d->ui_cuts.spinBox_cut_nhits_sct->value() : 0;
1838 unsigned ntrt =
m_d->ui_cuts.checkBox_cut_nhits_trt->isChecked() ?
m_d->ui_cuts.spinBox_cut_nhits_trt->value() : 0;
1839 unsigned nmuon =
m_d->ui_cuts.checkBox_cut_nhits_muon->isChecked() ?
m_d->ui_cuts.spinBox_cut_nhits_muon->value() : 0;
1840 unsigned nprecmuon =
m_d->ui_cuts.checkBox_cut_nprecisionhits_muon->isChecked() ?
m_d->ui_cuts.spinBox_cut_nprecisionhits_muon->value() : 0;
1843 if (!npixel&&!nsct&&!ntrt&&!nmuon&&!nprecmuon)
1845 l << npixel << nsct << ntrt << nmuon << nprecmuon;
1850 QString tmp =
m_d->ui_cuts.checkBox_requireDetectorElement->isChecked() ?
m_d->ui_cuts.lineEdit_detectorElementId->text(): QString();
1858 return m_d->ui_cuts.checkBox_cut_truthtracks_creationvertexinIR->isChecked();
1864 return m_d->ui_cuts.checkBox_cut_truthtracks_excludebarcode0->isChecked();
1870 return m_d->ui_cuts.checkBox_cut_truthtracks_excludeneutrals->isChecked();
1878 QString ct = cb->currentText();
1882 bool save = cb->blockSignals(
true);
1886 bool enabled =
false;
1889 cb->setEnabled(
false);
1893 int i = restoredSelection.isEmpty() ? -1 : cb->findText(restoredSelection);
1895 i = ct.isEmpty() ? -1 : cb->findText(ct);
1896 restoredSelection =
"";
1899 cb->setCurrentIndex(i);
1903 int i_vp1(-1), i_atlas(-1);
1904 for (
int j = 0; j <cb->count();++j) {
1905 if (i_vp1==-1&&cb->itemText(j).contains(
"vp1",Qt::CaseInsensitive))
1907 if (i_atlas==-1&&cb->itemText(j).contains(
"atlas",Qt::CaseInsensitive))
1911 cb->setCurrentIndex(i_vp1);
1912 else if (i_atlas>=0)
1913 cb->setCurrentIndex(i_atlas);
1917 cb->setEnabled(
true);
1921 cb->blockSignals(
false);
1928 if (
m_d->lastUpdatedAvailableFitters==af)
1930 m_d->lastUpdatedAvailableFitters=af;
1931 m_d->updateComboBoxContents(
m_d->ui_int.comboBox_fitters,af,
m_d->restoredLastFitter);
1932 m_d->updateFitPRDButtonState();
1940 if (
m_d->lastUpdatedAvailableExtrapolators==ae)
1942 m_d->lastUpdatedAvailableExtrapolators=ae;
1944 if (!
m_d->updateComboBoxContents(
m_d->ui_extrap.comboBox_propagator,ae,
m_d->restoredLastPropagator)) {
1945 m_d->ui_extrap.radioButton_athenaExtrapolator->setEnabled(
false);
1946 bool save1 =
m_d->ui_extrap.radioButton_none->blockSignals(
true);
1947 bool save2 =
m_d->ui_extrap.radioButton_helical->blockSignals(
true);
1948 bool save3 =
m_d->ui_extrap.radioButton_athenaExtrapolator->blockSignals(
true);
1949 m_d->ui_extrap.radioButton_none->setChecked(
true);
1950 m_d->ui_extrap.radioButton_helical->setChecked(
false);
1951 m_d->ui_extrap.radioButton_athenaExtrapolator->setChecked(
false);
1952 if (!save1)
m_d->ui_extrap.radioButton_none->blockSignals(
false);
1953 if (!save2)
m_d->ui_extrap.radioButton_helical->blockSignals(
false);
1954 if (!save3)
m_d->ui_extrap.radioButton_athenaExtrapolator->blockSignals(
false);
1956 m_d->ui_extrap.radioButton_athenaExtrapolator->setEnabled(
true);
1965 return m_d->ui_int.checkBox_selsingle_orientzoom->isChecked();
1971 return m_d->ui_int.checkBox_selsingle_printinfo->isChecked();
1983 return m_d->ui_int.checkBox_sel_printtotmom->isChecked();
1989 return m_d->ui_int.checkBox_sel_showtotmom->isChecked();
2020 if (
m_d->numberOfSelectedPRDs==prds &&
m_d->numberOfSelectedTracks==trks)
2022 m_d->numberOfSelectedPRDs=prds;
2023 m_d->numberOfSelectedTracks=trks;
2035 m_d->updateFitPRDButtonState();
2048 m_d->updateFitPRDButtonState();
2053 return m_d->objBrowserWidget;
2068 messageVerbose(
"TrackSystemController::objectBrowserClicked: Couldn't get VP1TrackSystem pointer");
2080 messageVerbose(
"Got track node. numselected="+QString::number(
sel->getNumSelected()));
2088 if ( !
node && item->parent() && item->parent()->parent() )
node =
common()->
node(item->parent()->parent());
2092 unsigned int index = item->parent()->indexOfChild(item);
2093 messageVerbose(
"TrackSystemController::objectBrowserClicked: item has index of "+QString::number(
index));
2100 if (trkProxyHandle){
2107 messageVerbose(
"TrackSystemController::objectBrowserClicked: Couldn't get node pointer. Maybe object not visible?");
2159 std::vector<double> values(6,0.0);
2160 values[0]=
m_d->ui_shiftmuonchambers.doubleSpinBox_tra_s->value();
2161 values[1]=
m_d->ui_shiftmuonchambers.doubleSpinBox_tra_z->value();
2162 values[2]=
m_d->ui_shiftmuonchambers.doubleSpinBox_tra_t->value();
2163 values[3]=
m_d->ui_shiftmuonchambers.doubleSpinBox_rot_s->value();
2164 values[4]=
m_d->ui_shiftmuonchambers.doubleSpinBox_rot_z->value();
2165 values[5]=
m_d->ui_shiftmuonchambers.doubleSpinBox_rot_t->value();
2170 if (
m_d->ui_shiftmuonchambers.comboBox_level->currentText()==
"Level 0")
2172 else if (
m_d->ui_shiftmuonchambers.comboBox_level->currentText()==
"Level 1")
2174 else if (
m_d->ui_shiftmuonchambers.comboBox_level->currentText()==
"Level 2")
2176 else if (
m_d->ui_shiftmuonchambers.comboBox_level->currentText()==
"Level 3")
2183 return m_d->ui_col.groupBox_labels->isChecked();
2188 return static_cast<float>(
m_d->ui_col.horizontalSlider_labels_trkOffset->value())/
static_cast<float>(
m_d->ui_col.horizontalSlider_labels_trkOffset->maximum());
2194 values <<
m_d->ui_col.horizontalSlider_labels_xOffset->value();
2195 values <<
m_d->ui_col.horizontalSlider_labels_yOffset->value();
2196 values <<
m_d->ui_col.horizontalSlider_labels_zOffset->value();
2202 return m_d->ui_col.horizontalSlider_labels_xOffset->value();
2207 return m_d->ui_col.horizontalSlider_labels_yOffset->value();
2212 return m_d->ui_col.horizontalSlider_labels_zOffset->value();
2216 if (!
m_d->ui_col.groupBox_labels->isChecked())
2232#define VP1CONTROLLERCLASSNAME TrackSystemController
double charge(const T &p)
#define POSSIBLECHANGE_IMP(x)
@ TSOS_SurfacesDetElem
bit 9
@ TSOS_AnyMeasurementOutlier
@ TSOS_SurfacesCustom
bit 10
@ TSOS_TubeSurfaces
bit 11
@ TSOS_TrackParsErrorsNotPerigee
bit 1
@ TSOS_AnyMaterialEffects
@ TSOS_AnyMeasCompetingRioOnTrack
@ TSOS_MaterialEffects
bit 13
@ TSOS_TrackParsErrorsPerigee
bit 2
@ TSOS_MaterialEffectsWithNoDeltaE
bit 12
@ TSOS_AnyMeasurementNotOutlier
SoNode * zoomToTSOS(unsigned int index)
Depending on controller configuration attempt to zoom to the corresponding TSOS & returned detailed n...
SoNode * zoomToTSOS(unsigned int index)
Depending on controller configuration attempt to zoom to the corresponding TSOS & returned detailed n...
TrackHandleBase * trackHandle(SoNode *n)
SoNode * node(TrackHandleBase *h)
Returns the node associated with this handle.
QList< VP1Interval > last_cutAllowedPhi
Ui::TrackSysShiftMuonChambersForm ui_shiftmuonchambers
int last_numberOfPointsOnCircles
int last_vertexProjectionAngle
bool last_drawMeasGlobalPositions
TrackCommonFlags::TrackPartsFlags last_shownTrackParts
static bool fittersCreated
QStringList lastUpdatedAvailableFitters
TrackCommonFlags::TSOSPartsFlags last_customColouredTSOSParts
static bool extrapolatorsCreated
bool last_cutOnlyVertexAssocTracks
TrackCommonFlags::SELECTIONMODE last_selectionMode
VP1Interval last_cutAllowedEta
double last_measurementsShorttubesScale
static const QString noneAvailString
PropagationOptionFlags last_propagationOptions
bool last_useShortMDTMeasurements
bool last_parTubeErrorsDrawCylinders
bool last_cutTruthExcludeNeutrals
unsigned numberOfSelectedTracks
Ui::TrackSysSettingsAscObjsForm ui_ascobjs
VP1Interval last_cutAllowedPt
Ui::VP1TrackControllerForm ui
Trk::Volume * muonSpectrometerEntryLayer
bool last_useShortTRTMeasurements
VP1Interval last_cutAllowedP
QList< int > last_trackLabelPosOffset
unsigned numberOfSelectedPRDs
QTreeWidget * objBrowserWidget
TrackLabelModes last_trackLabels
Ui::TrackSysSettingsInteractionsForm ui_int
static void ensureFittersCreated(IVP1System *)
Trk::IExtrapolator * last_propagator
void updateFitPRDButtonState()
TrackCommonFlags::DETAILLEVEL last_assocObjDetailLevel
static bool updateComboBoxContents(QComboBox *cb, const QStringList &l, QString &restoredSelection)
bool last_showTruthAscObjs
Ui::TrackSysSettingsProjectionsForm ui_proj
QStringList lastUpdatedAvailableExtrapolators
double last_trackTubeRadius
QString restoredLastFitter
SoMaterial * materialFallback
VP1SoMaterialMixer * matmixer
VP1AvailableToolsHelper * toolhelper_extrapolators
bool last_showTotMomentumOnMultiTrackSelection
TrackSystemController * theclass
QList< unsigned > last_cutRequiredNHits
SoDrawStyle * ascObjDrawStyle
double last_materialEffectsOnTrackScale
bool last_cutTruthFromIROnly
static SoMaterial * createMaterial(const int &r, const int &g, const int &b)
TrackCommonFlags::TSOSPartsFlags last_shownTSOSParts
QString last_cutRequiredDetectorElement
Ui::TrackSysSettingsColouringForm ui_col
VP1ToolAccessHelper * toolaccesshelper
float last_trackLabelTrkOffset
QString restoredLastPropagator
VP1AvailableToolsHelper * toolhelper_fitters
Trk::Volume * calorimeterEntryLayer
double last_nStdDevForParamErrors
bool last_cutExcludeBarcodeZero
SoMaterial * getMat(VP1MaterialButton *) const
SoComplexity * ascObjComplexity
static void ensureExtrapolatorsCreated(IVP1System *)
TrackCollWidget * trackcollwidget
Ui::TrackSysSettingsExtrapolationsForm ui_extrap
Trk::ITrackFitter * last_trackFitter
Muon::MuonEDMPrinterTool * muonedmprintertool
Ui::TrackSysSettingsCutsForm ui_cuts
Ui::TrackObjectBrowser ui_objBrowser
Trk::Volume * muonSpectrometerExitLayer
void availableExtrapolatorsChanged(const QStringList &)
void possibleChange_cutRequiredDetectorElement()
TrackCommonFlags::FITTERMODE fitterMode() const
void possibleChange_shownTSOSParts()
SoDrawStyle * ascObjDrawStyle() const
float trackLabelTrkOffset()
Percentage of postion along track.
bool printTotMomentumOnMultiTrackSelection() const
void possibleChange_vertexProjectionAngle()
bool printInfoOnSingleSelection() const
void possibleChange_trackLabelPosOffset()
VP1Interval cutAllowedEta() const
VP1Interval cutAllowedPt() const
QList< unsigned > cutRequiredNHits() const
bool drawMeasGlobalPositions() const
void cutOnlyVertexAssocTracksChanged(bool)
Trk::ParticleHypothesis fitterParticleHypthesis() const
int alignmentShiftLevel()
void possibleChange_trackFitter()
virtual ~TrackSystemController()
Trk::IExtrapolator * propagator() const
bool useShortTRTMeasurements() const
SoMaterial * getMaterialForPDGCode(const int &pdgcode) const
void possibleChange_numberOfPointsOnCircles()
bool orientAndZoomOnSingleSelection() const
void possibleChange_cutAllowedPt()
void setNumberOfSelectedPRDsAndTracks(unsigned prds, unsigned trks)
double measurementsShorttubesScale() const
void possibleChange_useShortTRTMeasurements()
bool ignoreMeasurementEffectsOnTrackInProp()
If true (default) don't use TSOS with MEOT to draw track points.
void possibleChange_trackLabels()
static QString toString(const T &t)
void emitExtrapolateToHereChanged(int)
void possibleChange_cutTruthExcludeNeutrals()
QString nameOfNewlyFittedCollections() const
void possibleChange_materialEffectsOnTrackScale()
SoMaterial * customMatParameters() const
void availableFittersChanged(const QStringList &)
void possibleChange_showTruthAscObjs()
SoMaterial * customMatHoleParameters() const
bool showTotMomentumOnMultiTrackSelection() const
int labelZOffset()
Absolute z offset.
bool cutTruthFromIROnly() const
void possibleChange_cutExcludeBarcodeZero()
Muon::MuonEDMPrinterTool * muonEDMPrinterTool() const
TrackCommonFlags::SELECTIONMODE selectionMode() const
void possibleChange_customColouredTSOSParts()
void possibleChange_propagationOptions()
void setCommonData(TrackSysCommonData *)
set pointer to the common data
TrackLabelModes trackLabels()
SoMaterial * getMaterialForCharge(const double &charge) const
bool fitterRemoveOutliers() const
float propMaxRadius() const
void possibleChange_cutTruthFromIROnly()
const Trk::Volume * extrapolateToThisVolume() const
Returns the volume to which we extrapolate ID tracks, or zero if no VolumesSvc found.
std::vector< double > alignmentShiftValue()
void possibleChange_propagator()
TrackCommonFlags::DETAILLEVEL assocObjDetailLevel() const
QTreeWidget * trackObjBrowser() const
Returns a pointer to the Track Object Browser (if it exists)
void actualRestoreSettings(VP1Deserialise &)
int numberOfPointsOnCircles() const
TrackCommonFlags::TSOSPartsFlags customColouredTSOSParts() const
TrackCollWidget * collWidget() const
TrackSysCommonData * common() const
Returns a pointer to the common data (if it exists)
bool cutOnlyVertexAssocTracks() const
bool showTruthAscObjs() const
SoMaterial * customMatMeasurementsOutliers() const
bool hideCustomSurfaces() const
double nStdDevForParamErrors() const
PropagationOptionFlags propagationOptions() const
void objectBrowserClicked(QTreeWidgetItem *item, int)
SoMaterial * customMatParameterErrors() const
void updateFitPRDButtonState()
SoMaterial * customMatSurfaces() const
void possibleChange_cutAllowedPhi()
QList< int > trackLabelPosOffset()
Offset in x,y,z.
double materialEffectsOnTrackScale() const
SoMaterial * customMatMaterialEffects() const
void possibleChange_cutRequiredNHits()
int labelYOffset()
Absolute y offset.
void possibleChange_parTubeErrorsDrawCylinders()
Trk::ITrackFitter * trackFitter() const
bool useShortMDTMeasurements() const
void possibleChange_drawMeasGlobalPositions()
TrackCommonFlags::TrackPartsFlags shownTrackParts() const
SoComplexity * ascObjComplexity() const
int currentSettingsVersion() const
void updateAscObjDrawStyle()
void possibleChange_selectionMode()
bool parTubeErrorsDrawCylinders() const
void possibleChange_cutOnlyVertexAssocTracks()
QList< VP1Interval > cutAllowedPhi() const
QString cutRequiredDetectorElement() const
void vertexCutsAllowed(bool)
void possibleChange_showTotMomentumOnMultiTrackSelection()
TrackCommonFlags::TSOSPartsFlags shownTSOSParts() const
SoMaterial * getMaterialForMomentum(const double &absmom) const
TrackSystemController(IVP1System *sys)
void possibleChange_nStdDevForParamErrors()
void possibleChange_useShortMDTMeasurements()
void possibleChange_cutAllowedEta()
int labelXOffset()
Absolute x offset.
bool printVerboseInfoOnSingleSelection() const
int vertexProjectionAngle() const
SoMaterial * customMatMeasurements() const
void actualSaveSettings(VP1Serialise &) const
bool hideTubeSurfaces() const
bool cutTruthExcludeNeutrals() const
void possibleChange_trackLabelTrkOffset()
bool cutExcludeBarcodeZero() const
void possibleChange_assocObjDetailLevel()
void possibleChange_propMaxRadius()
void updateAscObjComplexity()
void possibleChange_measurementsShorttubesScale()
void possibleChange_shownTrackParts()
void extrapolateToThisVolumeChanged(void)
Provides the abstract interface for track fitting in the common ATLAS Tracking EDM.
Base class for all volumes inside the tracking realm, it defines the interface for inherited Volume c...
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 messageVerbose(const QString &) const
void message(const QString &) const
IVP1System * systemBase() const
void messageDebug(const QString &) const
static bool hasTRTGeometry()
static bool hasPixelGeometry()
static bool hasSCTGeometry()
static bool hasMuonGeometry()
static double particleCharge(const int &pdgcode, bool &ok)
static double getValueLineWidthSlider(const QSlider *)
static double getValuePointSizeSlider(const QSlider *)
static bool environmentVariableIsOn(const QString &name)
static QString environmentVariableValue(const QString &name)
std::vector< std::string > split(const std::string &s, const std::string &t=":")
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.