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::IExtrapolator");
210#if QTCORE_VERSION >= 0x050E00
217 if (existingExtrapolators.contains(key))
219 sys->messageDebug(
"Attempting creation of extrapolator with tooltype/key "+key);
222 sys->message(
"WARNING: Could not create tool type/key "+key);
236 QStringList fittertypes;
237 fittertypes <<
"Trk::KalmanFitter"
238 <<
"Trk::GlobalChi2Fitter"
239 <<
"Trk::GaussianSumFilter"
240 <<
"Trk::DistributedKalmanFilter"
241 <<
"Trk::DeterministicAnnealingFilter";
248#if QTCORE_VERSION >= 0x050E00
254 if (existingFitters.contains(
instance))
256 sys->messageDebug(
"Attempting creation of fitter with tooltype/key "+
instance);
259 sys->message(
"WARNING: Could not create tool with type/key "+
instance);
268 m_d->theclass =
this;
269 m_d->lastUpdatedAvailableExtrapolators = QStringList(
"<dummy>");
270 m_d->lastUpdatedAvailableFitters = QStringList(
"<dummy>");
273 m_d->toolaccesshelper =
nullptr;
274 m_d->toolhelper_extrapolators =
nullptr;
275 m_d->toolhelper_fitters =
nullptr;
276 m_d->matmixer =
nullptr;
278 m_d->ui.setupUi(
this);
291 m_d->numberOfSelectedPRDs=1;
294 m_d->initMaterials();
296 m_d->materialFallback =
new SoMaterial;
297 m_d->materialFallback->ref();
299 m_d->ui_cuts.etaPhiCutWidget->setSystemBasePointer(
systemBase());
302 m_d->ascObjDrawStyle =
new SoDrawStyle;
303 m_d->ascObjDrawStyle->setName(
"AscObjDrawStyle");
304 m_d->ascObjDrawStyle->ref();
309 m_d->ascObjComplexity =
new SoComplexity;
310 m_d->ascObjComplexity->setName(
"AscObjComplexity");
311 m_d->ascObjComplexity->ref();
324 m_d->ui_proj.checkBox_projections_muonchambers->setChecked(
false);
325 m_d->ui_proj.checkBox_projections_muonchambers->setEnabled(
false);
330 m_d->ui_proj.checkBox_projections_indet->setChecked(
false);
331 m_d->ui_proj.checkBox_projections_indet->setEnabled(
false);
336 m_d->last_propagator =
nullptr;
337 m_d->last_trackFitter =
nullptr;
502 connect(
m_d->ui_col.pushButton_colourbyrandom_rerandomise,SIGNAL(clicked()),
this,SLOT(
emitRerandomise()));
505 connect(
m_d->ui_int.pushButton_refit,SIGNAL(clicked()),
this,SLOT(
emitRefit()));
509 m_d->objBrowserWidget =
m_d->ui_objBrowser.treeWidget;
510 m_d->objBrowserWidget->setSortingEnabled(
false);
512 l<<
"Object"<<
"Information";
513 m_d->objBrowserWidget->setHeaderLabels(l);
514 connect(
m_d->objBrowserWidget,SIGNAL(itemClicked(QTreeWidgetItem *,
int)),
this,SLOT(
objectBrowserClicked(QTreeWidgetItem *,
int)));
519 QWidget *widget =
new QWidget;
520 m_d->ui_shiftmuonchambers.setupUi(widget);
523 connect(
m_d->ui_shiftmuonchambers.pushButton_Update,SIGNAL(clicked()),sys,SLOT(updateAlignment()));
527 m_d->ui_int.checkBox_selsingle_printinfo->setChecked(
true);
530 m_d->calorimeterEntryLayer =
new Trk::Volume(
nullptr, std::make_shared<Trk::CylinderVolumeBounds>(1100.0, 3200.0));
531 m_d->muonSpectrometerEntryLayer =
new Trk::Volume(
nullptr, std::make_shared<Trk::CylinderVolumeBounds>(4250.0, 6779.0));
532 m_d->muonSpectrometerExitLayer =
new Trk::Volume(
nullptr, std::make_shared<Trk::CylinderVolumeBounds>(15000.0, 21000.0));
548 messageVerbose(
"Setting up tool helper to monitor extrapolators - start");
551 m_d->toolhelper_extrapolators->addMonitoredType(
"Trk::Extrapolator",(QStringList() <<
"*Fatras*"));
552 connect(
m_d->toolhelper_extrapolators,SIGNAL(availableToolsChanged(
const QStringList&)),
555 messageVerbose(
"Setting up tool helper to monitor extrapolators - end");
557 messageVerbose(
"Setting up tool helper to monitor fitters - start");
559 QStringList fittertypes;
560 fittertypes <<
"Trk::KalmanFitter"
561 <<
"Trk::GlobalChi2Fitter"
562 <<
"Trk::GaussianSumFilter"
563 <<
"Trk::DistributedKalmanFilter"
564 <<
"Trk::DeterministicAnnealingFilter";
565 m_d->toolhelper_fitters->addMonitoredTypes(fittertypes);
566 connect(
m_d->toolhelper_fitters,SIGNAL(availableToolsChanged(
const QStringList&)),
569 messageVerbose(
"Setting up tool helper to monitor fitters - end");
571 m_d->toolhelper_extrapolators =
nullptr;
572 m_d->toolhelper_fitters =
nullptr;
573 m_d->ui_extrap.comboBox_propagator->clear();
575 m_d->ui_extrap.comboBox_propagator->setEnabled(
false);
576 m_d->ui_extrap.radioButton_athenaExtrapolator->setEnabled(
false);
577 m_d->ui_extrap.radioButton_none->setChecked(
true);
578 m_d->ui_int.comboBox_fitters->clear();
580 m_d->ui_int.comboBox_fitters->setEnabled(
false);
654 SoMaterial * materialeffectsontrackMat =
createMaterial(200,255,75);
655 materialeffectsontrackMat->transparency=0.5;
656 ui_ascobjs.matButton_materialeffectsontrack->setMaterial(materialeffectsontrackMat);
664 delete m_d->toolaccesshelper;
665 delete m_d->matmixer;
666 m_d->materialFallback->unref();
669 m_d->ascObjDrawStyle->unref();
670 m_d->ascObjComplexity->unref();
672 delete m_d->calorimeterEntryLayer ;
673 delete m_d->muonSpectrometerEntryLayer;
674 delete m_d->muonSpectrometerExitLayer ;
701 messageDebug(
"Serialize - current version: "+QString::number( s.version() ));
704 s.save(QString(
"TrackSystemSettings"));
716 s.save(QString(
"Projections options"));
717 s.save(
m_d->ui_proj.checkBox_projections_indet);
718 s.save(
m_d->ui_proj.checkBox_projections_muonchambers);
719 s.save(
m_d->ui_proj.groupBox_projections_vertex);
720 s.save(
m_d->ui_proj.spinBox_projections_vertex);
721 s.save(
m_d->ui_proj.horizontalSlider_projections_vertex);
734 s.save(QString(
"Propagation options"));
735 s.save(
m_d->ui_extrap.radioButton_none,
736 m_d->ui_extrap.radioButton_helical,
737 m_d->ui_extrap.radioButton_athenaExtrapolator);
738 s.save(
m_d->ui_extrap.comboBox_propagator);
745 s.save(QString(
"Interactions options"));
746 s.save(
m_d->ui_int.lineEdit_fittedTrackCollName);
747 s.save(
m_d->ui_int.comboBox_fitters);
758 s.save(
m_d->ui_ascobjs.comboBox_assocobj_detaillevel);
762 s.save(
m_d->ui_ascobjs.checkBox_truthtracks_display_points);
765 s.save(QString(
"Colour options"));
767 s.save(
m_d->ui_col.matButton_electrons);
768 s.save(
m_d->ui_col.matButton_muons);
769 s.save(
m_d->ui_col.matButton_pions);
770 s.save(
m_d->ui_col.matButton_protons);
771 s.save(
m_d->ui_col.matButton_chargedkaons);
772 s.save(
m_d->ui_col.matButton_othercharged);
773 s.save(
m_d->ui_col.matButton_neutrons);
774 s.save(
m_d->ui_col.matButton_photons);
775 s.save(
m_d->ui_col.matButton_neutrinos);
776 s.save(
m_d->ui_col.matButton_otherneutrals);
779 s.save(
m_d->ui_col.matButton_charge_neg);
780 s.save(
m_d->ui_col.matButton_charge_pos);
781 s.save(
m_d->ui_col.matButton_charge_neutral);
784 s.save(
m_d->ui_col.matButton_0GeV);
785 s.save(
m_d->ui_col.matButton_15GeV);
796 s.save(QString(
"Cuts options"));
798 s.save(
m_d->ui_cuts.checkBox_cut_minpt);
799 s.save(
m_d->ui_cuts.doubleSpinBox_cut_minpt_gev);
800 s.save(
m_d->ui_cuts.checkBox_cut_maxpt);
801 s.save(
m_d->ui_cuts.doubleSpinBox_cut_maxpt_gev);
802 s.save(
m_d->ui_cuts.comboBox_momtype);
804 s.save(
m_d->ui_cuts.etaPhiCutWidget);
808 s.save(
m_d->ui_cuts.checkBox_cut_nhits_pixel);
809 s.save(
m_d->ui_cuts.checkBox_cut_nhits_sct);
810 s.save(
m_d->ui_cuts.checkBox_cut_nhits_trt);
811 s.save(
m_d->ui_cuts.checkBox_cut_nhits_muon);
812 s.save(
m_d->ui_cuts.spinBox_cut_nhits_pixel);
813 s.save(
m_d->ui_cuts.spinBox_cut_nhits_sct);
814 s.save(
m_d->ui_cuts.spinBox_cut_nhits_trt);
815 s.save(
m_d->ui_cuts.spinBox_cut_nhits_muon);
818 s.save(
m_d->ui_cuts.checkBox_cut_truthtracks_creationvertexinIR);
819 s.save(
m_d->ui_cuts.checkBox_cut_truthtracks_excludeneutrals);
820 s.save(
m_d->ui_cuts.checkBox_cut_truthtracks_excludebarcode0);
822 s.save(
m_d->ui_cuts.checkBox_vertexAssociated);
831 s.save(QString(
"Interactions options"));
833 s.save(
m_d->ui_int.radioButton_selmode_single,
834 m_d->ui_int.radioButton_selmode_multitracks,
835 m_d->ui_int.radioButton_selmode_trackfits);
837 s.save(
m_d->ui_int.checkBox_selsingle_printinfo);
838 s.save(
m_d->ui_int.checkBox_selsingle_printinfo_verbose);
839 s.save(
m_d->ui_int.checkBox_selsingle_orientzoom);
840 s.save(
m_d->ui_int.checkBox_sel_printtotmom);
841 s.save(
m_d->ui_int.checkBox_sel_showtotmom);
842 s.save(
m_d->ui_int.comboBox_fitterMode);
843 s.save(
m_d->ui_int.checkBox_removeOutliers);
844 s.save(
m_d->ui_int.comboBox_particleHypo);
851 s.save(QString(
"AscObjs options"));
853 s.save(
m_d->ui_ascobjs.checkBox_materialeffectsontrack_forceposontrack);
854 s.save(
m_d->ui_ascobjs.checkBox_materialeffectsontrack_hideNoDE);
855 s.save(
m_d->ui_ascobjs.checkBox_measurements_shorttubes_mdt);
856 s.save(
m_d->ui_ascobjs.checkBox_measurements_shorttubes_trt);
857 s.save(
m_d->ui_ascobjs.checkBox_measurements_drawGP);
858 s.save(
m_d->ui_ascobjs.checkBox_parerror_drawcylinder);
859 s.save(
m_d->ui_ascobjs.checkBox_parerror_hideperigeeerrors);
860 s.save(
m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces);
861 s.save(
m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces);
862 s.save(
m_d->ui_ascobjs.checkBox_usecolour_materialeffectsontrack);
863 s.save(
m_d->ui_ascobjs.checkBox_usecolour_meas_outliers);
864 s.save(
m_d->ui_ascobjs.checkBox_usecolour_measurements);
865 s.save(
m_d->ui_ascobjs.checkBox_usecolour_parametererrors);
866 s.save(
m_d->ui_ascobjs.checkBox_usecolour_parameters);
867 s.save(
m_d->ui_ascobjs.checkBox_useHoleColour_parameters);
868 s.save(
m_d->ui_ascobjs.checkBox_usecolour_surfaces);
870 s.save(
m_d->ui_ascobjs.doubleSpinBox_parerror_stddev);
871 s.save(
m_d->ui_ascobjs.groupBox_materialeffectsontrack);
872 s.save(
m_d->ui_ascobjs.groupBox_measurements);
873 s.save(
m_d->ui_ascobjs.groupBox_errors);
874 s.save(
m_d->ui_ascobjs.checkBox_parametererrors);
875 s.save(
m_d->ui_ascobjs.checkBox_measurementerrors);
876 s.save(
m_d->ui_ascobjs.groupBox_parameters);
877 s.save(
m_d->ui_ascobjs.groupBox_surfaces);
878 s.save(
m_d->ui_ascobjs.horizontalSlider_complexity);
879 s.save(
m_d->ui_ascobjs.horizontalSlider_linewidths);
880 s.save(
m_d->ui_ascobjs.horizontalSlider_materialeffectsontrack_scale);
881 s.save(
m_d->ui_ascobjs.horizontalSlider_pointsizes);
882 s.save(
m_d->ui_ascobjs.matButton_materialeffectsontrack);
883 s.save(
m_d->ui_ascobjs.matButton_meas_outliers);
884 s.save(
m_d->ui_ascobjs.matButton_measurements);
885 s.save(
m_d->ui_ascobjs.matButton_parameters);
886 s.save(
m_d->ui_ascobjs.matButton_holeParameters);
887 s.save(
m_d->ui_ascobjs.matButton_parerrors);
888 s.save(
m_d->ui_ascobjs.matButton_surfaces);
889 s.save(
m_d->ui_ascobjs.doubleSpinBox_measurements_shorttubes_scale);
896 s.save(QString(
"Colouring options"));
898 s.save(
m_d->ui_col.groupBox_labels);
899 s.save(
m_d->ui_col.horizontalSlider_labels_trkOffset);
900 s.save(
m_d->ui_col.horizontalSlider_labels_xOffset);
901 s.save(
m_d->ui_col.horizontalSlider_labels_yOffset);
902 s.save(
m_d->ui_col.horizontalSlider_labels_zOffset);
903 s.save(
m_d->ui_col.checkBox_trkLabels_p);
904 s.save(
m_d->ui_col.checkBox_trkLabels_Pt);
905 s.save(
m_d->ui_col.checkBox_trkLabels_pid);
906 s.save(
m_d->ui_col.checkBox_trkLabels_hits);
907 s.save(
m_d->ui_col.checkBox_trkLabels_fitQuality);
908 s.save(
m_d->ui_col.checkBox_trkLabels_direction);
917 s.save(QString(
"Extrapolator options"));
918 s.save(
m_d->ui_extrap.checkBox_ignoreMEoT);
919 s.save(
m_d->ui_extrap.checkBox_extendAllInDetTracks);
920 s.save(
m_d->ui_extrap.comboBox_extendAllInDetTracksToHere);
921 s.save(
m_d->ui_extrap.horizontalSlider_granularity);
922 s.save(
m_d->ui_extrap.checkBox_maxRadius);
923 s.save(
m_d->ui_extrap.spinBox_maxRadiusValue);
927 messageVerbose(
"TrackSystemController::actualSaveSettings() - DONE.");
934 messageDebug(
"TrackSystemController::actualRestoreSettings()");
945 messageDebug(
"Deserialize - current version: "+QString::number( s.version() ));
948 message(
"Warning: State data in .vp1 file has unsupported version ("+
str(s.version())+
")");
952 if (s.version()<17) {
953 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.");
956 if (s.version()<17) {
959 QString tt = s.restoreString();
961 if (tt !=
"TrackSystemSettings") {
962 messageDebug(
"\n\nERROR!! Settings order does not match!!");
989 if (s.version()>=17 && s.restoreString() !=
"Projections options")
messageDebug(
"\n\nERROR! --> 'Projections options'");
990 s.restore(
m_d->ui_proj.checkBox_projections_indet);
991 s.restore(
m_d->ui_proj.checkBox_projections_muonchambers);
992 if (s.version()>=15){
993 s.restore(
m_d->ui_proj.groupBox_projections_vertex);
994 s.restore(
m_d->ui_proj.spinBox_projections_vertex);
995 s.restore(
m_d->ui_proj.horizontalSlider_projections_vertex);
1010 if (s.version()<17){
1022 if (s.version()>=17 && s.restoreString() !=
"Propagation options")
messageDebug(
"\n\nERROR! --> 'Propagation options'");
1024 s.restore(
m_d->ui_extrap.radioButton_none,
1025 m_d->ui_extrap.radioButton_helical,
1026 m_d->ui_extrap.radioButton_athenaExtrapolator);
1027 m_d->restoredLastPropagator = s.restoreString();
1028 s.widgetHandled(
m_d->ui_extrap.comboBox_propagator);
1035 if (s.version()>=17 && s.restoreString() !=
"Interactions options")
messageDebug(
"\n\nERROR! --> 'Interactions options'");
1036 if (s.version()>=6) {
1037 s.restore(
m_d->ui_int.lineEdit_fittedTrackCollName);
1038 m_d->restoredLastFitter = s.restoreString();
1039 s.widgetHandled(
m_d->ui_int.comboBox_fitters);
1049 if (s.version()==0) {
1058 s.restore(
m_d->ui_ascobjs.comboBox_assocobj_detaillevel);
1059 if (s.version()<=2) {
1065 s.restore(
m_d->ui_ascobjs.checkBox_truthtracks_display_points);
1069 if (s.version()>=17 && s.restoreString() !=
"Colour options")
messageDebug(
"\n\nERROR! --> 'Colour options'");
1071 s.restore(
m_d->ui_col.matButton_electrons);
1072 s.restore(
m_d->ui_col.matButton_muons);
1073 s.restore(
m_d->ui_col.matButton_pions);
1074 s.restore(
m_d->ui_col.matButton_protons);
1075 s.restore(
m_d->ui_col.matButton_chargedkaons);
1076 s.restore(
m_d->ui_col.matButton_othercharged);
1077 s.restore(
m_d->ui_col.matButton_neutrons);
1078 s.restore(
m_d->ui_col.matButton_photons);
1079 s.restore(
m_d->ui_col.matButton_neutrinos);
1080 s.restore(
m_d->ui_col.matButton_otherneutrals);
1081 if (s.version()>=2) {
1083 s.restore(
m_d->ui_col.matButton_charge_neg);
1084 s.restore(
m_d->ui_col.matButton_charge_pos);
1085 s.restore(
m_d->ui_col.matButton_charge_neutral);
1088 s.restore(
m_d->ui_col.matButton_0GeV);
1089 s.restore(
m_d->ui_col.matButton_15GeV);
1098 if (s.version()>=17 && s.restoreString() !=
"Cuts options")
messageDebug(
"\n\nERROR! --> 'Cuts options'");
1100 s.restore(
m_d->ui_cuts.checkBox_cut_minpt);
1101 s.restore(
m_d->ui_cuts.doubleSpinBox_cut_minpt_gev);
1102 s.restore(
m_d->ui_cuts.checkBox_cut_maxpt);
1103 s.restore(
m_d->ui_cuts.doubleSpinBox_cut_maxpt_gev);
1105 if (s.version()>=10) {
1106 s.restore(
m_d->ui_cuts.comboBox_momtype);
1109 if (s.version()>=7) {
1110 s.restore(
m_d->ui_cuts.etaPhiCutWidget);
1117 s.ignoreObsoletePhiSectionWidgetState();
1120 if (s.version()>=9) {
1121 s.restore(
m_d->ui_cuts.checkBox_cut_nhits_pixel);
1122 s.restore(
m_d->ui_cuts.checkBox_cut_nhits_sct);
1123 s.restore(
m_d->ui_cuts.checkBox_cut_nhits_trt);
1124 s.restore(
m_d->ui_cuts.checkBox_cut_nhits_muon);
1125 s.restore(
m_d->ui_cuts.spinBox_cut_nhits_pixel);
1126 s.restore(
m_d->ui_cuts.spinBox_cut_nhits_sct);
1127 s.restore(
m_d->ui_cuts.spinBox_cut_nhits_trt);
1128 s.restore(
m_d->ui_cuts.spinBox_cut_nhits_muon);
1132 s.restore(
m_d->ui_cuts.checkBox_cut_truthtracks_creationvertexinIR);
1133 s.restore(
m_d->ui_cuts.checkBox_cut_truthtracks_excludeneutrals);
1134 s.restore(
m_d->ui_cuts.checkBox_cut_truthtracks_excludebarcode0);
1136 if (s.version()>=14) s.restore(
m_d->ui_cuts.checkBox_vertexAssociated);
1144 if (s.version()>=17 && s.restoreString() !=
"Interactions options")
messageDebug(
"\n\nERROR! --> 'Interactions options'");
1146 s.restore(
m_d->ui_int.radioButton_selmode_single,
1147 m_d->ui_int.radioButton_selmode_multitracks,
1148 m_d->ui_int.radioButton_selmode_trackfits);
1150 s.restore(
m_d->ui_int.checkBox_selsingle_printinfo);
1151 s.restore(
m_d->ui_int.checkBox_selsingle_printinfo_verbose);
1152 s.restore(
m_d->ui_int.checkBox_selsingle_orientzoom);
1153 s.restore(
m_d->ui_int.checkBox_sel_printtotmom);
1154 s.restore(
m_d->ui_int.checkBox_sel_showtotmom);
1155 if (s.version()>=12){
1156 s.restore(
m_d->ui_int.comboBox_fitterMode);
1157 s.restore(
m_d->ui_int.checkBox_removeOutliers);
1158 s.restore(
m_d->ui_int.comboBox_particleHypo);
1169 if (s.version()>=17 && s.restoreString() !=
"AscObjs options")
messageDebug(
"\n\nERROR! --> 'AscObjs options'");
1171 s.restore(
m_d->ui_ascobjs.checkBox_materialeffectsontrack_forceposontrack);
1172 s.restore(
m_d->ui_ascobjs.checkBox_materialeffectsontrack_hideNoDE);
1173 s.restore(
m_d->ui_ascobjs.checkBox_measurements_shorttubes_mdt);
1174 s.restore(
m_d->ui_ascobjs.checkBox_measurements_shorttubes_trt);
1175 if (s.version()>=11) s.restore(
m_d->ui_ascobjs.checkBox_measurements_drawGP);
1176 s.restore(
m_d->ui_ascobjs.checkBox_parerror_drawcylinder);
1177 s.restore(
m_d->ui_ascobjs.checkBox_parerror_hideperigeeerrors);
1178 s.restore(
m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces);
1179 if (s.version()>=11) s.restore(
m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces);
1180 s.restore(
m_d->ui_ascobjs.checkBox_usecolour_materialeffectsontrack);
1181 s.restore(
m_d->ui_ascobjs.checkBox_usecolour_meas_outliers);
1182 s.restore(
m_d->ui_ascobjs.checkBox_usecolour_measurements);
1183 if (s.version()<12) s.restore(
m_d->ui_ascobjs.checkBox_parametererrors);
1184 s.restore(
m_d->ui_ascobjs.checkBox_usecolour_parametererrors);
1185 s.restore(
m_d->ui_ascobjs.checkBox_usecolour_parameters);
1186 if (s.version()>=14)
1187 s.restore(
m_d->ui_ascobjs.checkBox_useHoleColour_parameters);
1188 s.restore(
m_d->ui_ascobjs.checkBox_usecolour_surfaces);
1189 s.restore(
m_d->ui_ascobjs.doubleSpinBox_parerror_stddev);
1190 s.restore(
m_d->ui_ascobjs.groupBox_materialeffectsontrack);
1191 s.restore(
m_d->ui_ascobjs.groupBox_measurements);
1192 if (s.version()>=12) {
1193 s.restore(
m_d->ui_ascobjs.groupBox_errors);
1194 s.restore(
m_d->ui_ascobjs.checkBox_parametererrors);
1195 s.restore(
m_d->ui_ascobjs.checkBox_measurementerrors);
1197 s.restore(
m_d->ui_ascobjs.groupBox_parameters);
1198 s.restore(
m_d->ui_ascobjs.groupBox_surfaces);
1199 s.restore(
m_d->ui_ascobjs.horizontalSlider_complexity);
1200 s.restore(
m_d->ui_ascobjs.horizontalSlider_linewidths);
1201 s.restore(
m_d->ui_ascobjs.horizontalSlider_materialeffectsontrack_scale);
1202 s.restore(
m_d->ui_ascobjs.horizontalSlider_pointsizes);
1203 s.restore(
m_d->ui_ascobjs.matButton_materialeffectsontrack);
1204 s.restore(
m_d->ui_ascobjs.matButton_meas_outliers);
1205 s.restore(
m_d->ui_ascobjs.matButton_measurements);
1206 s.restore(
m_d->ui_ascobjs.matButton_parameters);
1207 if (s.version()>=14)
1208 s.restore(
m_d->ui_ascobjs.matButton_holeParameters);
1209 s.restore(
m_d->ui_ascobjs.matButton_parerrors);
1210 s.restore(
m_d->ui_ascobjs.matButton_surfaces);
1212 s.restore(
m_d->ui_ascobjs.doubleSpinBox_measurements_shorttubes_scale);
1225 if (s.version()>=17 && s.restoreString() !=
"Colouring options")
messageDebug(
"\n\nERROR! --> 'Colouring options'");
1226 if (s.version()>=12){
1227 s.restore(
m_d->ui_col.groupBox_labels);
1228 s.restore(
m_d->ui_col.horizontalSlider_labels_trkOffset);
1229 s.restore(
m_d->ui_col.horizontalSlider_labels_xOffset);
1230 s.restore(
m_d->ui_col.horizontalSlider_labels_yOffset);
1231 s.restore(
m_d->ui_col.horizontalSlider_labels_zOffset);
1232 s.restore(
m_d->ui_col.checkBox_trkLabels_p);
1233 s.restore(
m_d->ui_col.checkBox_trkLabels_Pt);
1234 s.restore(
m_d->ui_col.checkBox_trkLabels_pid);
1235 s.restore(
m_d->ui_col.checkBox_trkLabels_hits);
1236 s.restore(
m_d->ui_col.checkBox_trkLabels_fitQuality);
1238 if (s.version()>=16)
1239 s.restore(
m_d->ui_col.checkBox_trkLabels_direction);
1247 if (s.version()>=17 && s.restoreString() !=
"Extrapolator options")
messageDebug(
"\n\nERROR! --> 'Extrapolator options'");
1248 if (s.version()>=14){
1249 s.restore(
m_d->ui_extrap.checkBox_ignoreMEoT);
1250 s.restore(
m_d->ui_extrap.checkBox_extendAllInDetTracks);
1251 s.restore(
m_d->ui_extrap.comboBox_extendAllInDetTracksToHere);
1252 s.restore(
m_d->ui_extrap.horizontalSlider_granularity);
1255 if (s.version()>=15){
1256 s.restore(
m_d->ui_extrap.checkBox_maxRadius);
1257 s.restore(
m_d->ui_extrap.spinBox_maxRadiusValue);
1263 messageDebug(
"TrackSystemController::actualRestoreSettings() - DONE.");
1270 return m_d->trackcollwidget;
1279 theclass->message(
"ERROR: Null material button pointer");
1282 QList<SoMaterial*> mats = mb->handledMaterials();
1283 if (mats.count()!=1) {
1284 theclass->message(
"ERROR: No material in button");
1294 int abspdg = abs(pdgCode);
1296 case 211: matbutton =
m_d->ui_col.matButton_pions;
break;
1297 case 11: matbutton =
m_d->ui_col.matButton_electrons;
break;
1298 case 22: matbutton =
m_d->ui_col.matButton_photons;
break;
1299 case 13: matbutton =
m_d->ui_col.matButton_muons;
break;
1300 case 2212: matbutton =
m_d->ui_col.matButton_protons;
break;
1301 case 2112: matbutton =
m_d->ui_col.matButton_neutrons;
break;
1302 case 2:
return m_d->materialFallback;
1311 matbutton =
m_d->ui_col.matButton_chargedkaons;
break;
1316 matbutton =
m_d->ui_col.matButton_neutrinos;
break;
1322 message(
"WARNING: Could not look up charge of pdg code "+
str(abspdg)+
". Assuming charged.");
1326 matbutton =
m_d->ui_col.matButton_otherneutrals;
1328 matbutton =
m_d->ui_col.matButton_othercharged;
1331 return m_d->getMat(matbutton);
1338 return m_d->getMat(
m_d->ui_col.matButton_charge_pos);
1340 return m_d->getMat(
m_d->ui_col.matButton_charge_neg);
1341 return m_d->getMat(
m_d->ui_col.matButton_charge_neutral);
1347 static const double low=0*CLHEP::GeV;
1348 static const double high=15*CLHEP::GeV;
1350 return m_d->getMat(
m_d->ui_col.matButton_0GeV);
1351 else if (absmom>=high)
1352 return m_d->getMat(
m_d->ui_col.matButton_15GeV);
1357 const double x = (absmom-low)/(high-low);
1358 return m_d->matmixer->getMixedMaterial(
m_d->getMat(
m_d->ui_col.matButton_0GeV), 1-
x,
1359 m_d->getMat(
m_d->ui_col.matButton_15GeV),
x );
1365 return m_d->getMat(
m_d->ui_ascobjs.matButton_measurements);
1371 return m_d->getMat(
m_d->ui_ascobjs.matButton_meas_outliers);
1377 return m_d->getMat(
m_d->ui_ascobjs.matButton_parameters);
1383 return m_d->getMat(
m_d->ui_ascobjs.matButton_holeParameters);
1389 return m_d->getMat(
m_d->ui_ascobjs.matButton_parerrors);
1395 return m_d->getMat(
m_d->ui_ascobjs.matButton_materialeffectsontrack);
1401 return m_d->getMat(
m_d->ui_ascobjs.matButton_surfaces);
1430 if (
m_d->ascObjDrawStyle->lineWidth.getValue()!=val_lw)
1431 m_d->ascObjDrawStyle->lineWidth = val_lw;
1432 if (
m_d->ascObjDrawStyle->pointSize.getValue()!=val_ps)
1433 m_d->ascObjDrawStyle->pointSize = val_ps;
1441 const double val = std::min<double>(1.0,std::max<double>(0.0,0.01+0.991*
1442 (
m_d->ui_ascobjs.horizontalSlider_complexity->value()
1443 -
m_d->ui_ascobjs.horizontalSlider_complexity->minimum())/
1444 (
m_d->ui_ascobjs.horizontalSlider_complexity->maximum()*1.0)));
1445 if (
m_d->ascObjComplexity->value.getValue()!=val)
1446 m_d->ascObjComplexity->value.setValue(val);
1464 return m_d->ascObjDrawStyle;
1470 return m_d->ascObjComplexity;
1476 QString name =
m_d->ui_int.lineEdit_fittedTrackCollName->text().simplified();
1477 return name.isEmpty() ?
"<noname>" : name;
1495 if (!
m_d->ui_proj.groupBox_projections_vertex->isChecked())
return -1;
1496 return m_d->ui_proj.spinBox_projections_vertex->value();
1510 if (
m_d->ui_ascobjs.groupBox_parameters->isChecked())
1512 if (
m_d->ui_ascobjs.groupBox_errors->isChecked()&&
m_d->ui_ascobjs.checkBox_parametererrors->isChecked()) {
1514 if (!
m_d->ui_ascobjs.checkBox_parerror_hideperigeeerrors->isChecked())
1517 if (
m_d->ui_ascobjs.groupBox_errors->isChecked()&&
m_d->ui_ascobjs.checkBox_measurementerrors->isChecked()) {
1520 if (
m_d->ui_ascobjs.groupBox_measurements->isChecked()) {
1524 if (
m_d->ui_ascobjs.groupBox_surfaces->isChecked()) {
1526 if (!
m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces->isChecked())
1528 if (!
m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces->isChecked())
1531 if (
m_d->ui_ascobjs.groupBox_materialeffectsontrack->isChecked()) {
1533 if (!
m_d->ui_ascobjs.checkBox_materialeffectsontrack_hideNoDE->isChecked())
1544 if (
m_d->ui_ascobjs.checkBox_usecolour_measurements->isChecked())
1546 if (
m_d->ui_ascobjs.checkBox_usecolour_meas_outliers->isChecked())
1548 if (
m_d->ui_ascobjs.checkBox_usecolour_parameters->isChecked())
1550 if (
m_d->ui_ascobjs.checkBox_useHoleColour_parameters->isChecked())
1552 if (
m_d->ui_ascobjs.checkBox_usecolour_parametererrors->isChecked())
1554 if (
m_d->ui_ascobjs.checkBox_usecolour_materialeffectsontrack->isChecked())
1556 if (
m_d->ui_ascobjs.checkBox_usecolour_surfaces->isChecked())
1565 return m_d->ui_ascobjs.checkBox_measurements_shorttubes_trt->isChecked();
1571 return m_d->ui_ascobjs.checkBox_measurements_shorttubes_mdt->isChecked();
1577 return m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces->isChecked();
1583 return m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces->isChecked();
1589 return m_d->ui_ascobjs.checkBox_measurements_drawGP->isChecked();
1596 return std::max(0.1*CLHEP::mm,
m_d->ui_ascobjs.doubleSpinBox_measurements_shorttubes_scale->value()*CLHEP::cm);
1602 return std::min<double>(1.0e3,std::max<double>(1.0e-3,
m_d->ui_ascobjs.doubleSpinBox_parerror_stddev->value()));
1608 return m_d->ui_ascobjs.checkBox_parerror_drawcylinder->isChecked();
1614 const int val(
m_d->ui_ascobjs.horizontalSlider_complexity->value());
1615 const int max(
m_d->ui_ascobjs.horizontalSlider_complexity->maximum());
1616 const int min(
m_d->ui_ascobjs.horizontalSlider_complexity->minimum());
1624 const int n(1+
static_cast<int>(0.5+7.0*(val-
min)/(1.0*
max)));
1625 return std::min<int>(32,std::max<int>(4,4*n));
1631 return m_d->ui_ascobjs.horizontalSlider_materialeffectsontrack_scale->value()/5.0;
1637 if (!
m_d->toolaccesshelper
1638 ||!
m_d->ui_extrap.radioButton_athenaExtrapolator->isChecked()
1639 ||
m_d->ui_extrap.comboBox_propagator->count()==0)
1642 QString key =
m_d->ui_extrap.comboBox_propagator->currentText();
1644 messageDebug(
"No extrapolator available, returning a nullptr...");
1658 if (!
m_d->ui_extrap.checkBox_maxRadius->isChecked())
return -1.0;
1659 return m_d->ui_extrap.spinBox_maxRadiusValue->value();
1668 return m_d->ui_extrap.checkBox_ignoreMEoT->isChecked();
1674 if (!
m_d->toolaccesshelper
1675 ||
m_d->ui_int.comboBox_fitters->count()==0)
1678 QString key =
m_d->ui_int.comboBox_fitters->currentText();
1681 return key.isEmpty() ? nullptr :
m_d->toolaccesshelper->getToolPointer<
Trk::ITrackFitter>(key);
1686 QString key =
"Muon::MuonEDMPrinterTool/MuonEDMPrinterTool";
1697 if (
m_d->ui_extrap.comboBox_extendAllInDetTracksToHere->currentText()==
"Calorimeter")
1698 return m_d->calorimeterEntryLayer;
1699 if (
m_d->ui_extrap.comboBox_extendAllInDetTracksToHere->currentText()==
"Muon Entrance")
1700 return m_d->muonSpectrometerEntryLayer;
1701 if (
m_d->ui_extrap.comboBox_extendAllInDetTracksToHere->currentText()==
"Muon Exit")
1702 return m_d->muonSpectrometerExitLayer;
1709 if (
m_d->ui_int.radioButton_selmode_single->isChecked())
1711 else if (
m_d->ui_int.radioButton_selmode_multitracks->isChecked())
1713 else if (
m_d->ui_int.radioButton_selmode_trackfits->isChecked())
1715 message(
"selectionMode ERROR: Inconsistency detected.");
1721 if (
m_d->ui_int.comboBox_fitterMode->currentText()==
"Fit PRDs")
1723 else if (
m_d->ui_int.comboBox_fitterMode->currentText()==
"Refit Track")
1725 else if (
m_d->ui_int.comboBox_fitterMode->currentText()==
"Extend Track with PRDs")
1727 else if (
m_d->ui_int.comboBox_fitterMode->currentText()==
"Combine Two Tracks")
1730 message(
"fitterMode ERROR: Inconsistency detected. Mode not known.");
1737 return m_d->ui_int.checkBox_removeOutliers->isChecked();
1742 if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Pion")
1744 else if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Non Interacting")
1746 else if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Electron")
1748 else if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Muon")
1750 else if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Kaon")
1752 else if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Proton")
1754 else if (
m_d->ui_int.comboBox_particleHypo->currentText()==
"Photon")
1757 message(
"fitterMode ERROR: Inconsistency detected. Mode not known.");
1764 return m_d->ui_ascobjs.checkBox_truthtracks_display_points->isChecked();
1770 if (
m_d->ui_ascobjs.comboBox_assocobj_detaillevel->currentText()==
"Auto")
1772 else if (
m_d->ui_ascobjs.comboBox_assocobj_detaillevel->currentText()==
"Simple")
1779 if (
m_d->ui_cuts.checkBox_vertexAssociated->isEnabled()!=b) {
1780 m_d->ui_cuts.checkBox_vertexAssociated->setEnabled(b);
1786 if (!
m_d->ui_cuts.checkBox_vertexAssociated->isEnabled())
return false;
1787 return m_d->ui_cuts.checkBox_vertexAssociated->isChecked();
1794 if (!
m_d->ui_cuts.checkBox_cut_minpt)
1802 bool isPCut =
m_d->ui_cuts.comboBox_momtype->currentText()==
"P";
1804 const double minFromInterface=
m_d->ui_cuts.doubleSpinBox_cut_minpt_gev->value()*CLHEP::GeV;
1805 const double maxFromInterface=
m_d->ui_cuts.doubleSpinBox_cut_maxpt_gev->value()*CLHEP::GeV;
1810 min = (
m_d->ui_cuts.checkBox_cut_minpt->isChecked() ? minFromInterface : -std::numeric_limits<double>::infinity());
1811 max = (
m_d->ui_cuts.checkBox_cut_maxpt->isChecked() ? maxFromInterface : std::numeric_limits<double>::infinity());
1813 min = (
m_d->ui_cuts.checkBox_cut_maxpt->isChecked() ? -maxFromInterface : -std::numeric_limits<double>::infinity());
1814 max = (
m_d->ui_cuts.checkBox_cut_minpt->isChecked() ? -minFromInterface : std::numeric_limits<double>::infinity());
1828 return m_d->ui_cuts.etaPhiCutWidget->allowedEta();
1834 return m_d->ui_cuts.etaPhiCutWidget->allowedPhi();
1840 unsigned npixel =
m_d->ui_cuts.checkBox_cut_nhits_pixel->isChecked() ?
m_d->ui_cuts.spinBox_cut_nhits_pixel->value() : 0;
1841 unsigned nsct =
m_d->ui_cuts.checkBox_cut_nhits_sct->isChecked() ?
m_d->ui_cuts.spinBox_cut_nhits_sct->value() : 0;
1842 unsigned ntrt =
m_d->ui_cuts.checkBox_cut_nhits_trt->isChecked() ?
m_d->ui_cuts.spinBox_cut_nhits_trt->value() : 0;
1843 unsigned nmuon =
m_d->ui_cuts.checkBox_cut_nhits_muon->isChecked() ?
m_d->ui_cuts.spinBox_cut_nhits_muon->value() : 0;
1844 unsigned nprecmuon =
m_d->ui_cuts.checkBox_cut_nprecisionhits_muon->isChecked() ?
m_d->ui_cuts.spinBox_cut_nprecisionhits_muon->value() : 0;
1847 if (!npixel&&!nsct&&!ntrt&&!nmuon&&!nprecmuon)
1849 l << npixel << nsct << ntrt << nmuon << nprecmuon;
1854 QString tmp =
m_d->ui_cuts.checkBox_requireDetectorElement->isChecked() ?
m_d->ui_cuts.lineEdit_detectorElementId->text(): QString();
1862 return m_d->ui_cuts.checkBox_cut_truthtracks_creationvertexinIR->isChecked();
1868 return m_d->ui_cuts.checkBox_cut_truthtracks_excludebarcode0->isChecked();
1874 return m_d->ui_cuts.checkBox_cut_truthtracks_excludeneutrals->isChecked();
1882 QString ct = cb->currentText();
1886 bool save = cb->blockSignals(
true);
1890 bool enabled =
false;
1893 cb->setEnabled(
false);
1897 int i = restoredSelection.isEmpty() ? -1 : cb->findText(restoredSelection);
1899 i = ct.isEmpty() ? -1 : cb->findText(ct);
1900 restoredSelection =
"";
1903 cb->setCurrentIndex(i);
1907 int i_vp1(-1), i_atlas(-1);
1908 for (
int j = 0; j <cb->count();++j) {
1911 if (i_vp1==-1&&cb->itemText(j).contains(
"vp1",Qt::CaseInsensitive))
1914 if (i_atlas==-1&&cb->itemText(j).contains(
"atlas",Qt::CaseInsensitive))
1918 cb->setCurrentIndex(i_vp1);
1919 else if (i_atlas>=0)
1920 cb->setCurrentIndex(i_atlas);
1924 cb->setEnabled(
true);
1928 cb->blockSignals(
false);
1935 if (
m_d->lastUpdatedAvailableFitters==af)
1937 m_d->lastUpdatedAvailableFitters=af;
1938 m_d->updateComboBoxContents(
m_d->ui_int.comboBox_fitters,af,
m_d->restoredLastFitter);
1939 m_d->updateFitPRDButtonState();
1947 if (
m_d->lastUpdatedAvailableExtrapolators==ae)
1949 m_d->lastUpdatedAvailableExtrapolators=ae;
1951 if (!
m_d->updateComboBoxContents(
m_d->ui_extrap.comboBox_propagator,ae,
m_d->restoredLastPropagator)) {
1952 m_d->ui_extrap.radioButton_athenaExtrapolator->setEnabled(
false);
1953 bool save1 =
m_d->ui_extrap.radioButton_none->blockSignals(
true);
1954 bool save2 =
m_d->ui_extrap.radioButton_helical->blockSignals(
true);
1955 bool save3 =
m_d->ui_extrap.radioButton_athenaExtrapolator->blockSignals(
true);
1956 m_d->ui_extrap.radioButton_none->setChecked(
true);
1957 m_d->ui_extrap.radioButton_helical->setChecked(
false);
1958 m_d->ui_extrap.radioButton_athenaExtrapolator->setChecked(
false);
1959 if (!save1)
m_d->ui_extrap.radioButton_none->blockSignals(
false);
1960 if (!save2)
m_d->ui_extrap.radioButton_helical->blockSignals(
false);
1961 if (!save3)
m_d->ui_extrap.radioButton_athenaExtrapolator->blockSignals(
false);
1963 m_d->ui_extrap.radioButton_athenaExtrapolator->setEnabled(
true);
1972 return m_d->ui_int.checkBox_selsingle_orientzoom->isChecked();
1978 return m_d->ui_int.checkBox_selsingle_printinfo->isChecked();
1990 return m_d->ui_int.checkBox_sel_printtotmom->isChecked();
1996 return m_d->ui_int.checkBox_sel_showtotmom->isChecked();
2027 if (
m_d->numberOfSelectedPRDs==prds &&
m_d->numberOfSelectedTracks==trks)
2029 m_d->numberOfSelectedPRDs=prds;
2030 m_d->numberOfSelectedTracks=trks;
2042 m_d->updateFitPRDButtonState();
2055 m_d->updateFitPRDButtonState();
2060 return m_d->objBrowserWidget;
2075 messageVerbose(
"TrackSystemController::objectBrowserClicked: Couldn't get VP1TrackSystem pointer");
2087 messageVerbose(
"Got track node. numselected="+QString::number(
sel->getNumSelected()));
2099 unsigned int index = item->parent()->indexOfChild(item);
2100 messageVerbose(
"TrackSystemController::objectBrowserClicked: item has index of "+QString::number(
index));
2107 if (trkProxyHandle){
2114 messageVerbose(
"TrackSystemController::objectBrowserClicked: Couldn't get node pointer. Maybe object not visible?");
2166 std::vector<double> values(6,0.0);
2167 values[0]=
m_d->ui_shiftmuonchambers.doubleSpinBox_tra_s->value();
2168 values[1]=
m_d->ui_shiftmuonchambers.doubleSpinBox_tra_z->value();
2169 values[2]=
m_d->ui_shiftmuonchambers.doubleSpinBox_tra_t->value();
2170 values[3]=
m_d->ui_shiftmuonchambers.doubleSpinBox_rot_s->value();
2171 values[4]=
m_d->ui_shiftmuonchambers.doubleSpinBox_rot_z->value();
2172 values[5]=
m_d->ui_shiftmuonchambers.doubleSpinBox_rot_t->value();
2177 if (
m_d->ui_shiftmuonchambers.comboBox_level->currentText()==
"Level 0")
2179 else if (
m_d->ui_shiftmuonchambers.comboBox_level->currentText()==
"Level 1")
2181 else if (
m_d->ui_shiftmuonchambers.comboBox_level->currentText()==
"Level 2")
2183 else if (
m_d->ui_shiftmuonchambers.comboBox_level->currentText()==
"Level 3")
2190 return m_d->ui_col.groupBox_labels->isChecked();
2195 return static_cast<float>(
m_d->ui_col.horizontalSlider_labels_trkOffset->value())/
static_cast<float>(
m_d->ui_col.horizontalSlider_labels_trkOffset->maximum());
2201 values <<
m_d->ui_col.horizontalSlider_labels_xOffset->value();
2202 values <<
m_d->ui_col.horizontalSlider_labels_yOffset->value();
2203 values <<
m_d->ui_col.horizontalSlider_labels_zOffset->value();
2209 return m_d->ui_col.horizontalSlider_labels_xOffset->value();
2214 return m_d->ui_col.horizontalSlider_labels_yOffset->value();
2219 return m_d->ui_col.horizontalSlider_labels_zOffset->value();
2223 if (!
m_d->ui_col.groupBox_labels->isChecked())
2239#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 void message(const QString &, IVP1System *sys=0)
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.