ATLAS Offline Software
TrackSystemController.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
7 // //
8 // Implementation of class TrackSystemController //
9 // //
10 // Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
11 // Initial version: February 2008 //
12 // Updates: Riccardo Maria Bianchi (rbianchi@cern.ch) //
13 // //
15 
16 #define VP1IMPVARNAME m_d
17 
18 // FIXME! Remove!
19 #include <Inventor/C/errors/debugerror.h>
20 #include <Inventor/nodes/SoSelection.h>
21 
24 // #include "VP1TrackSystems/TrackObjectBrowserController.h"
30 
31 #include "ui_vp1trackcontrollerform.h"
32 #include "ui_settings_ascobjs_form.h"
33 #include "ui_settings_colouring_form.h"
34 #include "ui_settings_extrapolation_form.h"
35 #include "ui_settings_interactions_form.h"
36 #include "ui_settings_projections_form.h"
37 #include "ui_settings_cuts_form.h"
38 #include "ui_shift_muon_chamber_form.h"
39 #include "ui_objectbrowser.h"
40 
45 #include "VP1Base/VP1QtUtils.h"
46 #include "VP1Base/IVP1System.h"
47 #include "VP1Base/VP1Serialise.h"
48 #include "VP1Base/VP1Deserialise.h"
52 
56 #include "TrkTrack/Track.h"
58 
60 #include "TrkVolumes/Volume.h"
61 
62 #include "Inventor/nodes/SoMaterial.h"
63 #include "Inventor/nodes/SoDrawStyle.h"
64 #include "Inventor/nodes/SoComplexity.h"
65 #include "Inventor/nodes/SoLightModel.h"
66 #include <Inventor/nodes/SoSeparator.h>
67 #include <Inventor/actions/SoSearchAction.h>
68 
69 #include "CLHEP/Units/SystemOfUnits.h"
70 
71 #include <QTreeWidget>
72 #include <QTreeWidgetItem>
73 #include <QtCoreVersion>
74 
75 
76 
77 
78 //____________________________________________________________________
80 public:
82  Ui::VP1TrackControllerForm ui{};
84  void initMaterials();
85  static SoMaterial * createMaterial(const int& r,const int& g,const int& b) ;
86  SoMaterial * getMat(VP1MaterialButton*) const;
87  SoMaterial * materialFallback = nullptr;
88  // SoDrawStyle * trackDrawStyle;
89  SoDrawStyle * ascObjDrawStyle = nullptr;
90  SoComplexity * ascObjComplexity = nullptr;
91  // SoLightModel * trackLightModel;
92 
97  static bool updateComboBoxContents(QComboBox*cb,const QStringList& l,QString& restoredSelection);
98  static const QString noneAvailString;
99  unsigned numberOfSelectedPRDs = 0U;
100  unsigned numberOfSelectedTracks = 0U;
102 
107  TrackCommonFlags::TrackPartsFlags last_shownTrackParts;
109  double last_trackTubeRadius = 0.0;
110  TrackLabelModes last_trackLabels;
114  // bool last_ignoreMeasurementEffectsOnTrackInProp;
115  PropagationOptionFlags last_propagationOptions;
116  float last_propMaxRadius = 0.0F;
120  bool last_showTruthAscObjs = false;
122  TrackCommonFlags::TSOSPartsFlags last_shownTSOSParts;
123  TrackCommonFlags::TSOSPartsFlags last_customColouredTSOSParts;
135  QList<VP1Interval> last_cutAllowedPhi;
136  QList<unsigned> last_cutRequiredNHits;
143 
144  Ui::TrackSysSettingsColouringForm ui_col{};
145  Ui::TrackSysSettingsExtrapolationsForm ui_extrap{};
146  Ui::TrackSysSettingsInteractionsForm ui_int{};
147  Ui::TrackSysSettingsProjectionsForm ui_proj{};
148  Ui::TrackSysSettingsCutsForm ui_cuts{};
149  Ui::TrackSysSettingsAscObjsForm ui_ascobjs{};
150  Ui::TrackSysShiftMuonChambersForm ui_shiftmuonchambers{};
151  Ui::TrackObjectBrowser ui_objBrowser{};
152 
153  static bool extrapolatorsCreated;
154  static void ensureExtrapolatorsCreated(IVP1System *);
155  static bool fittersCreated;
156  static void ensureFittersCreated(IVP1System *);
157 
158  QTreeWidget* objBrowserWidget = nullptr;
160 
161  // Added because TrackingVolumeSvc doesn't work any more. Can remove when we move to new extrapolator
165 };
166 
167 const QString TrackSystemController::Imp::noneAvailString = QString("None available");
168 
169 
170 //____________________________________________________________________
171 QString TrackSystemController::toString( const QList<unsigned>& l )
172 {
173  QString s;
174  for(unsigned i : l) {
175  if (!s.isEmpty()) s+=", ";
176  s+=QString::number(i);
177  }
178  return "["+s+"]";
179 }
180 
181 //____________________________________________________________________
182 QString TrackSystemController::toString( const QList<int>& l )
183 {
184  QString s;
185  for(int i : l) {
186  if (!s.isEmpty()) s+=", ";
187  s+=QString::number(i);
188  }
189  return "["+s+"]";
190 }
191 
192 //____________________________________________________________________
196  return;
197  extrapolatorsCreated = true;
198 
199  //Get available extrapolators:
200  QString tooltype("Trk::Extrapolator");
202  availTools->addMonitoredType(tooltype);
203  QStringList existingExtrapolators = availTools->availableTools();
204  delete availTools;
205 
206  VP1ToolAccessHelper toolaccess(sys);
207 #if QTCORE_VERSION >= 0x050E00
208  for (QString key : VP1QtUtils::environmentVariableValue("VP1_JOBCFG_EXTRA_VP1_EXTRAPOLATORS").split(';',Qt::SkipEmptyParts))
209 #else
210  for (QString key : VP1QtUtils::environmentVariableValue("VP1_JOBCFG_EXTRA_VP1_EXTRAPOLATORS").split(';',QString::SkipEmptyParts))
211 #endif
212  {
213  if (existingExtrapolators.contains(key))
214  continue;
215  sys->messageDebug("Attempting creation of fitter with tooltype/key "+key);
216  Trk::IExtrapolator * tool = toolaccess.getToolPointer<Trk::IExtrapolator>(key,false/*silent*/,true/*create if not exists*/);
217  if (!tool) {
218  sys->message("WARNING: Could not create tool type/key "+key);
219  }
220 
221  }
222 }
223 
224 //____________________________________________________________________
227  if (fittersCreated||!sys)
228  return;
229  fittersCreated = true;
230 
231  //Get available extrapolators:
232  QStringList fittertypes;
233  fittertypes << "Trk::KalmanFitter"
234  << "Trk::GlobalChi2Fitter"
235  << "Trk::GaussianSumFilter"
236  << "Trk::DistributedKalmanFilter"
237  << "Trk::DeterministicAnnealingFilter";
239  availTools->addMonitoredTypes(fittertypes);
240  QStringList existingFitters = availTools->availableTools();
241  delete availTools;
242 
243  VP1ToolAccessHelper toolaccess(sys);
244 #if QTCORE_VERSION >= 0x050E00
245  for (QString instance : VP1QtUtils::environmentVariableValue("VP1_JOBCFG_EXTRA_VP1_FITTERS").split(';',Qt::SkipEmptyParts))
246 #else
247  for (QString instance : VP1QtUtils::environmentVariableValue("VP1_JOBCFG_EXTRA_VP1_FITTERS").split(';',QString::SkipEmptyParts))
248 #endif
249  {
250  if (existingFitters.contains(instance))
251  continue;
252  sys->messageDebug("Attempting creation of fitter with tooltype/key "+instance);
253  Trk::ITrackFitter * tool = toolaccess.getToolPointer<Trk::ITrackFitter>(instance,false/*silent*/,true/*create if not exists*/);
254  if (!tool) {
255  sys->message("WARNING: Could not create tool with type/key "+instance);
256  }
257  }
258 }
259 
260 //____________________________________________________________________
262  : VP1Controller(sys,"TrackSystemController"), m_d(new Imp)
263 {
264  m_d->theclass = this;
265  m_d->lastUpdatedAvailableExtrapolators = QStringList("<dummy>");//special.
266  m_d->lastUpdatedAvailableFitters = QStringList("<dummy>");//special.
267 
268  //Stuff with tools waits until ::initTools() is called:
269  m_d->toolaccesshelper = nullptr;
270  m_d->toolhelper_extrapolators = nullptr;
271  m_d->toolhelper_fitters = nullptr;
272  m_d->matmixer = nullptr;
273 
274  m_d->ui.setupUi(this);
276  setupCollWidgetInScrollArea(m_d->ui.collWidgetScrollArea,m_d->trackcollwidget);
277 
278  initDialog(m_d->ui_col, m_d->ui.pushButton_settings_colouring);
279  initDialog(m_d->ui_extrap, m_d->ui.pushButton_settings_extrapolation);
280  initDialog(m_d->ui_int, m_d->ui.pushButton_settings_interactions);
281  initDialog(m_d->ui_proj, m_d->ui.pushButton_settings_projections);
282  initDialog(m_d->ui_cuts, m_d->ui.pushButton_settings_cuts);
283  initDialog(m_d->ui_ascobjs, m_d->ui.pushButton_settings_details);
284  initDialog(m_d->ui_objBrowser, m_d->ui.pushButton_ObjectBrowser);
285 
286  //init:
287  m_d->numberOfSelectedPRDs=1;//anything != 0
289 
290  m_d->initMaterials();
291 
292  m_d->materialFallback = new SoMaterial;
293  m_d->materialFallback->ref();
294 
295  m_d->ui_cuts.etaPhiCutWidget->setSystemBasePointer(systemBase());
296 
297  //Draw Styles / Complexity:
298  m_d->ascObjDrawStyle = new SoDrawStyle;
299  m_d->ascObjDrawStyle->setName("AscObjDrawStyle");
300  m_d->ascObjDrawStyle->ref();
302  connectToLastUpdateSlot(m_d->ui_ascobjs.horizontalSlider_linewidths);
303  connectToLastUpdateSlot(m_d->ui_ascobjs.horizontalSlider_pointsizes);
304 
305  m_d->ascObjComplexity = new SoComplexity;
306  m_d->ascObjComplexity->setName("AscObjComplexity");
307  m_d->ascObjComplexity->ref();
309  connectToLastUpdateSlot(m_d->ui_ascobjs.horizontalSlider_complexity);
310 
311  //Refit ui is dependent on env variable:
312  m_d->ui_int.radioButton_selmode_trackfits->setVisible(VP1QtUtils::environmentVariableIsOn("VP1_DEVEL_ENABLEREFIT"));
313  m_d->ui_int.groupBox_refitting->setEnabled(VP1QtUtils::environmentVariableIsOn("VP1_DEVEL_ENABLEREFIT"));
314  connect(m_d->ui_int.comboBox_fitterMode,SIGNAL(currentIndexChanged(int)),this,SLOT(updateFitPRDButtonState()));
315 
316 
317  //Disable elements based on job configuration:
318 
320  m_d->ui_proj.checkBox_projections_muonchambers->setChecked(false);
321  m_d->ui_proj.checkBox_projections_muonchambers->setEnabled(false);
322  }
326  m_d->ui_proj.checkBox_projections_indet->setChecked(false);
327  m_d->ui_proj.checkBox_projections_indet->setEnabled(false);
328  }
329 
330  //These we init explicitly since we might otherwise trigger a change
331  //before initlastvars (fixme: is this true and the right fix??)
332  m_d->last_propagator = nullptr;
333  m_d->last_trackFitter = nullptr;
334 
336  // Setup connections which monitor changes in the controller so that we may emit signals as appropriate: //
338 
339  // -> shownTrackParts
341  // connectToLastUpdateSlot(m_d->ui_col.checkBox_hideactualpaths);
342  connectToLastUpdateSlot(m_d->ui_proj.checkBox_projections_muonchambers);
343  connectToLastUpdateSlot(m_d->ui_proj.checkBox_projections_indet);
344  connectToLastUpdateSlot(m_d->ui_proj.groupBox_projections_vertex);
345 
347  connectToLastUpdateSlot(m_d->ui_proj.spinBox_projections_vertex);
348 
349 
350  // // -> trackTubeRadius
351  // addUpdateSlot(SLOT(possibleChange_trackTubeRadius()));
352  // connectToLastUpdateSlot(m_d->ui_col.checkBox_trackTubes);
353  // connectToLastUpdateSlot(m_d->ui_col.doubleSpinBox_trackTubesRadiusMM);
354 
355  // -> track labels
357  connectToLastUpdateSlot(m_d->ui_col.checkBox_trkLabels_Pt);
358  connectToLastUpdateSlot(m_d->ui_col.checkBox_trkLabels_p);
359  connectToLastUpdateSlot(m_d->ui_col.checkBox_trkLabels_direction);
360  connectToLastUpdateSlot(m_d->ui_col.checkBox_trkLabels_hits);
361  connectToLastUpdateSlot(m_d->ui_col.checkBox_trkLabels_pid);
362  connectToLastUpdateSlot(m_d->ui_col.checkBox_trkLabels_fitQuality);
363  connectToLastUpdateSlot(m_d->ui_col.groupBox_labels);
364 
366  connectToLastUpdateSlot(m_d->ui_col.horizontalSlider_labels_trkOffset);
367 
369  connectToLastUpdateSlot(m_d->ui_col.horizontalSlider_labels_xOffset);
370  connectToLastUpdateSlot(m_d->ui_col.horizontalSlider_labels_yOffset);
371  connectToLastUpdateSlot(m_d->ui_col.horizontalSlider_labels_zOffset);
372 
373 
374  // -> shownTSOSParts
376  connectToLastUpdateSlot(m_d->ui_ascobjs.groupBox_measurements);
377  connectToLastUpdateSlot(m_d->ui_ascobjs.groupBox_parameters);
378  connectToLastUpdateSlot(m_d->ui_ascobjs.groupBox_errors);
379  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_parametererrors);
380  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_measurementerrors);
381  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_parerror_hideperigeeerrors);
382  connectToLastUpdateSlot(m_d->ui_ascobjs.groupBox_materialeffectsontrack);
383  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_materialeffectsontrack_hideNoDE);
384  connectToLastUpdateSlot(m_d->ui_ascobjs.groupBox_surfaces);
385  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces);
386  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces);
387 
389  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_measurements_drawGP);
390 
391  // -> customColouredTSOSParts
393 
394  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_usecolour_measurements);
395  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_usecolour_meas_outliers);
396  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_usecolour_parameters);
397  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_useHoleColour_parameters);
398  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_usecolour_parametererrors);
399  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_usecolour_materialeffectsontrack);
400  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_usecolour_surfaces);
401 
402  // -> useShortTRTMeasurements
404  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_measurements_shorttubes_trt);
405 
406  // -> useShortMDTMeasurements
408  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_measurements_shorttubes_mdt);
409 
410  // -> useShortMDTMeasurements
412  connectToLastUpdateSlot(m_d->ui_ascobjs.doubleSpinBox_measurements_shorttubes_scale);
413 
414  // -> nStdDevForParamErrors
416  connectToLastUpdateSlot(m_d->ui_ascobjs.doubleSpinBox_parerror_stddev);
417 
418  // -> parTubeErrorsDrawCylinders
420  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_parerror_drawcylinder);
421 
422  // -> numberOfPointsOnCircles
424  connectToLastUpdateSlot(m_d->ui_ascobjs.horizontalSlider_complexity);
425 
426  // -> materialEffectsOnTrackScale
428  connectToLastUpdateSlot(m_d->ui_ascobjs.horizontalSlider_materialeffectsontrack_scale);
429 
430  // -> selectionMode
432  connectToLastUpdateSlot(m_d->ui_int.radioButton_selmode_single);
433  connectToLastUpdateSlot(m_d->ui_int.radioButton_selmode_multitracks);
434  connectToLastUpdateSlot(m_d->ui_int.radioButton_selmode_trackfits);
435 
436  // -> showTruthAscObjs
438  connectToLastUpdateSlot(m_d->ui_ascobjs.checkBox_truthtracks_display_points);
439 
440  // -> assocObjDetailLevel
442  connectToLastUpdateSlot(m_d->ui_ascobjs.comboBox_assocobj_detaillevel);
443 
444  // -> cutAllowedP/Pt
446  connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_minpt);
447  connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_maxpt);
448  connectToLastUpdateSlot(m_d->ui_cuts.doubleSpinBox_cut_minpt_gev);
449  connectToLastUpdateSlot(m_d->ui_cuts.doubleSpinBox_cut_maxpt_gev);
450  connectToLastUpdateSlot(m_d->ui_cuts.comboBox_momtype);
451 
452  // -> cutAllowedEta
454  connectToLastUpdateSlot(m_d->ui_cuts.etaPhiCutWidget,SIGNAL(allowedEtaChanged(const VP1Interval&)));
455 
456  // -> cutAllowedPhi
458  connectToLastUpdateSlot(m_d->ui_cuts.etaPhiCutWidget,SIGNAL(allowedPhiChanged(const QList<VP1Interval>&)));
459 
460  // -> cutRequiredNHits();
462  connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_nhits_pixel);
463  connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_nhits_sct);
464  connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_nhits_trt);
465  connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_nhits_muon);
466  connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_nprecisionhits_muon);
467  connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_nhits_pixel);
468  connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_nhits_sct);
469  connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_nhits_trt);
470  connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_nhits_muon);
471  connectToLastUpdateSlot(m_d->ui_cuts.spinBox_cut_nprecisionhits_muon);
472 
473 // Required detector element
474  connect(m_d->ui_cuts.checkBox_requireDetectorElement,SIGNAL(toggled(bool)),this,SLOT(possibleChange_cutRequiredDetectorElement()));
475  connect(m_d->ui_cuts.lineEdit_detectorElementId,SIGNAL(textChanged(QString)),this,SLOT(possibleChange_cutRequiredDetectorElement()));
476 
477  // -> cutTruthFromIROnly
479  connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_truthtracks_creationvertexinIR);
480 
481  // -> cutExcludeBarcodeZero
483  connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_truthtracks_excludebarcode0);
484 
485  // -> cutTruthExcludeNeutrals
487  connectToLastUpdateSlot(m_d->ui_cuts.checkBox_cut_truthtracks_excludeneutrals);
488 
489  // -> cutOnlyVertexAssocTracks
491  connectToLastUpdateSlot(m_d->ui_cuts.checkBox_vertexAssociated);
492 
493  // -> showTotMomentumOnMultiTrackSelection
495  connectToLastUpdateSlot(m_d->ui_int.checkBox_sel_showtotmom);
496 
497  // Special: -> rerandomise
498  connect(m_d->ui_col.pushButton_colourbyrandom_rerandomise,SIGNAL(clicked()),this,SLOT(emitRerandomise()));
499 
500  // Special: -> refit
501  connect(m_d->ui_int.pushButton_refit,SIGNAL(clicked()),this,SLOT(emitRefit()));
502 
503  // TrackObjBrowser
504  messageVerbose("Enabling object browser");
505  m_d->objBrowserWidget = m_d->ui_objBrowser.treeWidget;
506  m_d->objBrowserWidget->setSortingEnabled(false);
507  QStringList l;
508  l<<"Object"<<"Information";
509  m_d->objBrowserWidget->setHeaderLabels(l);
510  connect(m_d->objBrowserWidget,SIGNAL(itemClicked(QTreeWidgetItem *, int)),this,SLOT(objectBrowserClicked(QTreeWidgetItem *, int)));
511 
512  // Special alignment tests
513  if (VP1QtUtils::environmentVariableIsOn("VP1_TRKSYS_SHIFTCHAMBERS")) {
514  messageVerbose("Enabling shifting of Muon Chambers");
515  QWidget *widget = new QWidget;
516  m_d->ui_shiftmuonchambers.setupUi(widget);
517  messageVerbose("Making connection");
518  widget->show();
519  connect(m_d->ui_shiftmuonchambers.pushButton_Update,SIGNAL(clicked()),sys,SLOT(updateAlignment()));
520  }
521 
522  // we want "Print information" on single track selection turned ON by default
523  m_d->ui_int.checkBox_selsingle_printinfo->setChecked(true);
524 
525  // Since TrkVolumesSvc isn't working anymore, hardcode values. (Remove when we move to new extrapolator)
526  m_d->calorimeterEntryLayer = new Trk::Volume(nullptr, new Trk::CylinderVolumeBounds(1100.0, 3200.0));
527  m_d->muonSpectrometerEntryLayer = new Trk::Volume(nullptr, new Trk::CylinderVolumeBounds(4250.0, 6779.0));
528  m_d->muonSpectrometerExitLayer = new Trk::Volume(nullptr, new Trk::CylinderVolumeBounds(15000.0, 21000.0)); // FIXME! Put in correct values. EJWM
529  initLastVars();
530 }
531 
532 //____________________________________________________________________
534 {
536 
539 
540  //Ensure special VP1 extrapolator and fitters are created:
543 
544  messageVerbose("Setting up tool helper to monitor extrapolators - start");
546  //Watch for extrapolators (and Fatras extrapolators are no-go!)
547  m_d->toolhelper_extrapolators->addMonitoredType("Trk::Extrapolator",(QStringList() << "*Fatras*"));
548  connect(m_d->toolhelper_extrapolators,SIGNAL(availableToolsChanged(const QStringList&)),
549  this,SLOT(availableExtrapolatorsChanged(const QStringList&)));
551  messageVerbose("Setting up tool helper to monitor extrapolators - end");
552 
553  messageVerbose("Setting up tool helper to monitor fitters - start");
555  QStringList fittertypes;
556  fittertypes << "Trk::KalmanFitter"
557  << "Trk::GlobalChi2Fitter"
558  << "Trk::GaussianSumFilter"
559  << "Trk::DistributedKalmanFilter"
560  << "Trk::DeterministicAnnealingFilter";
562  connect(m_d->toolhelper_fitters,SIGNAL(availableToolsChanged(const QStringList&)),
563  this,SLOT(availableFittersChanged(const QStringList&)));
565  messageVerbose("Setting up tool helper to monitor fitters - end");
566  } else {
567  m_d->toolhelper_extrapolators = nullptr;
568  m_d->toolhelper_fitters = nullptr;
569  m_d->ui_extrap.comboBox_propagator->clear();
570  m_d->ui_extrap.comboBox_propagator->addItem(Imp::noneAvailString);
571  m_d->ui_extrap.comboBox_propagator->setEnabled(false);
572  m_d->ui_extrap.radioButton_athenaExtrapolator->setEnabled(false);
573  m_d->ui_extrap.radioButton_none->setChecked(true);
574  m_d->ui_int.comboBox_fitters->clear();
575  m_d->ui_int.comboBox_fitters->addItem(Imp::noneAvailString);
576  m_d->ui_int.comboBox_fitters->setEnabled(false);
577  //FIXME: Disable radioButton_selmode_trackfits, comboBox_fitters, lineEdit_fittedTrackCollName, pushButton_refit
578  }
579 
580  // -> propagator
581  //
583  connectToLastUpdateSlot(m_d->ui_extrap.radioButton_none);
584  connectToLastUpdateSlot(m_d->ui_extrap.radioButton_athenaExtrapolator);
585  connectToLastUpdateSlot(m_d->ui_extrap.comboBox_propagator);
586 
588  connectToLastUpdateSlot(m_d->ui_extrap.checkBox_ignoreMEoT);
589  connectToLastUpdateSlot(m_d->ui_extrap.checkBox_extendAllInDetTracks);
590  // connectToLastUpdateSlot(m_d->ui_extrap.comboBox_extendAllInDetTracksToHere);
592  if (m_d->ui_extrap.checkBox_ignoreMEoT->isChecked()) m_d->last_propagationOptions |= TrackSystemController::IgnoreMEOT;
593  if (m_d->ui_extrap.checkBox_extendAllInDetTracks->isChecked()) m_d->last_propagationOptions |= TrackSystemController::ExtendTrack;
594 
596  connectToLastUpdateSlot(m_d->ui_extrap.checkBox_maxRadius);
597  connectToLastUpdateSlot(m_d->ui_extrap.spinBox_maxRadiusValue);
598 
599  connect(m_d->ui_extrap.comboBox_extendAllInDetTracksToHere, SIGNAL(currentIndexChanged(int)),this, SLOT(emitExtrapolateToHereChanged(int)));
600  // -> trackFitter
602  //(Nothing connects directly to this slot)
603 
604  //could also use testForChanges() here:
607 }
608 
609 //____________________________________________________________________
610 SoMaterial * TrackSystemController::Imp::createMaterial(const int& r,const int& g,const int& b)
611 {
612  return VP1MaterialButton::createMaterial(r/255.0,g/255.0,b/255.0,0.2/*brightness*/);
613 }
614 
615 //____________________________________________________________________
616 
618 {
619  //By PID => Electrons and muons:.
620  ui_col.matButton_electrons->setMaterial(createMaterial(255,0,0)); //red; //(205,103,255));//purple
621  ui_col.matButton_muons->setMaterial(createMaterial(71,255,51));//green
622 
623  //By PID => Charged: bluish colours
624  ui_col.matButton_pions->setMaterial(createMaterial(74,146,255));
625  ui_col.matButton_protons->setMaterial(createMaterial(56,49,255));
626  ui_col.matButton_chargedkaons->setMaterial(createMaterial(116,255,228));
627  ui_col.matButton_othercharged->setMaterial(createMaterial(142,163,255));
628 
629  //By PID => Neutral yellowish colours.
630  ui_col.matButton_neutrons->setMaterial(createMaterial(245,255,42));
631  ui_col.matButton_photons->setMaterial(createMaterial(255,227,82));
632  ui_col.matButton_neutrinos->setMaterial(createMaterial(255,152,61));
633  ui_col.matButton_otherneutrals->setMaterial(createMaterial(248,255,102));
634 
635  //By charge:
636  ui_col.matButton_charge_pos->setMaterial(createMaterial(255,71,10));
637  ui_col.matButton_charge_neg->setMaterial(createMaterial(116,255,10));
638  ui_col.matButton_charge_neutral->setMaterial(createMaterial(255,227,82));
639 
640  //By momentum:
641  ui_col.matButton_0GeV->setMaterial(createMaterial(0,50,0));
642  ui_col.matButton_15GeV->setMaterial(createMaterial(0,255,0));
643 
644  //Associated objects:
645  ui_ascobjs.matButton_measurements->setMaterial(createMaterial(55,200,55));
646  ui_ascobjs.matButton_meas_outliers->setMaterial(createMaterial(155,155,155));
647  ui_ascobjs.matButton_parameters->setMaterial(createMaterial(100,150,200));
648  ui_ascobjs.matButton_holeParameters->setMaterial(createMaterial(100,100,100));
649  ui_ascobjs.matButton_parerrors->setMaterial(createMaterial(255,100,0));
650  SoMaterial * materialeffectsontrackMat = createMaterial(200,255,75);
651  materialeffectsontrackMat->transparency=0.5;
652  ui_ascobjs.matButton_materialeffectsontrack->setMaterial(materialeffectsontrackMat);
653  ui_ascobjs.matButton_surfaces->setMaterial(createMaterial(228,210,165));
654 }
655 
656 //____________________________________________________________________
658 {
659  messageVerbose("~TrackSystemController begin");
660  delete m_d->toolaccesshelper;
661  delete m_d->matmixer;
662  m_d->materialFallback->unref();
663  // m_d->trackDrawStyle->unref();
664  // m_d->trackLightModel->unref();
665  m_d->ascObjDrawStyle->unref();
666  m_d->ascObjComplexity->unref();
667 
668  delete m_d->calorimeterEntryLayer ;
671 
672  // delete m_d->objBrowserWidget;
673  delete m_d;
674  messageVerbose("~TrackSystemController end");
675 }
676 
677 //____________________________________________________________________
679 {
680  return 17;
681 }
682 
683 //____________________________________________________________________
685 {
686  messageVerbose("TrackSystemController::actualSaveSettings()");
687 
688  /*
689  * NOTE!!! Important, about serialization:
690  *
691  * - order has to be the same between saving-reading
692  *
693  * See: http://www.mimec.org/node/348
694  *
695  */
696 
697  messageDebug("Serialize - current version: "+QString::number( s.version() ));
698 
699  // saving a string, which will be checked while restoring the values
700  s.save(QString("TrackSystemSettings"));
701 
702  //versions <= 3 saved an integer here
703 
704  //Display options: linewidth:
705  // s.save(VP1QtInventorUtils::getValueLineWidthSlider(m_d->ui_col.horizontalSlider_trackWidth));//Version 1+ GONE WITH VERSION 17
706  // s.widgetHandled(m_d->ui_col.horizontalSlider_trackWidth);
707 
708  //Tracks base light model:
709  // s.save(m_d->ui_col.checkBox_tracksUseBaseLightModel);//version 4+ GONE WITH VERSION 17
710 
711  // --- Projections options ---
712  s.save(QString("Projections options"));
713  s.save(m_d->ui_proj.checkBox_projections_indet);
714  s.save(m_d->ui_proj.checkBox_projections_muonchambers);
715  s.save(m_d->ui_proj.groupBox_projections_vertex); //v15
716  s.save(m_d->ui_proj.spinBox_projections_vertex);//v15
717  s.save(m_d->ui_proj.horizontalSlider_projections_vertex);//v15
718  // s.save(m_d->ui_col.checkBox_hideactualpaths); GONE WITH VERSION 17
719  // ---------------------------
720 
721 
722  //Display options - track tubes
723  // s.save(m_d->ui_col.checkBox_trackTubes);//version 8+ GONE WITH VERSION 17
724  // s.save(m_d->ui_col.doubleSpinBox_trackTubesRadiusMM);//version 8+ GONE WITH VERSION 17
725 
726  //Version <= 3 had bool here
727 
728 
729  // ----- Propagation options -----
730  s.save(QString("Propagation options"));
731  s.save(m_d->ui_extrap.radioButton_none,
732  m_d->ui_extrap.radioButton_helical,
733  m_d->ui_extrap.radioButton_athenaExtrapolator);//version 4+
734  s.save(m_d->ui_extrap.comboBox_propagator);//NB: We restore this in a slightly special way
735  // -----------------------------------
736 
737 
738 
739 
740  // ----- Interactions options -----
741  s.save(QString("Interactions options"));
742  s.save(m_d->ui_int.lineEdit_fittedTrackCollName);//version 6+
743  s.save(m_d->ui_int.comboBox_fitters);//version 6+
744  // -----------------------------------
745 
746 
747 
748  //Version <=2 had bool here
749 
750  //version 0 output an integer followed by two bools here
751 
752  //Display options - Trk::Tracks
753  //Version <=2 had bool here
754  s.save(m_d->ui_ascobjs.comboBox_assocobj_detaillevel);
755  //Version <=2 had two bool here
756 
757  //Display options - Truth tracks:
758  s.save(m_d->ui_ascobjs.checkBox_truthtracks_display_points);
759 
760  // --- Display options - Colours ---
761  s.save(QString("Colour options"));
762  //Display options - Colour by pdg:
763  s.save(m_d->ui_col.matButton_electrons);
764  s.save(m_d->ui_col.matButton_muons);
765  s.save(m_d->ui_col.matButton_pions);
766  s.save(m_d->ui_col.matButton_protons);
767  s.save(m_d->ui_col.matButton_chargedkaons);
768  s.save(m_d->ui_col.matButton_othercharged);
769  s.save(m_d->ui_col.matButton_neutrons);
770  s.save(m_d->ui_col.matButton_photons);
771  s.save(m_d->ui_col.matButton_neutrinos);
772  s.save(m_d->ui_col.matButton_otherneutrals);
773 
774  //Display options - Colour by charge:
775  s.save(m_d->ui_col.matButton_charge_neg);//version 2+
776  s.save(m_d->ui_col.matButton_charge_pos);//version 2+
777  s.save(m_d->ui_col.matButton_charge_neutral);//version 2+
778 
779  //Display options - Colour by momentum:
780  s.save(m_d->ui_col.matButton_0GeV);//version 2+
781  s.save(m_d->ui_col.matButton_15GeV);//version 2+
782  // -----------------------------------
783 
784 
785 
786 
787 
788 
789 
790 
791  // --- Cuts options ---
792  s.save(QString("Cuts options"));
793  //Cuts - general:
794  s.save(m_d->ui_cuts.checkBox_cut_minpt);
795  s.save(m_d->ui_cuts.doubleSpinBox_cut_minpt_gev);
796  s.save(m_d->ui_cuts.checkBox_cut_maxpt);
797  s.save(m_d->ui_cuts.doubleSpinBox_cut_maxpt_gev);
798  s.save(m_d->ui_cuts.comboBox_momtype);// version 10+
799 
800  s.save(m_d->ui_cuts.etaPhiCutWidget);//Version 7+
801  //Versions <=6 had 2*bool, 2*double, 1*bool, 1*obsoletephisectionstate here.
802 
803  //Cuts - number of hits:
804  s.save(m_d->ui_cuts.checkBox_cut_nhits_pixel);//Version 9+
805  s.save(m_d->ui_cuts.checkBox_cut_nhits_sct);//Version 9+
806  s.save(m_d->ui_cuts.checkBox_cut_nhits_trt);//Version 9+
807  s.save(m_d->ui_cuts.checkBox_cut_nhits_muon);//Version 9+
808  s.save(m_d->ui_cuts.spinBox_cut_nhits_pixel);//Version 9+
809  s.save(m_d->ui_cuts.spinBox_cut_nhits_sct);//Version 9+
810  s.save(m_d->ui_cuts.spinBox_cut_nhits_trt);//Version 9+
811  s.save(m_d->ui_cuts.spinBox_cut_nhits_muon);//Version 9+
812 
813  //Cuts - truth:
814  s.save(m_d->ui_cuts.checkBox_cut_truthtracks_creationvertexinIR);
815  s.save(m_d->ui_cuts.checkBox_cut_truthtracks_excludeneutrals);
816  s.save(m_d->ui_cuts.checkBox_cut_truthtracks_excludebarcode0);
817 
818  s.save(m_d->ui_cuts.checkBox_vertexAssociated);//Version 14+
819  // -----------------------------------
820 
821 
822 
823 
824 
825 
826  // --- Interactions options ---
827  s.save(QString("Interactions options"));
828  //Interactions - selection mode:
829  s.save(m_d->ui_int.radioButton_selmode_single,
830  m_d->ui_int.radioButton_selmode_multitracks,
831  m_d->ui_int.radioButton_selmode_trackfits);
832 
833  s.save(m_d->ui_int.checkBox_selsingle_printinfo);
834  s.save(m_d->ui_int.checkBox_selsingle_printinfo_verbose);
835  s.save(m_d->ui_int.checkBox_selsingle_orientzoom);
836  s.save(m_d->ui_int.checkBox_sel_printtotmom);
837  s.save(m_d->ui_int.checkBox_sel_showtotmom);
838  s.save(m_d->ui_int.comboBox_fitterMode); // Version 12+
839  s.save(m_d->ui_int.checkBox_removeOutliers);// Version 12+
840  s.save(m_d->ui_int.comboBox_particleHypo);// Version 12+
841  // -----------------------------------
842 
843 
844 
845 
846  // --- AscObjs options ---
847  s.save(QString("AscObjs options"));
848  //AscObjs - TSOS:
849  s.save(m_d->ui_ascobjs.checkBox_materialeffectsontrack_forceposontrack);
850  s.save(m_d->ui_ascobjs.checkBox_materialeffectsontrack_hideNoDE);
851  s.save(m_d->ui_ascobjs.checkBox_measurements_shorttubes_mdt);
852  s.save(m_d->ui_ascobjs.checkBox_measurements_shorttubes_trt);
853  s.save(m_d->ui_ascobjs.checkBox_measurements_drawGP); // Version 11
854  s.save(m_d->ui_ascobjs.checkBox_parerror_drawcylinder);
855  s.save(m_d->ui_ascobjs.checkBox_parerror_hideperigeeerrors);
856  s.save(m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces);
857  s.save(m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces); // Version 11
858  s.save(m_d->ui_ascobjs.checkBox_usecolour_materialeffectsontrack);
859  s.save(m_d->ui_ascobjs.checkBox_usecolour_meas_outliers);
860  s.save(m_d->ui_ascobjs.checkBox_usecolour_measurements);
861  s.save(m_d->ui_ascobjs.checkBox_usecolour_parametererrors);
862  s.save(m_d->ui_ascobjs.checkBox_usecolour_parameters);
863  s.save(m_d->ui_ascobjs.checkBox_useHoleColour_parameters);// Version 14
864  s.save(m_d->ui_ascobjs.checkBox_usecolour_surfaces);
865 
866  s.save(m_d->ui_ascobjs.doubleSpinBox_parerror_stddev);
867  s.save(m_d->ui_ascobjs.groupBox_materialeffectsontrack);
868  s.save(m_d->ui_ascobjs.groupBox_measurements);
869  s.save(m_d->ui_ascobjs.groupBox_errors);// Version 13
870  s.save(m_d->ui_ascobjs.checkBox_parametererrors);// Version 13
871  s.save(m_d->ui_ascobjs.checkBox_measurementerrors);// Version 13
872  s.save(m_d->ui_ascobjs.groupBox_parameters);
873  s.save(m_d->ui_ascobjs.groupBox_surfaces);
874  s.save(m_d->ui_ascobjs.horizontalSlider_complexity);
875  s.save(m_d->ui_ascobjs.horizontalSlider_linewidths);//FIXME!!! SAVE AS ABOVE INSTEAD!!
876  s.save(m_d->ui_ascobjs.horizontalSlider_materialeffectsontrack_scale);
877  s.save(m_d->ui_ascobjs.horizontalSlider_pointsizes);//FIXME!!! SAVE AS ABOVE INSTEAD!!
878  s.save(m_d->ui_ascobjs.matButton_materialeffectsontrack);
879  s.save(m_d->ui_ascobjs.matButton_meas_outliers);
880  s.save(m_d->ui_ascobjs.matButton_measurements);
881  s.save(m_d->ui_ascobjs.matButton_parameters);
882  s.save(m_d->ui_ascobjs.matButton_holeParameters);// Version 14
883  s.save(m_d->ui_ascobjs.matButton_parerrors);
884  s.save(m_d->ui_ascobjs.matButton_surfaces);
885  s.save(m_d->ui_ascobjs.doubleSpinBox_measurements_shorttubes_scale);//Version 5+
886  // -----------------------------------
887 
888 
889 
890 
891  // ----- Colouring options -----
892  s.save(QString("Colouring options"));
893  // Version 12
894  s.save(m_d->ui_col.groupBox_labels);
895  s.save(m_d->ui_col.horizontalSlider_labels_trkOffset);
896  s.save(m_d->ui_col.horizontalSlider_labels_xOffset);
897  s.save(m_d->ui_col.horizontalSlider_labels_yOffset);
898  s.save(m_d->ui_col.horizontalSlider_labels_zOffset);
899  s.save(m_d->ui_col.checkBox_trkLabels_p);
900  s.save(m_d->ui_col.checkBox_trkLabels_Pt);
901  s.save(m_d->ui_col.checkBox_trkLabels_pid);
902  s.save(m_d->ui_col.checkBox_trkLabels_hits);
903  s.save(m_d->ui_col.checkBox_trkLabels_fitQuality);
904  s.save(m_d->ui_col.checkBox_trkLabels_direction);
905  // --------------------------
906 
907 
908 
909 
910 
911 
912  // ----- Extrap options -----
913  s.save(QString("Extrapolator options"));
914  s.save(m_d->ui_extrap.checkBox_ignoreMEoT); // Version 14
915  s.save(m_d->ui_extrap.checkBox_extendAllInDetTracks);
916  s.save(m_d->ui_extrap.comboBox_extendAllInDetTracksToHere);
917  s.save(m_d->ui_extrap.horizontalSlider_granularity);
918  s.save(m_d->ui_extrap.checkBox_maxRadius); // Version 15
919  s.save(m_d->ui_extrap.spinBox_maxRadiusValue);
920  // --------------------------
921 
922 
923  messageVerbose("TrackSystemController::actualSaveSettings() - DONE.");
924 
925 }
926 
927 //____________________________________________________________________
929 {
930  messageDebug("TrackSystemController::actualRestoreSettings()");
931 
932  /*
933  * NOTE!!! Important, about serialization:
934  *
935  * - order has to be the same between saving-reading
936  *
937  * See: http://www.mimec.org/node/348
938  *
939  */
940 
941  messageDebug("Deserialize - current version: "+QString::number( s.version() ));
942 
943  if (s.version()<0||s.version()>currentSettingsVersion()) {
944  message("Warning: State data in .vp1 file has unsupported version ("+str(s.version())+")");
945  return;
946  }
947 
948  if (s.version()<17) {
949  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.");
950  }
951 
952  if (s.version()<17) {
953  s.ignoreString();
954  } else {
955  QString tt = s.restoreString();
956  messageDebug("Check string: " + tt);
957  if (tt != "TrackSystemSettings") {
958  messageDebug("\n\nERROR!! Settings order does not match!!");
959  return;
960  }
961  }
962 
963  if (s.version()<=3)
964  s.ignoreInt();
965 
966  // //Display options: linewidth:
967  // if (s.version()>=1) {
968  // VP1QtInventorUtils::setValueLineWidthSlider(m_d->ui_col.horizontalSlider_trackWidth,s.restoreDouble());
969  // s.widgetHandled(m_d->ui_col.horizontalSlider_trackWidth);
970  // }
971  if (s.version()<17)
972  s.ignoreInt(); //m_d->ui_col.horizontalSlider_trackWidth
973 
974  //Tracks base light model:
975  // if (s.version()>=4)
976  // s.restore(m_d->ui_col.checkBox_tracksUseBaseLightModel);
977  if (s.version()<17)
978  s.ignoreBool(); //m_d->ui_col.checkBox_tracksUseBaseLightModel
979 
980 
981 
982 
983 
984  // --- Projections options ---
985  if (s.version()>=17 && s.restoreString() != "Projections options") messageDebug("\n\nERROR! --> 'Projections options'");
986  s.restore(m_d->ui_proj.checkBox_projections_indet);
987  s.restore(m_d->ui_proj.checkBox_projections_muonchambers);
988  if (s.version()>=15){
989  s.restore(m_d->ui_proj.groupBox_projections_vertex);
990  s.restore(m_d->ui_proj.spinBox_projections_vertex);
991  s.restore(m_d->ui_proj.horizontalSlider_projections_vertex);
992  }
993  // s.restore(m_d->ui_col.checkBox_hideactualpaths);
994  if (s.version()<17)
995  s.ignoreBool(); //m_d->ui_col.checkBox_hideactualpaths
996  // --------------------------------------
997 
998 
999 
1000 
1001  //Display options - track tubes
1002  // if (s.version()>=8) {
1003  // s.restore(m_d->ui_col.checkBox_trackTubes);
1004  // s.restore(m_d->ui_col.doubleSpinBox_trackTubesRadiusMM);
1005  // }
1006  if (s.version()<17){
1007  s.ignoreBool(); //m_d->ui_col.checkBox_trackTubes
1008  s.ignoreDouble(); //m_d->ui_col.doubleSpinBox_trackTubesRadiusMM
1009  }
1010 
1011  if (s.version()<=3)
1012  s.ignoreBool();
1013 
1014 
1015 
1016 
1017  // ----- Propagation options -----
1018  if (s.version()>=17 && s.restoreString() != "Propagation options") messageDebug("\n\nERROR! --> 'Propagation options'");
1019  if (s.version()>=4)
1020  s.restore(m_d->ui_extrap.radioButton_none,
1021  m_d->ui_extrap.radioButton_helical,
1022  m_d->ui_extrap.radioButton_athenaExtrapolator);
1023  m_d->restoredLastPropagator = s.restoreString();
1024  s.widgetHandled(m_d->ui_extrap.comboBox_propagator);
1025  // -----------------------------------
1026 
1027 
1028 
1029 
1030  // ----- Interactions options -----
1031  if (s.version()>=17 && s.restoreString() != "Interactions options") messageDebug("\n\nERROR! --> 'Interactions options'");
1032  if (s.version()>=6) {
1033  s.restore(m_d->ui_int.lineEdit_fittedTrackCollName);
1034  m_d->restoredLastFitter = s.restoreString();
1035  s.widgetHandled(m_d->ui_int.comboBox_fitters);
1036  }
1037  // -----------------------------------
1038 
1039 
1040 
1041 
1042  if (s.version()<=2)
1043  s.ignoreBool();
1044 
1045  if (s.version()==0) {
1046  s.ignoreInt();
1047  s.ignoreBool();
1048  s.ignoreBool();
1049  }
1050 
1051  //Display options - Trk::Tracks
1052  if (s.version()<=2)
1053  s.ignoreBool();
1054  s.restore(m_d->ui_ascobjs.comboBox_assocobj_detaillevel);
1055  if (s.version()<=2) {
1056  s.ignoreBool();
1057  s.ignoreBool();
1058  }
1059 
1060  //Display options - Truth tracks:
1061  s.restore(m_d->ui_ascobjs.checkBox_truthtracks_display_points);
1062 
1063 
1064  // --- Display options - Colours ---
1065  if (s.version()>=17 && s.restoreString() != "Colour options") messageDebug("\n\nERROR! --> 'Colour options'");
1066  //Display options - Colour by pdg:
1067  s.restore(m_d->ui_col.matButton_electrons);
1068  s.restore(m_d->ui_col.matButton_muons);
1069  s.restore(m_d->ui_col.matButton_pions);
1070  s.restore(m_d->ui_col.matButton_protons);
1071  s.restore(m_d->ui_col.matButton_chargedkaons);
1072  s.restore(m_d->ui_col.matButton_othercharged);
1073  s.restore(m_d->ui_col.matButton_neutrons);
1074  s.restore(m_d->ui_col.matButton_photons);
1075  s.restore(m_d->ui_col.matButton_neutrinos);
1076  s.restore(m_d->ui_col.matButton_otherneutrals);
1077  if (s.version()>=2) {
1078  //Display options - Colour by charge:
1079  s.restore(m_d->ui_col.matButton_charge_neg);
1080  s.restore(m_d->ui_col.matButton_charge_pos);
1081  s.restore(m_d->ui_col.matButton_charge_neutral);
1082 
1083  //Display options - Colour by momentum:
1084  s.restore(m_d->ui_col.matButton_0GeV);
1085  s.restore(m_d->ui_col.matButton_15GeV);
1086  }
1087  // -----------------------------------
1088 
1089 
1090 
1091 
1092 
1093  // --- Cuts options ---
1094  if (s.version()>=17 && s.restoreString() != "Cuts options") messageDebug("\n\nERROR! --> 'Cuts options'");
1095  //Cuts - general:
1096  s.restore(m_d->ui_cuts.checkBox_cut_minpt);
1097  s.restore(m_d->ui_cuts.doubleSpinBox_cut_minpt_gev);
1098  s.restore(m_d->ui_cuts.checkBox_cut_maxpt);
1099  s.restore(m_d->ui_cuts.doubleSpinBox_cut_maxpt_gev);
1100 
1101  if (s.version()>=10) {
1102  s.restore(m_d->ui_cuts.comboBox_momtype);
1103  }
1104 
1105  if (s.version()>=7) {
1106  s.restore(m_d->ui_cuts.etaPhiCutWidget);
1107  } else {
1108  s.ignoreBool();
1109  s.ignoreBool();
1110  s.ignoreDouble();
1111  s.ignoreDouble();
1112  s.ignoreBool();
1113  s.ignoreObsoletePhiSectionWidgetState();
1114  }
1115 
1116  if (s.version()>=9) {
1117  s.restore(m_d->ui_cuts.checkBox_cut_nhits_pixel);
1118  s.restore(m_d->ui_cuts.checkBox_cut_nhits_sct);
1119  s.restore(m_d->ui_cuts.checkBox_cut_nhits_trt);
1120  s.restore(m_d->ui_cuts.checkBox_cut_nhits_muon);
1121  s.restore(m_d->ui_cuts.spinBox_cut_nhits_pixel);
1122  s.restore(m_d->ui_cuts.spinBox_cut_nhits_sct);
1123  s.restore(m_d->ui_cuts.spinBox_cut_nhits_trt);
1124  s.restore(m_d->ui_cuts.spinBox_cut_nhits_muon);
1125  }
1126 
1127  //Cuts - truth:
1128  s.restore(m_d->ui_cuts.checkBox_cut_truthtracks_creationvertexinIR);
1129  s.restore(m_d->ui_cuts.checkBox_cut_truthtracks_excludeneutrals);
1130  s.restore(m_d->ui_cuts.checkBox_cut_truthtracks_excludebarcode0);
1131 
1132  if (s.version()>=14) s.restore(m_d->ui_cuts.checkBox_vertexAssociated);
1133  // -----------------------------------
1134 
1135 
1136 
1137 
1138 
1139  // --- Interactions options ---
1140  if (s.version()>=17 && s.restoreString() != "Interactions options") messageDebug("\n\nERROR! --> 'Interactions options'");
1141  //Interactions - selection mode:
1142  s.restore(m_d->ui_int.radioButton_selmode_single,
1143  m_d->ui_int.radioButton_selmode_multitracks,
1144  m_d->ui_int.radioButton_selmode_trackfits);
1145 
1146  s.restore(m_d->ui_int.checkBox_selsingle_printinfo);
1147  s.restore(m_d->ui_int.checkBox_selsingle_printinfo_verbose);
1148  s.restore(m_d->ui_int.checkBox_selsingle_orientzoom);
1149  s.restore(m_d->ui_int.checkBox_sel_printtotmom);
1150  s.restore(m_d->ui_int.checkBox_sel_showtotmom);
1151  if (s.version()>=12){
1152  s.restore(m_d->ui_int.comboBox_fitterMode);
1153  s.restore(m_d->ui_int.checkBox_removeOutliers);
1154  s.restore(m_d->ui_int.comboBox_particleHypo);
1155  }
1156  // -----------------------------------
1157 
1158 
1159 
1160 
1161 
1162 
1163 
1164  // --- AscObjs options ---
1165  if (s.version()>=17 && s.restoreString() != "AscObjs options") messageDebug("\n\nERROR! --> 'AscObjs options'");
1166  //AscObjs - TSOS:
1167  s.restore(m_d->ui_ascobjs.checkBox_materialeffectsontrack_forceposontrack);
1168  s.restore(m_d->ui_ascobjs.checkBox_materialeffectsontrack_hideNoDE);
1169  s.restore(m_d->ui_ascobjs.checkBox_measurements_shorttubes_mdt);
1170  s.restore(m_d->ui_ascobjs.checkBox_measurements_shorttubes_trt);
1171  if (s.version()>=11) s.restore(m_d->ui_ascobjs.checkBox_measurements_drawGP);
1172  s.restore(m_d->ui_ascobjs.checkBox_parerror_drawcylinder);
1173  s.restore(m_d->ui_ascobjs.checkBox_parerror_hideperigeeerrors);
1174  s.restore(m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces);
1175  if (s.version()>=11) s.restore(m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces);
1176  s.restore(m_d->ui_ascobjs.checkBox_usecolour_materialeffectsontrack);
1177  s.restore(m_d->ui_ascobjs.checkBox_usecolour_meas_outliers);
1178  s.restore(m_d->ui_ascobjs.checkBox_usecolour_measurements);
1179  if (s.version()<12) s.restore(m_d->ui_ascobjs.checkBox_parametererrors); // was groupBox_parametererrors before...
1180  s.restore(m_d->ui_ascobjs.checkBox_usecolour_parametererrors);
1181  s.restore(m_d->ui_ascobjs.checkBox_usecolour_parameters);
1182  if (s.version()>=14)
1183  s.restore(m_d->ui_ascobjs.checkBox_useHoleColour_parameters);
1184  s.restore(m_d->ui_ascobjs.checkBox_usecolour_surfaces);
1185  s.restore(m_d->ui_ascobjs.doubleSpinBox_parerror_stddev);
1186  s.restore(m_d->ui_ascobjs.groupBox_materialeffectsontrack);
1187  s.restore(m_d->ui_ascobjs.groupBox_measurements);
1188  if (s.version()>=12) {
1189  s.restore(m_d->ui_ascobjs.groupBox_errors);
1190  s.restore(m_d->ui_ascobjs.checkBox_parametererrors);
1191  s.restore(m_d->ui_ascobjs.checkBox_measurementerrors);
1192  }
1193  s.restore(m_d->ui_ascobjs.groupBox_parameters);
1194  s.restore(m_d->ui_ascobjs.groupBox_surfaces);
1195  s.restore(m_d->ui_ascobjs.horizontalSlider_complexity);
1196  s.restore(m_d->ui_ascobjs.horizontalSlider_linewidths);//FIXME!!! SAVE AS ABOVE INSTEAD!!
1197  s.restore(m_d->ui_ascobjs.horizontalSlider_materialeffectsontrack_scale);
1198  s.restore(m_d->ui_ascobjs.horizontalSlider_pointsizes);//FIXME!!! SAVE AS ABOVE INSTEAD!!
1199  s.restore(m_d->ui_ascobjs.matButton_materialeffectsontrack);
1200  s.restore(m_d->ui_ascobjs.matButton_meas_outliers);
1201  s.restore(m_d->ui_ascobjs.matButton_measurements);
1202  s.restore(m_d->ui_ascobjs.matButton_parameters);
1203  if (s.version()>=14)
1204  s.restore(m_d->ui_ascobjs.matButton_holeParameters);
1205  s.restore(m_d->ui_ascobjs.matButton_parerrors);
1206  s.restore(m_d->ui_ascobjs.matButton_surfaces);
1207  if (s.version()>=5)
1208  s.restore(m_d->ui_ascobjs.doubleSpinBox_measurements_shorttubes_scale);
1209  // -----------------------------------
1210 
1211 
1212 
1213 
1214 
1215 
1216  //Interactions - track fits:
1217 
1218 
1219 
1220  // ----- Colouring options -----
1221  if (s.version()>=17 && s.restoreString() != "Colouring options") messageDebug("\n\nERROR! --> 'Colouring options'");
1222  if (s.version()>=12){
1223  s.restore(m_d->ui_col.groupBox_labels);
1224  s.restore(m_d->ui_col.horizontalSlider_labels_trkOffset);
1225  s.restore(m_d->ui_col.horizontalSlider_labels_xOffset);
1226  s.restore(m_d->ui_col.horizontalSlider_labels_yOffset);
1227  s.restore(m_d->ui_col.horizontalSlider_labels_zOffset);
1228  s.restore(m_d->ui_col.checkBox_trkLabels_p);
1229  s.restore(m_d->ui_col.checkBox_trkLabels_Pt);
1230  s.restore(m_d->ui_col.checkBox_trkLabels_pid);
1231  s.restore(m_d->ui_col.checkBox_trkLabels_hits);
1232  s.restore(m_d->ui_col.checkBox_trkLabels_fitQuality);
1233  }
1234  if (s.version()>=16)
1235  s.restore(m_d->ui_col.checkBox_trkLabels_direction);
1236 
1237 
1238 
1239 
1240 
1241  // ----- Extrap options -----
1242  // Version 14
1243  if (s.version()>=17 && s.restoreString() != "Extrapolator options") messageDebug("\n\nERROR! --> 'Extrapolator options'");
1244  if (s.version()>=14){
1245  s.restore(m_d->ui_extrap.checkBox_ignoreMEoT);
1246  s.restore(m_d->ui_extrap.checkBox_extendAllInDetTracks);
1247  s.restore(m_d->ui_extrap.comboBox_extendAllInDetTracksToHere);
1248  s.restore(m_d->ui_extrap.horizontalSlider_granularity);
1249  }
1250  // version 15
1251  if (s.version()>=15){
1252  s.restore(m_d->ui_extrap.checkBox_maxRadius);
1253  s.restore(m_d->ui_extrap.spinBox_maxRadiusValue);
1254  }
1255  // ------------------------------
1256 
1257 
1258 
1259  messageDebug("TrackSystemController::actualRestoreSettings() - DONE.");
1260 
1261 }
1262 
1263 //____________________________________________________________________
1265 {
1266  return m_d->trackcollwidget;
1267 }
1268 
1269 //Access methods:
1270 
1271 //____________________________________________________________________
1273 {
1274  if (!mb) {
1275  theclass->message("ERROR: Null material button pointer");
1276  return materialFallback;
1277  }
1278  QList<SoMaterial*> mats = mb->handledMaterials();
1279  if (mats.count()!=1) {
1280  theclass->message("ERROR: No material in button");
1281  return materialFallback;
1282  }
1283  return mats.at(0);
1284 }
1285 
1286 //____________________________________________________________________
1287 SoMaterial * TrackSystemController::getMaterialForPDGCode(const int& pdgCode) const
1288 {
1289  VP1MaterialButton * matbutton(nullptr);
1290  int abspdg = abs(pdgCode);
1291  switch (abspdg) {
1292  case 211: matbutton = m_d->ui_col.matButton_pions; break;
1293  case 11: matbutton = m_d->ui_col.matButton_electrons; break;
1294  case 22: matbutton = m_d->ui_col.matButton_photons; break;
1295  case 13: matbutton = m_d->ui_col.matButton_muons; break;
1296  case 2212: matbutton = m_d->ui_col.matButton_protons; break;
1297  case 2112: matbutton = m_d->ui_col.matButton_neutrons; break;
1298  case 2: return m_d->materialFallback;
1299  //Only use CHARGED kaons here!!
1300  // case 130://k-long
1301  // case 310://k-short
1302  // case 311://k0
1303  case 321://k+
1304  // case 313://k*0
1305  case 323://k*+
1306  //Fixme: More (charged) kaon states???
1307  matbutton = m_d->ui_col.matButton_chargedkaons; break;
1308  case 12://nu_e
1309  case 14://nu_mu
1310  case 16://nu_tau
1311  case 18://fourth gen. neutrino:
1312  matbutton = m_d->ui_col.matButton_neutrinos; break;
1313  default:
1314  bool ok;
1315  double charge;
1317  if (!ok) {
1318  message("WARNING: Could not look up charge of pdg code "+str(abspdg)+". Assuming charged.");
1319  charge = 1.0;
1320  }
1321  if (charge==0.0)
1322  matbutton = m_d->ui_col.matButton_otherneutrals;
1323  else
1324  matbutton = m_d->ui_col.matButton_othercharged;
1325  break;
1326  }
1327  return m_d->getMat(matbutton);
1328 }
1329 
1330 //____________________________________________________________________
1331 SoMaterial * TrackSystemController::getMaterialForCharge(const double& charge) const
1332 {
1333  if (charge>0)
1334  return m_d->getMat(m_d->ui_col.matButton_charge_pos);
1335  else if (charge<0)
1336  return m_d->getMat(m_d->ui_col.matButton_charge_neg);
1337  return m_d->getMat(m_d->ui_col.matButton_charge_neutral);
1338 }
1339 
1340 //____________________________________________________________________
1341 SoMaterial * TrackSystemController::getMaterialForMomentum(const double& absmom) const
1342 {
1343  static const double low=0*CLHEP::GeV;
1344  static const double high=15*CLHEP::GeV;
1345  if (absmom<=low)
1346  return m_d->getMat(m_d->ui_col.matButton_0GeV);
1347  else if (absmom>=high)
1348  return m_d->getMat(m_d->ui_col.matButton_15GeV);
1349 
1350  if (!m_d->matmixer)
1352 
1353  const double x = (absmom-low)/(high-low);
1354  return m_d->matmixer->getMixedMaterial( m_d->getMat(m_d->ui_col.matButton_0GeV), 1-x,
1355  m_d->getMat(m_d->ui_col.matButton_15GeV), x );
1356 }
1357 
1358 //____________________________________________________________________
1360 {
1361  return m_d->getMat(m_d->ui_ascobjs.matButton_measurements);
1362 }
1363 
1364 //____________________________________________________________________
1366 {
1367  return m_d->getMat(m_d->ui_ascobjs.matButton_meas_outliers);
1368 }
1369 
1370 //____________________________________________________________________
1372 {
1373  return m_d->getMat(m_d->ui_ascobjs.matButton_parameters);
1374 }
1375 
1376 //____________________________________________________________________
1378 {
1379  return m_d->getMat(m_d->ui_ascobjs.matButton_holeParameters);
1380 }
1381 
1382 //____________________________________________________________________
1384 {
1385  return m_d->getMat(m_d->ui_ascobjs.matButton_parerrors);
1386 }
1387 
1388 //____________________________________________________________________
1390 {
1391  return m_d->getMat(m_d->ui_ascobjs.matButton_materialeffectsontrack);
1392 }
1393 
1394 //____________________________________________________________________
1396 {
1397  return m_d->getMat(m_d->ui_ascobjs.matButton_surfaces);
1398 }
1399 
1400 // //____________________________________________________________________
1401 // void TrackSystemController::updateTrackDrawStyle()
1402 // {
1403 // double val = VP1QtInventorUtils::getValueLineWidthSlider(m_d->ui_col.horizontalSlider_trackWidth);
1404 // if (m_d->trackDrawStyle->lineWidth.getValue()!=val)
1405 // m_d->trackDrawStyle->lineWidth = val;
1406 // }
1407 
1408 // //____________________________________________________________________
1409 // void TrackSystemController::updateTrackLightModel()
1410 // {
1411 // bool base = m_d->ui_col.checkBox_tracksUseBaseLightModel->isChecked();
1412 // if (m_d->trackLightModel->model.getValue()!=(base?SoLightModel::BASE_COLOR:SoLightModel::PHONG)) {
1413 // messageVerbose("TrackLightModel changed (base = "+str(base));
1414 // if (base)
1415 // m_d->trackLightModel->model.setValue(SoLightModel::BASE_COLOR);
1416 // else
1417 // m_d->trackLightModel->model.setValue(SoLightModel::PHONG);
1418 // }
1419 // }
1420 
1421 //____________________________________________________________________
1423 {
1424  double val_lw = VP1QtInventorUtils::getValueLineWidthSlider(m_d->ui_ascobjs.horizontalSlider_linewidths);
1425  double val_ps = VP1QtInventorUtils::getValuePointSizeSlider(m_d->ui_ascobjs.horizontalSlider_pointsizes);
1426  if (m_d->ascObjDrawStyle->lineWidth.getValue()!=val_lw)
1427  m_d->ascObjDrawStyle->lineWidth = val_lw;
1428  if (m_d->ascObjDrawStyle->pointSize.getValue()!=val_ps)
1429  m_d->ascObjDrawStyle->pointSize = val_ps;
1430 }
1431 
1432 
1433 //____________________________________________________________________
1435 {
1436  //choose complexity in interval [0.01,1.0]
1437  const double val = std::min<double>(1.0,std::max<double>(0.0,0.01+0.991*
1438  (m_d->ui_ascobjs.horizontalSlider_complexity->value()
1439  -m_d->ui_ascobjs.horizontalSlider_complexity->minimum())/
1440  (m_d->ui_ascobjs.horizontalSlider_complexity->maximum()*1.0)));
1441  if (m_d->ascObjComplexity->value.getValue()!=val)
1442  m_d->ascObjComplexity->value.setValue(val);
1443 }
1444 
1445 // //____________________________________________________________________
1446 // SoDrawStyle * TrackSystemController::trackDrawStyle() const
1447 // {
1448 // return m_d->trackDrawStyle;
1449 // }
1450 
1451 // //____________________________________________________________________
1452 // SoLightModel * TrackSystemController::trackLightModel() const
1453 // {
1454 // return m_d->trackLightModel;
1455 // }
1456 
1457 //____________________________________________________________________
1459 {
1460  return m_d->ascObjDrawStyle;
1461 }
1462 
1463 //____________________________________________________________________
1465 {
1466  return m_d->ascObjComplexity;
1467 }
1468 
1469 //____________________________________________________________________
1471 {
1472  QString name = m_d->ui_int.lineEdit_fittedTrackCollName->text().simplified();
1473  return name.isEmpty() ? "<noname>" : name;
1474 }
1475 
1476 //____________________________________________________________________
1477 TrackCommonFlags::TrackPartsFlags TrackSystemController::shownTrackParts() const
1478 {
1479  TrackCommonFlags::TrackPartsFlags parts = TrackCommonFlags::NoParts;
1480  // if (!m_d->ui_col.checkBox_hideactualpaths->isChecked()) parts |= TrackCommonFlags::ActualPath;
1481  parts |= TrackCommonFlags::ActualPath; // sensible default.
1482  if (m_d->ui_proj.checkBox_projections_indet->isChecked()) parts |= TrackCommonFlags::InDetProjections;
1483  if (m_d->ui_proj.groupBox_projections_vertex->isChecked()) parts |= TrackCommonFlags::VertexProjections;
1484  if (VP1JobConfigInfo::hasMuonGeometry()&&m_d->ui_proj.checkBox_projections_muonchambers->isChecked()) parts |= TrackCommonFlags::MuonProjections;
1485  return parts;
1486 }
1487 
1489  messageVerbose("angleForVertexPlane"+str(m_d->ui_proj.spinBox_projections_vertex->value()));
1490 
1491  if (!m_d->ui_proj.groupBox_projections_vertex->isChecked()) return -1;
1492  return m_d->ui_proj.spinBox_projections_vertex->value();
1493 }
1494 
1495 // //____________________________________________________________________
1496 // double TrackSystemController::trackTubeRadius() const
1497 // {
1498 // return m_d->ui_col.checkBox_trackTubes->isChecked() ?
1499 // m_d->ui_col.doubleSpinBox_trackTubesRadiusMM->value()*CLHEP::mm : 0.0;
1500 // }
1501 
1502 //____________________________________________________________________
1503 TrackCommonFlags::TSOSPartsFlags TrackSystemController::shownTSOSParts() const
1504 {
1505  TrackCommonFlags::TSOSPartsFlags f(TrackCommonFlags::TSOS_NoObjects);
1506  if (m_d->ui_ascobjs.groupBox_parameters->isChecked())
1508  if (m_d->ui_ascobjs.groupBox_errors->isChecked()&&m_d->ui_ascobjs.checkBox_parametererrors->isChecked()) {
1510  if (!m_d->ui_ascobjs.checkBox_parerror_hideperigeeerrors->isChecked())
1512  }
1513  if (m_d->ui_ascobjs.groupBox_errors->isChecked()&&m_d->ui_ascobjs.checkBox_measurementerrors->isChecked()) {
1515  }
1516  if (m_d->ui_ascobjs.groupBox_measurements->isChecked()) {
1519  }
1520  if (m_d->ui_ascobjs.groupBox_surfaces->isChecked()) {
1522  if (!m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces->isChecked())
1524  if (!m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces->isChecked())
1526  }
1527  if (m_d->ui_ascobjs.groupBox_materialeffectsontrack->isChecked()) {
1529  if (!m_d->ui_ascobjs.checkBox_materialeffectsontrack_hideNoDE->isChecked())
1531  }
1532 
1533  return f;
1534 }
1535 
1536 //____________________________________________________________________
1537 TrackCommonFlags::TSOSPartsFlags TrackSystemController::customColouredTSOSParts() const
1538 {
1539  TrackCommonFlags::TSOSPartsFlags f(TrackCommonFlags::TSOS_NoObjects);
1540  if (m_d->ui_ascobjs.checkBox_usecolour_measurements->isChecked())
1542  if (m_d->ui_ascobjs.checkBox_usecolour_meas_outliers->isChecked())
1544  if (m_d->ui_ascobjs.checkBox_usecolour_parameters->isChecked())
1546  if (m_d->ui_ascobjs.checkBox_useHoleColour_parameters->isChecked())
1548  if (m_d->ui_ascobjs.checkBox_usecolour_parametererrors->isChecked())
1550  if (m_d->ui_ascobjs.checkBox_usecolour_materialeffectsontrack->isChecked())
1552  if (m_d->ui_ascobjs.checkBox_usecolour_surfaces->isChecked())
1554 
1555  return f;
1556 }
1557 
1558 //____________________________________________________________________
1560 {
1561  return m_d->ui_ascobjs.checkBox_measurements_shorttubes_trt->isChecked();
1562 }
1563 
1564 //____________________________________________________________________
1566 {
1567  return m_d->ui_ascobjs.checkBox_measurements_shorttubes_mdt->isChecked();
1568 }
1569 
1570 //____________________________________________________________________
1572 {
1573  return m_d->ui_ascobjs.checkBox_surfaces_hidetubesurfaces->isChecked();
1574 }
1575 
1576 //____________________________________________________________________
1578 {
1579  return m_d->ui_ascobjs.checkBox_surfaces_hidecustomsurfaces->isChecked();
1580 }
1581 
1582 //____________________________________________________________________
1584 {
1585  return m_d->ui_ascobjs.checkBox_measurements_drawGP->isChecked();
1586 }
1587 
1588 
1589 //____________________________________________________________________
1591 {
1592  return std::max(0.1*CLHEP::mm,m_d->ui_ascobjs.doubleSpinBox_measurements_shorttubes_scale->value()*CLHEP::cm);
1593 }
1594 
1595 //____________________________________________________________________
1597 {
1598  return std::min<double>(1.0e3,std::max<double>(1.0e-3,m_d->ui_ascobjs.doubleSpinBox_parerror_stddev->value()));
1599 }
1600 
1601 //____________________________________________________________________
1603 {
1604  return m_d->ui_ascobjs.checkBox_parerror_drawcylinder->isChecked();
1605 }
1606 
1607 //____________________________________________________________________
1609 {
1610  const int val(m_d->ui_ascobjs.horizontalSlider_complexity->value());
1611  const int max(m_d->ui_ascobjs.horizontalSlider_complexity->maximum());
1612  const int min(m_d->ui_ascobjs.horizontalSlider_complexity->minimum());
1613  //special cases:
1614  if (val==max)
1615  return 80;
1616  else if (val==min)
1617  return 4;
1618 
1619  //roughly 4..32:
1620  const int n(1+static_cast<int>(0.5+7.0*(val-min)/(1.0*max)));//number between 1 and 8
1621  return std::min<int>(32,std::max<int>(4,4*n));
1622 }
1623 
1624 //____________________________________________________________________
1626 {
1627  return m_d->ui_ascobjs.horizontalSlider_materialeffectsontrack_scale->value()/5.0;
1628 }
1629 
1630 //____________________________________________________________________
1632 {
1633  if (!m_d->toolaccesshelper
1634  ||!m_d->ui_extrap.radioButton_athenaExtrapolator->isChecked()
1635  ||m_d->ui_extrap.comboBox_propagator->count()==0)
1636  return nullptr;
1637 
1638  QString key = m_d->ui_extrap.comboBox_propagator->currentText();
1640  return nullptr;
1641  return key.isEmpty() ? nullptr : m_d->toolaccesshelper->getToolPointer<Trk::IExtrapolator>(key);
1642 }
1643 
1644 TrackSystemController::PropagationOptionFlags TrackSystemController::propagationOptions() const{
1645  PropagationOptionFlags options=TrackSystemController::NoPropOptions;
1646  if (m_d->ui_extrap.checkBox_ignoreMEoT->isChecked()) options |= TrackSystemController::IgnoreMEOT;
1647  if (m_d->ui_extrap.checkBox_extendAllInDetTracks->isChecked()) options |= TrackSystemController::ExtendTrack;
1648  return options;
1649 }
1650 
1652  if (!m_d->ui_extrap.checkBox_maxRadius->isChecked()) return -1.0;
1653  return m_d->ui_extrap.spinBox_maxRadiusValue->value();
1654 }
1655 
1658 }
1659 
1661 {
1662  return m_d->ui_extrap.checkBox_ignoreMEoT->isChecked();
1663 }
1664 
1665 //____________________________________________________________________
1667 {
1668  if (!m_d->toolaccesshelper
1669  ||m_d->ui_int.comboBox_fitters->count()==0)
1670  return nullptr;
1671 
1672  QString key = m_d->ui_int.comboBox_fitters->currentText();
1674  return nullptr;
1675  return key.isEmpty() ? nullptr : m_d->toolaccesshelper->getToolPointer<Trk::ITrackFitter>(key);
1676 }
1677 
1679 {
1680  QString key = "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool";
1682 }
1683 
1684 // ITrackingVolumesSvc * TrackSystemController::trackingVolumeSvc() const
1685 // {
1686 // return m_trackingVolumesSvc.operator->();
1687 // }
1688 
1690 {
1691  if (m_d->ui_extrap.comboBox_extendAllInDetTracksToHere->currentText()=="Calorimeter")
1692  return m_d->calorimeterEntryLayer;
1693  if (m_d->ui_extrap.comboBox_extendAllInDetTracksToHere->currentText()=="Muon Entrance")
1695  if (m_d->ui_extrap.comboBox_extendAllInDetTracksToHere->currentText()=="Muon Exit")
1697  return nullptr;
1698 }
1699 
1700 //____________________________________________________________________
1702 {
1703  if (m_d->ui_int.radioButton_selmode_single->isChecked())
1705  else if (m_d->ui_int.radioButton_selmode_multitracks->isChecked())
1707  else if (m_d->ui_int.radioButton_selmode_trackfits->isChecked())
1709  message("selectionMode ERROR: Inconsistency detected.");
1711 }
1712 
1714 {
1715  if (m_d->ui_int.comboBox_fitterMode->currentText()=="Fit PRDs")
1717  else if (m_d->ui_int.comboBox_fitterMode->currentText()=="Refit Track")
1719  else if (m_d->ui_int.comboBox_fitterMode->currentText()=="Extend Track with PRDs")
1721  else if (m_d->ui_int.comboBox_fitterMode->currentText()=="Combine Two Tracks")
1723 
1724  message("fitterMode ERROR: Inconsistency detected. Mode not known.");
1725 
1726  return TrackCommonFlags::FROMPRDS; // FIXME!
1727 }
1728 
1730 {
1731  return m_d->ui_int.checkBox_removeOutliers->isChecked();
1732 }
1733 
1735 {
1736  if (m_d->ui_int.comboBox_particleHypo->currentText()=="Pion")
1737  return Trk::pion;
1738  else if (m_d->ui_int.comboBox_particleHypo->currentText()=="Non Interacting")
1739  return Trk::nonInteracting;
1740  else if (m_d->ui_int.comboBox_particleHypo->currentText()=="Electron")
1741  return Trk::electron;
1742  else if (m_d->ui_int.comboBox_particleHypo->currentText()=="Muon")
1743  return Trk::muon;
1744  else if (m_d->ui_int.comboBox_particleHypo->currentText()=="Kaon")
1745  return Trk::kaon;
1746  else if (m_d->ui_int.comboBox_particleHypo->currentText()=="Proton")
1747  return Trk::proton;
1748  else if (m_d->ui_int.comboBox_particleHypo->currentText()=="Photon")
1749  return Trk::photon;
1750 
1751  message("fitterMode ERROR: Inconsistency detected. Mode not known.");
1752  return Trk::undefined; // FIXME!
1753 }
1754 
1755 //____________________________________________________________________
1757 {
1758  return m_d->ui_ascobjs.checkBox_truthtracks_display_points->isChecked();
1759 }
1760 
1761 //____________________________________________________________________
1763 {
1764  if (m_d->ui_ascobjs.comboBox_assocobj_detaillevel->currentText()=="Auto")
1765  return TrackCommonFlags::AUTO;
1766  else if (m_d->ui_ascobjs.comboBox_assocobj_detaillevel->currentText()=="Simple")
1767  return TrackCommonFlags::SIMPLE;
1768  else
1770 }
1771 
1773  if (m_d->ui_cuts.checkBox_vertexAssociated->isEnabled()!=b) {
1774  m_d->ui_cuts.checkBox_vertexAssociated->setEnabled(b);
1775  emit cutOnlyVertexAssocTracksChanged(m_d->ui_cuts.checkBox_vertexAssociated->isChecked());
1776  }
1777 }
1778 
1780  if (!m_d->ui_cuts.checkBox_vertexAssociated->isEnabled()) return false;
1781  return m_d->ui_cuts.checkBox_vertexAssociated->isChecked();
1782 }
1783 
1784 
1785 //____________________________________________________________________
1787 {
1788  if (!m_d->ui_cuts.checkBox_cut_minpt)
1789  return {};
1790 
1791  // will set range to negative if we have momcut=P
1792  // if minCut unset then min=-inf
1793  // if minCut set, and Pt selected, then min=-minCut
1794  // if minCut set, and P selected, then min=-maxCut
1795  // etc
1796  bool isPCut = m_d->ui_cuts.comboBox_momtype->currentText()=="P";
1797 
1798  const double minFromInterface=m_d->ui_cuts.doubleSpinBox_cut_minpt_gev->value()*CLHEP::GeV;
1799  const double maxFromInterface=m_d->ui_cuts.doubleSpinBox_cut_maxpt_gev->value()*CLHEP::GeV;
1800 
1801  double min=0.0,max=0.0;
1802  if (!isPCut) {
1803  //Pt cut
1804  min = (m_d->ui_cuts.checkBox_cut_minpt->isChecked() ? minFromInterface : -std::numeric_limits<double>::infinity());
1805  max = (m_d->ui_cuts.checkBox_cut_maxpt->isChecked() ? maxFromInterface : std::numeric_limits<double>::infinity());
1806  } else {
1807  min = (m_d->ui_cuts.checkBox_cut_maxpt->isChecked() ? -maxFromInterface : -std::numeric_limits<double>::infinity());
1808  max = (m_d->ui_cuts.checkBox_cut_minpt->isChecked() ? -minFromInterface : std::numeric_limits<double>::infinity());
1809  }
1810 
1811  //message("cutAllowedPt: min,max="+QString::number(min)+","+QString::number(max));
1812 
1813  if (max<min)
1814  return {};
1815 
1816  return VP1Interval( min, max );//fixme: closed interval??
1817 }
1818 
1819 //____________________________________________________________________
1821 {
1822  return m_d->ui_cuts.etaPhiCutWidget->allowedEta();
1823 }
1824 
1825 //____________________________________________________________________
1826 QList<VP1Interval> TrackSystemController::cutAllowedPhi() const
1827 {
1828  return m_d->ui_cuts.etaPhiCutWidget->allowedPhi();
1829 }
1830 
1831 //____________________________________________________________________
1833 {
1834  unsigned npixel = m_d->ui_cuts.checkBox_cut_nhits_pixel->isChecked() ? m_d->ui_cuts.spinBox_cut_nhits_pixel->value() : 0;
1835  unsigned nsct = m_d->ui_cuts.checkBox_cut_nhits_sct->isChecked() ? m_d->ui_cuts.spinBox_cut_nhits_sct->value() : 0;
1836  unsigned ntrt = m_d->ui_cuts.checkBox_cut_nhits_trt->isChecked() ? m_d->ui_cuts.spinBox_cut_nhits_trt->value() : 0;
1837  unsigned nmuon = m_d->ui_cuts.checkBox_cut_nhits_muon->isChecked() ? m_d->ui_cuts.spinBox_cut_nhits_muon->value() : 0;
1838  unsigned nprecmuon = m_d->ui_cuts.checkBox_cut_nprecisionhits_muon->isChecked() ? m_d->ui_cuts.spinBox_cut_nprecisionhits_muon->value() : 0;
1839 
1840  QList<unsigned> l;
1841  if (!npixel&&!nsct&&!ntrt&&!nmuon&&!nprecmuon)
1842  return l;
1843  l << npixel << nsct << ntrt << nmuon << nprecmuon;
1844  return l;
1845 }
1846 
1848  QString tmp = m_d->ui_cuts.checkBox_requireDetectorElement->isChecked() ? m_d->ui_cuts.lineEdit_detectorElementId->text(): QString();
1849  return tmp;
1850 }
1851 
1852 
1853 //____________________________________________________________________
1855 {
1856  return m_d->ui_cuts.checkBox_cut_truthtracks_creationvertexinIR->isChecked();
1857 }
1858 
1859 //____________________________________________________________________
1861 {
1862  return m_d->ui_cuts.checkBox_cut_truthtracks_excludebarcode0->isChecked();
1863 }
1864 
1865 //____________________________________________________________________
1867 {
1868  return m_d->ui_cuts.checkBox_cut_truthtracks_excludeneutrals->isChecked();
1869 }
1870 
1871 //____________________________________________________________________
1872 //Returns false if "none available"
1873 bool TrackSystemController::Imp::updateComboBoxContents(QComboBox*cb,const QStringList& l,QString& restoredSelection)
1874 {
1875  //current selection:
1876  QString ct = cb->currentText();
1877  if (ct==Imp::noneAvailString)
1878  ct = "";
1879 
1880  bool save = cb->blockSignals(true);
1881 
1882  cb->clear();
1883 
1884  bool enabled = false;
1885  if (l.isEmpty()) {
1886  cb->addItem(Imp::noneAvailString);
1887  cb->setEnabled(false);
1888  } else {
1889  cb->addItems(l);
1890 
1891  int i = restoredSelection.isEmpty() ? -1 : cb->findText(restoredSelection);
1892  if (i<0)
1893  i = ct.isEmpty() ? -1 : cb->findText(ct);
1894  restoredSelection = "";
1895 
1896  if (i>=0) {
1897  cb->setCurrentIndex(i);
1898  } else {
1899  //Let's try to pick the default to be VP1Extrapolater over
1900  //AtlasExtrapolater over... whatever (same for fitters):
1901  int i_vp1(-1), i_atlas(-1);
1902  for (int j = 0; j <cb->count();++j) {
1903  if (i_vp1==-1&&cb->itemText(j).contains("vp1",Qt::CaseInsensitive))
1904  i_vp1 = j;
1905  if (i_atlas==-1&&cb->itemText(j).contains("atlas",Qt::CaseInsensitive))
1906  i_atlas = j;
1907  }
1908  if (i_vp1>=0)
1909  cb->setCurrentIndex(i_vp1);
1910  else if (i_atlas>=0)
1911  cb->setCurrentIndex(i_atlas);
1912  }
1913  //m_d->ui_extrap.radioButton_athenaExtrapolator->setEnabled(true);
1914  enabled = true;
1915  cb->setEnabled(true);
1916  }
1917 
1918  if (!save)
1919  cb->blockSignals(false);
1920  return enabled;
1921 }
1922 
1923 //____________________________________________________________________
1925 {
1927  return;
1929  m_d->updateComboBoxContents(m_d->ui_int.comboBox_fitters,af,m_d->restoredLastFitter);//remember return val.
1931 
1933 }
1934 
1935 //____________________________________________________________________
1937 {
1939  return;
1941 
1942  if (!m_d->updateComboBoxContents(m_d->ui_extrap.comboBox_propagator,ae,m_d->restoredLastPropagator)) {
1943  m_d->ui_extrap.radioButton_athenaExtrapolator->setEnabled(false);
1944  bool save1 = m_d->ui_extrap.radioButton_none->blockSignals(true);
1945  bool save2 = m_d->ui_extrap.radioButton_helical->blockSignals(true);
1946  bool save3 = m_d->ui_extrap.radioButton_athenaExtrapolator->blockSignals(true);
1947  m_d->ui_extrap.radioButton_none->setChecked(true);//Fixme: fall back to the helical instead!
1948  m_d->ui_extrap.radioButton_helical->setChecked(false);
1949  m_d->ui_extrap.radioButton_athenaExtrapolator->setChecked(false);
1950  if (!save1) m_d->ui_extrap.radioButton_none->blockSignals(false);
1951  if (!save2) m_d->ui_extrap.radioButton_helical->blockSignals(false);
1952  if (!save3) m_d->ui_extrap.radioButton_athenaExtrapolator->blockSignals(false);
1953  } else {
1954  m_d->ui_extrap.radioButton_athenaExtrapolator->setEnabled(true);
1955  }
1956 
1958 }
1959 
1960 //____________________________________________________________________
1962 {
1963  return m_d->ui_int.checkBox_selsingle_orientzoom->isChecked();
1964 }
1965 
1966 //____________________________________________________________________
1968 {
1969  return m_d->ui_int.checkBox_selsingle_printinfo->isChecked();
1970 }
1971 
1972 //____________________________________________________________________
1974 {
1975  return printInfoOnSingleSelection() && m_d->ui_int.checkBox_selsingle_printinfo_verbose->isChecked();
1976 }
1977 
1978 //____________________________________________________________________
1980 {
1981  return m_d->ui_int.checkBox_sel_printtotmom->isChecked();
1982 }
1983 
1984 //____________________________________________________________________
1986 {
1987  return m_d->ui_int.checkBox_sel_showtotmom->isChecked();
1988 }
1989 
1990 //____________________________________________________________________
1992 {
1993  messageVerbose("Emitting rerandomise");
1994  emit rerandomise();
1995 }
1996 
1997 //____________________________________________________________________
1999 {
2000  messageVerbose("Emitting refit");
2001  emit refit();
2002 }
2003 
2004 //____________________________________________________________________
2006 {
2007  switch (theclass->fitterMode()) {
2008  case TrackCommonFlags::FROMPRDS: ui_int.pushButton_refit->setEnabled( numberOfSelectedPRDs>=3 && theclass->trackFitter() );break;
2009  case TrackCommonFlags::REFITSINGLETRACK: ui_int.pushButton_refit->setEnabled( numberOfSelectedTracks>=1 && theclass->trackFitter() );break;
2010  case TrackCommonFlags::EXTENDTRACKWITHPRDS: ui_int.pushButton_refit->setEnabled( numberOfSelectedTracks>=1 && numberOfSelectedPRDs>=1 && theclass->trackFitter() );break;
2011  case TrackCommonFlags::COMBINETWOTRACKS: ui_int.pushButton_refit->setEnabled( numberOfSelectedTracks==2 && theclass->trackFitter() );break;
2012  }
2013 }
2014 
2015 //____________________________________________________________________
2017 {
2018  if (m_d->numberOfSelectedPRDs==prds && m_d->numberOfSelectedTracks==trks)
2019  return;
2020  m_d->numberOfSelectedPRDs=prds;
2022 
2023  switch (fitterMode()) {
2024  case TrackCommonFlags::FROMPRDS: m_d->ui_int.pushButton_refit->setText("Fit track from "+str(prds)+" PRDs");break;
2025  case TrackCommonFlags::REFITSINGLETRACK: m_d->ui_int.pushButton_refit->setText("Fit track");break;
2026  case TrackCommonFlags::EXTENDTRACKWITHPRDS: m_d->ui_int.pushButton_refit->setText("Extend track with "+str(prds)+" PRDs");break;
2027  case TrackCommonFlags::COMBINETWOTRACKS: m_d->ui_int.pushButton_refit->setText("Combine");break;
2028  }
2029 
2030 
2031  // FIXME Need to redo this method so that it can handle all fitter modes
2032 
2034 }
2035 
2037  messageVerbose("updateFitPRDButtonState");
2038 
2039  switch (fitterMode()) {
2040  case TrackCommonFlags::FROMPRDS: m_d->ui_int.pushButton_refit->setText("Fit track from "+str(m_d->numberOfSelectedPRDs)+" PRDs");break;
2041  case TrackCommonFlags::REFITSINGLETRACK: m_d->ui_int.pushButton_refit->setText("Fit track");break;
2042  case TrackCommonFlags::EXTENDTRACKWITHPRDS: m_d->ui_int.pushButton_refit->setText("Extend track with "+str(m_d->numberOfSelectedPRDs)+" PRDs");break;
2043  case TrackCommonFlags::COMBINETWOTRACKS: m_d->ui_int.pushButton_refit->setText("Combine");break;
2044  }
2045 
2047 }
2048 
2050 {
2051  return m_d->objBrowserWidget;
2052 }
2053 
2055  return m_d->common;
2056 }
2058  m_d->common=common;
2059 }
2060 
2062  messageVerbose("objectBrowserClicked for "+item->text(0));
2063 
2064  VP1TrackSystem* sys = dynamic_cast<VP1TrackSystem*>(systemBase());
2065  if (!sys){
2066  messageVerbose("TrackSystemController::objectBrowserClicked: Couldn't get VP1TrackSystem pointer");
2067  return;
2068  }
2069 
2070  //sys->deselectAll(); // FIXME. necessary?
2071 
2072  SoNode* node = common()->node(item);
2073  if (node) {
2074  // okay, have track
2075  SoCooperativeSelection * sel = sys->selTracks();
2076  sel->select(node);
2077  } else {
2078  // maybe it's a TSOS? Check first that it has a parent
2079  if (item->parent()) node = common()->node(item->parent());
2080  if ( !node && item->parent()->parent() ) node = common()->node(item->parent()->parent()); // Try one more up (ugly, but shouldn't ever be deeper than this)
2081  if (node) {
2082  // yes, so now get index within track, as we can hopefully use this to find the AscObj_TSOS
2083  unsigned int index = item->parent()->indexOfChild(item);// should correspond to the TSOS number
2084  messageVerbose("TrackSystemController::objectBrowserClicked: item has index of "+QString::number(index));
2085  TrackHandle_TrkTrack* trkHandle = dynamic_cast<TrackHandle_TrkTrack*>(common()->trackHandle(node));
2086  if (trkHandle && trkHandle->trkTrackPointer()) {
2087  if (index<trkHandle->trkTrackPointer()->trackStateOnSurfaces()->size() ){
2088  // in range
2089  const Trk::TrackStateOnSurface* tsos = (*trkHandle->trkTrackPointer()->trackStateOnSurfaces())[index];
2090  // now find matching AscObj_TSOS
2091  QList<AssociatedObjectHandleBase*> list = trkHandle->getVisibleMeasurements();
2092  for (int i = 0; i < list.size(); ++i) {
2093  messageVerbose("TrackSystemController::objectBrowserClicked: checking ASC "+QString::number(i));
2094 
2095  AscObj_TSOS* asc = dynamic_cast<AscObj_TSOS*>(list.at(i));
2096  if (asc && asc->trackStateOnSurface()==tsos) {
2097  messageVerbose("TrackSystemController::objectBrowserClicked: this ASC matches "+QString::number(i));
2098  //asc->zoomView();
2100  } else {
2101  messageVerbose("TrackSystemController::objectBrowserClicked: no matching Asc found");
2102  }
2103  } // for loop
2104  } else {
2105  messageVerbose("TrackSystemController::objectBrowserClicked: index of "+QString::number(index)+" is greater than number of TSOSes:"+QString::number(trkHandle->trkTrackPointer()->trackStateOnSurfaces()->size()));
2106  }
2107  }
2108  } else {
2109  messageVerbose("TrackSystemController::objectBrowserClicked: Couldn't get node pointer. Maybe object not visible?");
2110  }
2111  }
2112 
2113 
2114  // if (selTrack){
2115  // SoCooperativeSelection * sel = sys->selTracks();
2116  // sel->select(node);
2117  // } else {
2118  // common()->ascObjSelectionManager()->pretendUserClicked();
2119  // }
2120  //
2121  // SoCooperativeSelection * sel = sys->selTracks();
2122  // SoCooperativeSelection * selAsc = dynamic_cast<SoCooperativeSelection*>(common()->ascObjSelectionManager()->getAscObjAttachSep());
2123  // SoSeparator* eventRoot = common()->ascObjSelectionManager()->eventRoot();
2124  //
2125  // SoSearchAction mySearchAction;
2126  // mySearchAction.setNode(node);
2127  // // SoSeparator* eventRoot = common()->ascObjSelectionManager()->eventRoot();
2128  // mySearchAction.apply(eventRoot);
2129  // SoPath* path=mySearchAction.getPath();
2130  // if ( !path ) {
2131  // messageVerbose("TrackSystemController::objectBrowserClicked: Couldn't get SoPath");
2132  // return;
2133  // } else {
2134  // messageVerbose("TrackSystemController::objectBrowserClicked: got SoPath. Will now try to select.");
2135  // messageVerbose("pathlength="+QString::number(path->getLength()));
2136  // }
2137  //
2138  // //sel->select(path); //Doesn't work.
2139  // // messageVerbose("findpath="+QString::number(sel->findPath(path)));
2140  // sel->select(node); // Doesn't work.
2141  // if (sel->getNumSelected()==0){
2142  // messageVerbose("TrackSystemController::objectBrowserClicked: Couldn't select. Trying with ASC sel node.");
2143  //
2144  // selAsc->select(node);
2145  // if (selAsc->getNumSelected()==0){
2146  // messageVerbose("TrackSystemController::objectBrowserClicked: Couldn't select. Trying with ASC sel using path.");
2147  //
2148  // selAsc->select(path);
2149  // }
2150  // }
2151  // // messageVerbose("findpath="+QString::number(sel->findPath(path)));
2152  //
2153  // // sel->touch();
2154  // messageVerbose("numselected="+QString::number(sel->getNumSelected()));
2155 
2156  // path->unref();
2157 }
2158 
2160 {
2161  std::vector<double> values(6,0.0);
2162  values[0]=m_d->ui_shiftmuonchambers.doubleSpinBox_tra_s->value();
2163  values[1]=m_d->ui_shiftmuonchambers.doubleSpinBox_tra_z->value();
2164  values[2]=m_d->ui_shiftmuonchambers.doubleSpinBox_tra_t->value();
2165  values[3]=m_d->ui_shiftmuonchambers.doubleSpinBox_rot_s->value();
2166  values[4]=m_d->ui_shiftmuonchambers.doubleSpinBox_rot_z->value();
2167  values[5]=m_d->ui_shiftmuonchambers.doubleSpinBox_rot_t->value();
2168  return values;
2169 }
2171 {
2172  if (m_d->ui_shiftmuonchambers.comboBox_level->currentText()=="Level 0")
2173  return 0;
2174  else if (m_d->ui_shiftmuonchambers.comboBox_level->currentText()=="Level 1")
2175  return 1;
2176  else if (m_d->ui_shiftmuonchambers.comboBox_level->currentText()=="Level 2")
2177  return 2;
2178  else if (m_d->ui_shiftmuonchambers.comboBox_level->currentText()=="Level 3")
2179  return 3;
2180  return 0;
2181 }
2182 
2184 {
2185  return m_d->ui_col.groupBox_labels->isChecked();
2186 }
2187 
2189 {
2190  return static_cast<float>(m_d->ui_col.horizontalSlider_labels_trkOffset->value())/static_cast<float>(m_d->ui_col.horizontalSlider_labels_trkOffset->maximum());
2191 }
2192 
2194 {
2195  QList<int> values;
2196  values << m_d->ui_col.horizontalSlider_labels_xOffset->value();
2197  values << m_d->ui_col.horizontalSlider_labels_yOffset->value();
2198  values << m_d->ui_col.horizontalSlider_labels_zOffset->value();
2199  return values;
2200 }
2201 
2203 {
2204  return m_d->ui_col.horizontalSlider_labels_xOffset->value();
2205 }
2206 
2208 {
2209  return m_d->ui_col.horizontalSlider_labels_yOffset->value();
2210 }
2211 
2213 {
2214  return m_d->ui_col.horizontalSlider_labels_zOffset->value();
2215 }
2216 
2217 TrackSystemController::TrackLabelModes TrackSystemController::trackLabels(){
2218  if (!m_d->ui_col.groupBox_labels->isChecked())
2220 
2221  TrackLabelModes labels=TrackSystemController::NoLabels;
2222  if (m_d->ui_col.checkBox_trkLabels_p->isChecked()) labels |= TrackSystemController::P;
2223  if (m_d->ui_col.checkBox_trkLabels_Pt->isChecked()) labels |= TrackSystemController::Pt;
2224  if (m_d->ui_col.checkBox_trkLabels_direction->isChecked()) labels |= TrackSystemController::Direction;
2225  if (m_d->ui_col.checkBox_trkLabels_pid->isChecked()) labels |= TrackSystemController::Pid;
2226  if (m_d->ui_col.checkBox_trkLabels_hits->isChecked()) labels |= TrackSystemController::Hits;
2227  if (m_d->ui_col.checkBox_trkLabels_fitQuality->isChecked()) labels |= TrackSystemController::FitQuality;
2228  return labels;
2229 }
2230 
2232 // Test for possible changes in values and emit signals as appropriate:
2233 // (possibleChange_XXX() slots code provided by macros)
2234 #define VP1CONTROLLERCLASSNAME TrackSystemController
2238 // POSSIBLECHANGE_IMP(trackTubeRadius)
VP1Serialise.h
TrackSystemController::getMaterialForCharge
SoMaterial * getMaterialForCharge(const double &charge) const
Definition: TrackSystemController.cxx:1331
TrackSystemController::Imp::last_cutAllowedEta
VP1Interval last_cutAllowedEta
Definition: TrackSystemController.cxx:134
TrackSystemController::possibleChange_selectionMode
void possibleChange_selectionMode()
TrackSystemController::useShortTRTMeasurements
bool useShortTRTMeasurements() const
Definition: TrackSystemController.cxx:1559
VP1Controller::addUpdateSlot
const char * addUpdateSlot(const char *slot)
Definition: VP1Controller.cxx:318
TrackCommonFlags::InDetProjections
@ InDetProjections
Definition: TrackCommonFlags.h:27
TrackSystemController::Imp::last_cutTruthExcludeNeutrals
bool last_cutTruthExcludeNeutrals
Definition: TrackSystemController.cxx:140
beamspotman.r
def r
Definition: beamspotman.py:676
VP1Controller::setupCollWidgetInScrollArea
void setupCollWidgetInScrollArea(QScrollArea *scrollarea, VP1CollectionWidget *collWidget)
Definition: VP1Controller.cxx:255
TrackSystemController::Imp::muonedmprintertool
Muon::MuonEDMPrinterTool * muonedmprintertool
Definition: TrackSystemController.cxx:118
TrackSystemController::possibleChange_cutRequiredNHits
void possibleChange_cutRequiredNHits()
TrackSystemController::labelZOffset
int labelZOffset()
Absolute z offset.
Definition: TrackSystemController.cxx:2212
Trk::proton
@ proton
Definition: ParticleHypothesis.h:31
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
TrackSystemController::doTrackLabels
bool doTrackLabels()
Definition: TrackSystemController.cxx:2183
TrackSystemController::labelXOffset
int labelXOffset()
Absolute x offset.
Definition: TrackSystemController.cxx:2202
POSSIBLECHANGE_IMP
#define POSSIBLECHANGE_IMP(x)
Definition: VP1ControllerMacros.h:18
TrackSystemController::trackLabelPosOffset
QList< int > trackLabelPosOffset()
Offset in x,y,z.
Definition: TrackSystemController.cxx:2193
VP1QtInventorUtils::getValueLineWidthSlider
static double getValueLineWidthSlider(const QSlider *)
Definition: VP1QtInventorUtils.cxx:1617
TrackSystemController::Imp::last_trackLabelTrkOffset
float last_trackLabelTrkOffset
Definition: TrackSystemController.cxx:111
VP1AvailableToolsHelper.h
TrackSystemController::hideTubeSurfaces
bool hideTubeSurfaces() const
Definition: TrackSystemController.cxx:1571
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
VP1Deserialise.h
TrackSystemController::propagationOptions
PropagationOptionFlags propagationOptions() const
Definition: TrackSystemController.cxx:1644
VP1Serialise
Definition: VP1Serialise.h:45
VP1AvailableToolsHelper::addMonitoredType
void addMonitoredType(const QString &, const QStringList &ignoreList=QStringList())
Definition: VP1AvailableToolsHelper.cxx:102
TrackSystemController::emitRerandomise
void emitRerandomise()
Definition: TrackSystemController.cxx:1991
max
#define max(a, b)
Definition: cfImp.cxx:41
TrackSystemController::Imp::updateFitPRDButtonState
void updateFitPRDButtonState()
Definition: TrackSystemController.cxx:2005
TrackSystemController::Imp::ui_cuts
Ui::TrackSysSettingsCutsForm ui_cuts
Definition: TrackSystemController.cxx:148
TrackCommonFlags::SIMPLE
@ SIMPLE
Definition: TrackCommonFlags.h:39
TrackSystemController::possibleChange_cutAllowedPt
void possibleChange_cutAllowedPt()
TrackSystemController::vertexCutsAllowed
void vertexCutsAllowed(bool)
Definition: TrackSystemController.cxx:1772
TrackSystemController::possibleChange_trackLabelPosOffset
void possibleChange_trackLabelPosOffset()
TrackSystemController.h
TrackSystemController::Imp::last_trackLabelPosOffset
QList< int > last_trackLabelPosOffset
Definition: TrackSystemController.cxx:112
TrackSystemController::propagator
Trk::IExtrapolator * propagator() const
Definition: TrackSystemController.cxx:1631
TrackCommonFlags::EXTENDTRACKWITHPRDS
@ EXTENDTRACKWITHPRDS
Definition: TrackCommonFlags.h:36
MuonEDMPrinterTool.h
TrackSystemController::Imp::last_cutRequiredDetectorElement
QString last_cutRequiredDetectorElement
Definition: TrackSystemController.cxx:137
TrackSystemController::Imp::numberOfSelectedPRDs
unsigned numberOfSelectedPRDs
Definition: TrackSystemController.cxx:99
TrackSystemController::possibleChange_trackFitter
void possibleChange_trackFitter()
TrackSystemController::trackLabelTrkOffset
float trackLabelTrkOffset()
Percentage of postion along track.
Definition: TrackSystemController.cxx:2188
index
Definition: index.py:1
Trk::Track::trackStateOnSurfaces
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
TrackSystemController::Imp::updateComboBoxContents
static bool updateComboBoxContents(QComboBox *cb, const QStringList &l, QString &restoredSelection)
Definition: TrackSystemController.cxx:1873
TrackSystemController::actualRestoreSettings
void actualRestoreSettings(VP1Deserialise &)
Definition: TrackSystemController.cxx:928
TrackSystemController::customColouredTSOSParts
TrackCommonFlags::TSOSPartsFlags customColouredTSOSParts() const
Definition: TrackSystemController.cxx:1537
TrackSystemController::Imp::last_shownTSOSParts
TrackCommonFlags::TSOSPartsFlags last_shownTSOSParts
Definition: TrackSystemController.cxx:122
TrackSystemController::cutOnlyVertexAssocTracks
bool cutOnlyVertexAssocTracks() const
Definition: TrackSystemController.cxx:1779
VP1MaterialButton
Definition: VP1MaterialButton.h:46
VP1HelperClassBase::messageVerbose
void messageVerbose(const QString &) const
Definition: VP1HelperClassBase.cxx:78
TrackSystemController::Imp::restoredLastPropagator
QString restoredLastPropagator
Definition: TrackSystemController.cxx:93
TrackSystemController::Imp::getMat
SoMaterial * getMat(VP1MaterialButton *) const
Definition: TrackSystemController.cxx:1272
TrackCommonFlags::REFITSINGLETRACK
@ REFITSINGLETRACK
Definition: TrackCommonFlags.h:36
TrackSysCommonData::node
SoNode * node(TrackHandleBase *h)
Returns the node associated with this handle.
Definition: TrackSysCommonData.cxx:168
TrackCommonFlags::AUTO
@ AUTO
Definition: TrackCommonFlags.h:39
TrackSystemController::Imp::fittersCreated
static bool fittersCreated
Definition: TrackSystemController.cxx:155
TrackSystemController::possibleChange_nStdDevForParamErrors
void possibleChange_nStdDevForParamErrors()
TrackSystemController::Imp::ascObjDrawStyle
SoDrawStyle * ascObjDrawStyle
Definition: TrackSystemController.cxx:89
TrackSystemController::Imp::trackcollwidget
TrackCollWidget * trackcollwidget
Definition: TrackSystemController.cxx:83
fillPileUpNoiseLumi.connect
string connect
Definition: fillPileUpNoiseLumi.py:70
TrackSystemController::ExtendTrack
@ ExtendTrack
Definition: TrackSystemController.h:82
TrackSystemController::availableFittersChanged
void availableFittersChanged(const QStringList &)
Definition: TrackSystemController.cxx:1924
VP1Controller::initDialog
void initDialog(T &theUI, QPushButton *launchbutton, QAbstractButton *enabledButton=0)
Definition: VP1Controller.h:144
TrackSystemController::Imp::last_trackLabels
TrackLabelModes last_trackLabels
Definition: TrackSystemController.cxx:110
CSV_InDetExporter.new
new
Definition: CSV_InDetExporter.py:145
TrackSystemController::nStdDevForParamErrors
double nStdDevForParamErrors() const
Definition: TrackSystemController.cxx:1596
TrackSystemController::TrackSystemController
TrackSystemController(IVP1System *sys)
Definition: TrackSystemController.cxx:261
TrackSystemController::Imp::last_trackFitter
Trk::ITrackFitter * last_trackFitter
Definition: TrackSystemController.cxx:117
TrackSystemController::assocObjDetailLevel
TrackCommonFlags::DETAILLEVEL assocObjDetailLevel() const
Definition: TrackSystemController.cxx:1762
TrackSystemController::shownTrackParts
TrackCommonFlags::TrackPartsFlags shownTrackParts() const
Definition: TrackSystemController.cxx:1477
TrackCommonFlags::MuonProjections
@ MuonProjections
Definition: TrackCommonFlags.h:28
VP1QtUtils.h
TrackSystemController::Imp::ui
Ui::VP1TrackControllerForm ui
Definition: TrackSystemController.cxx:82
VP1ParticleData.h
VP1SoMaterialMixer::getMixedMaterial
SoMaterial * getMixedMaterial(const std::set< SoMaterial * > &)
Definition: VP1SoMaterialMixer.cxx:273
TrackSysCommonData::ascObjSelectionManager
AscObjSelectionManager * ascObjSelectionManager() const
Definition: TrackSysCommonData.h:115
TrackCommonFlags::TSOS_AnySurface
@ TSOS_AnySurface
Definition: TrackCommonFlags.h:60
TrackSystemController::possibleChange_customColouredTSOSParts
void possibleChange_customColouredTSOSParts()
TrackSystemController::updateAscObjDrawStyle
void updateAscObjDrawStyle()
Definition: TrackSystemController.cxx:1422
TrackSystemController::FitQuality
@ FitQuality
Definition: TrackSystemController.h:173
TrackSystemController::vertexProjectionAngle
int vertexProjectionAngle() const
Definition: TrackSystemController.cxx:1488
TrackCommonFlags::TSOS_MaterialEffectsWithNoDeltaE
@ TSOS_MaterialEffectsWithNoDeltaE
bit 12
Definition: TrackCommonFlags.h:55
TrackSystemController::IgnoreMEOT
@ IgnoreMEOT
Definition: TrackSystemController.h:82
TrackSystemController::possibleChange_useShortTRTMeasurements
void possibleChange_useShortTRTMeasurements()
IExtrapolator.h
TrackCommonFlags::TSOS_MeasError
@ TSOS_MeasError
bit 3
Definition: TrackCommonFlags.h:47
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
TrackCommonFlags::FITTERMODE
FITTERMODE
Definition: TrackCommonFlags.h:36
TrackCommonFlags::TSOS_TrackParsErrorsPerigee
@ TSOS_TrackParsErrorsPerigee
bit 2
Definition: TrackCommonFlags.h:46
TrackHandle_TrkTrack::trkTrackPointer
const Trk::Track * trkTrackPointer() const
Definition: TrackHandle_TrkTrack.h:43
TrackSysCommonData.h
TrackSystemController::extrapolateToThisVolumeChanged
void extrapolateToThisVolumeChanged(void)
TrackSystemController::parTubeErrorsDrawCylinders
bool parTubeErrorsDrawCylinders() const
Definition: TrackSystemController.cxx:1602
TrackSystemController::Imp::last_showTotMomentumOnMultiTrackSelection
bool last_showTotMomentumOnMultiTrackSelection
Definition: TrackSystemController.cxx:142
Trk::undefined
@ undefined
Definition: ParticleHypothesis.h:38
TrackSystemController::alignmentShiftValue
std::vector< double > alignmentShiftValue()
Definition: TrackSystemController.cxx:2159
TrackSystemController::ascObjDrawStyle
SoDrawStyle * ascObjDrawStyle() const
Definition: TrackSystemController.cxx:1458
TrackCollWidget.h
x
#define x
VP1String::str
static QString str(const QString &s)
Definition: VP1String.h:49
TrackSystemController::hideCustomSurfaces
bool hideCustomSurfaces() const
Definition: TrackSystemController.cxx:1577
VP1HelperClassBase::messageDebug
void messageDebug(const QString &) const
Definition: VP1HelperClassBase.cxx:65
Trk::ITrackFitter
Definition: ITrackFitter.h:42
VP1Controller::connectToLastUpdateSlot
void connectToLastUpdateSlot(QObject *sender, const char *signal)
Definition: VP1Controller.cxx:327
mapkey::sys
@ sys
Definition: TElectronEfficiencyCorrectionTool.cxx:42
TrackSystemController::cutRequiredDetectorElement
QString cutRequiredDetectorElement() const
Definition: TrackSystemController.cxx:1847
TrackCollWidget
Definition: TrackCollWidget.h:23
TrackSystemController::Imp::last_trackTubeRadius
double last_trackTubeRadius
Definition: TrackSystemController.cxx:109
TrackSystemController::shownTSOSParts
TrackCommonFlags::TSOSPartsFlags shownTSOSParts() const
Definition: TrackSystemController.cxx:1503
TrackSystemController::emitExtrapolateToHereChanged
void emitExtrapolateToHereChanged(int)
Definition: TrackSystemController.cxx:1656
TrackSystemController::m_d
Imp * m_d
Definition: TrackSystemController.h:229
TrackSystemController::nameOfNewlyFittedCollections
QString nameOfNewlyFittedCollections() const
Definition: TrackSystemController.cxx:1470
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:797
TrackSystemController::Imp::restoredLastFitter
QString restoredLastFitter
Definition: TrackSystemController.cxx:94
VP1QtUtils::environmentVariableValue
static QString environmentVariableValue(const QString &name)
Definition: VP1QtUtils.cxx:117
TrackSystemController::Imp::ui_ascobjs
Ui::TrackSysSettingsAscObjsForm ui_ascobjs
Definition: TrackSystemController.cxx:149
TrackSystemController::measurementsShorttubesScale
double measurementsShorttubesScale() const
Definition: TrackSystemController.cxx:1590
TrackSystemController::Imp::last_useShortMDTMeasurements
bool last_useShortMDTMeasurements
Definition: TrackSystemController.cxx:125
Track.h
TrackSystemController::Imp::ui_objBrowser
Ui::TrackObjectBrowser ui_objBrowser
Definition: TrackSystemController.cxx:151
TrackSystemController::cutTruthExcludeNeutrals
bool cutTruthExcludeNeutrals() const
Definition: TrackSystemController.cxx:1866
VP1QtInventorUtils.h
TrackSystemController::cutAllowedEta
VP1Interval cutAllowedEta() const
Definition: TrackSystemController.cxx:1820
TrackSystemController::labelYOffset
int labelYOffset()
Absolute y offset.
Definition: TrackSystemController.cxx:2207
TrackSystemController::currentSettingsVersion
int currentSettingsVersion() const
Definition: TrackSystemController.cxx:678
TrackCommonFlags::TSOS_AnyMeasCompetingRioOnTrack
@ TSOS_AnyMeasCompetingRioOnTrack
Definition: TrackCommonFlags.h:65
TrackSystemController::possibleChange_trackLabelTrkOffset
void possibleChange_trackLabelTrkOffset()
instance
std::map< std::string, double > instance
Definition: Run_To_Get_Tags.h:8
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
cm
const double cm
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/FCAL_ChannelMap.cxx:25
TrackSystemController::Imp::last_cutOnlyVertexAssocTracks
bool last_cutOnlyVertexAssocTracks
Definition: TrackSystemController.cxx:141
TrackSystemController::trackFitter
Trk::ITrackFitter * trackFitter() const
Definition: TrackSystemController.cxx:1666
AscObjSelectionManager::pretendUserClicked
void pretendUserClicked(AssociatedObjectHandleBase *)
Definition: AscObjSelectionManager.cxx:259
TrackSystemController::Imp::last_materialEffectsOnTrackScale
double last_materialEffectsOnTrackScale
Definition: TrackSystemController.cxx:131
CylinderVolumeBounds.h
TrackSystemController::alignmentShiftLevel
int alignmentShiftLevel()
Definition: TrackSystemController.cxx:2170
TrackSystemController::Direction
@ Direction
Definition: TrackSystemController.h:173
Volume.h
VP1QtInventorUtils::getValuePointSizeSlider
static double getValuePointSizeSlider(const QSlider *)
Definition: VP1QtInventorUtils.cxx:1628
TrackSystemController::Imp::extrapolatorsCreated
static bool extrapolatorsCreated
Definition: TrackSystemController.cxx:153
beamspotnt.labels
list labels
Definition: bin/beamspotnt.py:1447
checkTP.save
def save(self, fileName="./columbo.out")
Definition: checkTP.py:178
IVP1System
Definition: IVP1System.h:36
TrackSystemController::printVerboseInfoOnSingleSelection
bool printVerboseInfoOnSingleSelection() const
Definition: TrackSystemController.cxx:1973
TrackSystemController::drawMeasGlobalPositions
bool drawMeasGlobalPositions() const
Definition: TrackSystemController.cxx:1583
TrackCommonFlags::TSOS_TrackPars
@ TSOS_TrackPars
bit 0
Definition: TrackCommonFlags.h:44
TrackCommonFlags::MULTITRACK
@ MULTITRACK
Definition: TrackCommonFlags.h:33
TrackSystemController::Imp::ui_int
Ui::TrackSysSettingsInteractionsForm ui_int
Definition: TrackSystemController.cxx:146
TrackSystemController::possibleChange_cutTruthFromIROnly
void possibleChange_cutTruthFromIROnly()
TrackSystemController::objectBrowserClicked
void objectBrowserClicked(QTreeWidgetItem *item, int)
Definition: TrackSystemController.cxx:2061
TrackSystemController::Imp::last_measurementsShorttubesScale
double last_measurementsShorttubesScale
Definition: TrackSystemController.cxx:127
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
TrackSysCommonData
Definition: TrackSysCommonData.h:47
TrackSystemController::possibleChange_propagator
void possibleChange_propagator()
TrackSystemController::cutTruthFromIROnly
bool cutTruthFromIROnly() const
Definition: TrackSystemController.cxx:1854
TrackSystemController::availableExtrapolatorsChanged
void availableExtrapolatorsChanged(const QStringList &)
Definition: TrackSystemController.cxx:1936
TrackSystemController::Imp::last_cutExcludeBarcodeZero
bool last_cutExcludeBarcodeZero
Definition: TrackSystemController.cxx:139
TrackSystemController::Imp::muonSpectrometerEntryLayer
Trk::Volume * muonSpectrometerEntryLayer
Definition: TrackSystemController.cxx:163
TrackCommonFlags::DETAILED
@ DETAILED
Definition: TrackCommonFlags.h:39
TrackSystemController::useShortMDTMeasurements
bool useShortMDTMeasurements() const
Definition: TrackSystemController.cxx:1565
VP1QtUtils::environmentVariableIsOn
static bool environmentVariableIsOn(const QString &name)
Definition: VP1QtUtils.cxx:127
lumiFormat.i
int i
Definition: lumiFormat.py:92
VP1SoMaterialMixer.h
TrackSystemController::possibleChange_propagationOptions
void possibleChange_propagationOptions()
beamspotman.n
n
Definition: beamspotman.py:731
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
TrackSystemController::Imp::common
TrackSysCommonData * common
Definition: TrackSystemController.cxx:159
TrackSystemController::muonEDMPrinterTool
Muon::MuonEDMPrinterTool * muonEDMPrinterTool() const
Definition: TrackSystemController.cxx:1678
TrackSystemController::Imp::objBrowserWidget
QTreeWidget * objBrowserWidget
Definition: TrackSystemController.cxx:158
Trk::electron
@ electron
Definition: ParticleHypothesis.h:27
TrackSystemController::possibleChange_measurementsShorttubesScale
void possibleChange_measurementsShorttubesScale()
TrackCommonFlags::VertexProjections
@ VertexProjections
Definition: TrackCommonFlags.h:29
TrackSystemController::customMatSurfaces
SoMaterial * customMatSurfaces() const
Definition: TrackSystemController.cxx:1395
sel
sel
Definition: SUSYToolsTester.cxx:92
VP1AvailableToolsHelper::addMonitoredTypes
void addMonitoredTypes(const QStringList &, const QStringList &ignoreList=QStringList())
Definition: VP1AvailableToolsHelper.cxx:112
Muon::MuonEDMPrinterTool
Helper tool to print EDM objects to string in a fix format.
Definition: MuonEDMPrinterTool.h:43
TrackCommonFlags::ActualPath
@ ActualPath
Definition: TrackCommonFlags.h:26
TrackSystemController::possibleChange_cutRequiredDetectorElement
void possibleChange_cutRequiredDetectorElement()
TrackSystemController::setCommonData
void setCommonData(TrackSysCommonData *)
set pointer to the common data
Definition: TrackSystemController.cxx:2057
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
TrackSystemController::Imp::materialFallback
SoMaterial * materialFallback
Definition: TrackSystemController.cxx:87
TrackSystemController::Imp::muonSpectrometerExitLayer
Trk::Volume * muonSpectrometerExitLayer
Definition: TrackSystemController.cxx:164
TrackSystemController::Imp::createMaterial
static SoMaterial * createMaterial(const int &r, const int &g, const int &b)
Definition: TrackSystemController.cxx:610
VP1JobConfigInfo::hasSCTGeometry
static bool hasSCTGeometry()
Definition: VP1JobConfigInfo.cxx:128
VP1ParticleData::particleCharge
static double particleCharge(const int &pdgcode, bool &ok)
Definition: VP1ParticleData.cxx:104
TrackSystemController::Imp::last_propMaxRadius
float last_propMaxRadius
Definition: TrackSystemController.cxx:116
TrackSystemController::trackLabels
TrackLabelModes trackLabels()
Definition: TrackSystemController.cxx:2217
TrackSystemController::customMatHoleParameters
SoMaterial * customMatHoleParameters() const
Definition: TrackSystemController.cxx:1377
TrackCommonFlags::SINGLEOBJECT
@ SINGLEOBJECT
Definition: TrackCommonFlags.h:33
TrackHandle_TrkTrack
Definition: TrackHandle_TrkTrack.h:29
TrackCommonFlags::TRACKFIT
@ TRACKFIT
Definition: TrackCommonFlags.h:33
TrackSystemController::possibleChange_parTubeErrorsDrawCylinders
void possibleChange_parTubeErrorsDrawCylinders()
TrackSystemController::possibleChange_useShortMDTMeasurements
void possibleChange_useShortMDTMeasurements()
TrackSystemController::P
@ P
Definition: TrackSystemController.h:172
TrackSystemController::Imp::last_nStdDevForParamErrors
double last_nStdDevForParamErrors
Definition: TrackSystemController.cxx:128
TrackCommonFlags::COMBINETWOTRACKS
@ COMBINETWOTRACKS
Definition: TrackCommonFlags.h:36
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.AtlRunQueryLib.options
options
Definition: AtlRunQueryLib.py:379
TrackSystemController::Imp::last_drawMeasGlobalPositions
bool last_drawMeasGlobalPositions
Definition: TrackSystemController.cxx:126
VP1TrackSystem
Definition: VP1TrackSystem.h:36
TrackSystemController::cutAllowedPhi
QList< VP1Interval > cutAllowedPhi() const
Definition: TrackSystemController.cxx:1826
AscObjSelectionManager.h
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
Trk::muon
@ muon
Definition: ParticleHypothesis.h:28
TrackSystemController::cutRequiredNHits
QList< unsigned > cutRequiredNHits() const
Definition: TrackSystemController.cxx:1832
TrackSystemController::Imp::ui_proj
Ui::TrackSysSettingsProjectionsForm ui_proj
Definition: TrackSystemController.cxx:147
TrackSystemController::rerandomise
void rerandomise()
VP1Deserialise
Definition: VP1Deserialise.h:44
TrackSystemController::Imp::last_propagator
Trk::IExtrapolator * last_propagator
Definition: TrackSystemController.cxx:113
AscObj_TSOS.h
VP1JobConfigInfo::hasTRTGeometry
static bool hasTRTGeometry()
Definition: VP1JobConfigInfo.cxx:129
TrackSystemController::printInfoOnSingleSelection
bool printInfoOnSingleSelection() const
Definition: TrackSystemController.cxx:1967
TrackSystemController::fitterParticleHypthesis
Trk::ParticleHypothesis fitterParticleHypthesis() const
Definition: TrackSystemController.cxx:1734
TrackSystemController::Imp::last_cutRequiredNHits
QList< unsigned > last_cutRequiredNHits
Definition: TrackSystemController.cxx:136
calibdata.ct
ct
Definition: calibdata.py:418
TrackSystemController::Hits
@ Hits
Definition: TrackSystemController.h:172
TrackSystemController::Pid
@ Pid
Definition: TrackSystemController.h:172
TrackSystemController::customMatParameters
SoMaterial * customMatParameters() const
Definition: TrackSystemController.cxx:1371
TrackSystemController::Imp::ui_col
Ui::TrackSysSettingsColouringForm ui_col
Definition: TrackSystemController.cxx:144
VP1Controller
Definition: VP1Controller.h:45
TrackSystemController::possibleChange_shownTSOSParts
void possibleChange_shownTSOSParts()
min
#define min(a, b)
Definition: cfImp.cxx:40
TrackCommonFlags::TSOS_AnyMaterialEffects
@ TSOS_AnyMaterialEffects
Definition: TrackCommonFlags.h:59
TrackCommonFlags::TSOS_MaterialEffects
@ TSOS_MaterialEffects
bit 13
Definition: TrackCommonFlags.h:56
TrackSystemController::Imp::toolhelper_extrapolators
VP1AvailableToolsHelper * toolhelper_extrapolators
Definition: TrackSystemController.cxx:104
TrackSystemController::initTools
void initTools()
Definition: TrackSystemController.cxx:533
TrackSystemController::actualSaveSettings
void actualSaveSettings(VP1Serialise &) const
Definition: TrackSystemController.cxx:684
TrackSystemController::Imp::numberOfSelectedTracks
unsigned numberOfSelectedTracks
Definition: TrackSystemController.cxx:100
TrackSystemController::customMatMaterialEffects
SoMaterial * customMatMaterialEffects() const
Definition: TrackSystemController.cxx:1389
TrackSystemController::Imp::last_customColouredTSOSParts
TrackCommonFlags::TSOSPartsFlags last_customColouredTSOSParts
Definition: TrackSystemController.cxx:123
TrackSystemController::fitterMode
TrackCommonFlags::FITTERMODE fitterMode() const
Definition: TrackSystemController.cxx:1713
Trk::CylinderVolumeBounds
Definition: CylinderVolumeBounds.h:70
TrackSystemController::fitterRemoveOutliers
bool fitterRemoveOutliers() const
Definition: TrackSystemController.cxx:1729
TrackSystemController::cutOnlyVertexAssocTracksChanged
void cutOnlyVertexAssocTracksChanged(bool)
TrackSystemController::getMaterialForPDGCode
SoMaterial * getMaterialForPDGCode(const int &pdgcode) const
Definition: TrackSystemController.cxx:1287
TrackCommonFlags::TSOS_AnyMeasRioOnTrack
@ TSOS_AnyMeasRioOnTrack
Definition: TrackCommonFlags.h:64
SoCooperativeSelection.h
TrackSystemController::refit
void refit()
TrackSystemController::customMatMeasurementsOutliers
SoMaterial * customMatMeasurementsOutliers() const
Definition: TrackSystemController.cxx:1365
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
VP1HelperClassBase::systemBase
IVP1System * systemBase() const
Definition: VP1HelperClassBase.h:50
TrackSystemController::possibleChange_cutAllowedEta
void possibleChange_cutAllowedEta()
python.selection.number
number
Definition: selection.py:20
TrackSystemController::Imp::ensureFittersCreated
static void ensureFittersCreated(IVP1System *)
Definition: TrackSystemController.cxx:226
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TrackSystemController::Pt
@ Pt
Definition: TrackSystemController.h:172
TrackCommonFlags::NoParts
@ NoParts
Definition: TrackCommonFlags.h:25
TrackSystemController::Imp::last_cutAllowedP
VP1Interval last_cutAllowedP
Definition: TrackSystemController.cxx:133
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
TrackSystemController::Imp::last_useShortTRTMeasurements
bool last_useShortTRTMeasurements
Definition: TrackSystemController.cxx:124
TrackSystemController::possibleChange_trackLabels
void possibleChange_trackLabels()
TrackSystemController::toString
static QString toString(const T &t)
Definition: TrackSystemController.h:233
TrackSystemController
Definition: TrackSystemController.h:53
Trk::nonInteracting
@ nonInteracting
Definition: ParticleHypothesis.h:25
TrackSystemController::possibleChange_showTotMomentumOnMultiTrackSelection
void possibleChange_showTotMomentumOnMultiTrackSelection()
TrackCommonFlags::TSOS_SurfacesDetElem
@ TSOS_SurfacesDetElem
bit 9
Definition: TrackCommonFlags.h:52
VP1MaterialButton::createMaterial
static SoMaterial * createMaterial(const QColor &, const double &brightness=0.0, const double &transp=0.0)
Definition: VP1MaterialButton.cxx:786
TrackCommonFlags::TSOS_Hole
@ TSOS_Hole
bit 14
Definition: TrackCommonFlags.h:57
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
charge
double charge(const T &p)
Definition: AtlasPID.h:494
TrackSystemController::materialEffectsOnTrackScale
double materialEffectsOnTrackScale() const
Definition: TrackSystemController.cxx:1625
TrackSystemController::Imp::ui_shiftmuonchambers
Ui::TrackSysShiftMuonChambersForm ui_shiftmuonchambers
Definition: TrackSystemController.cxx:150
TrackSystemController::Imp::last_parTubeErrorsDrawCylinders
bool last_parTubeErrorsDrawCylinders
Definition: TrackSystemController.cxx:129
TrackSystemController::Imp::ascObjComplexity
SoComplexity * ascObjComplexity
Definition: TrackSystemController.cxx:90
TrackSysCommonData::trackHandle
TrackHandleBase * trackHandle(SoNode *n)
Definition: TrackSysCommonData.cxx:157
item
Definition: ItemListSvc.h:43
TrackSystemController::cutAllowedPt
VP1Interval cutAllowedPt() const
Definition: TrackSystemController.cxx:1786
TrackSystemController::Imp::last_assocObjDetailLevel
TrackCommonFlags::DETAILLEVEL last_assocObjDetailLevel
Definition: TrackSystemController.cxx:121
Trk::IExtrapolator
Definition: IExtrapolator.h:62
TrackSystemController::orientAndZoomOnSingleSelection
bool orientAndZoomOnSingleSelection() const
Definition: TrackSystemController.cxx:1961
Trk::kaon
@ kaon
Definition: ParticleHypothesis.h:30
TrackSystemController::customMatParameterErrors
SoMaterial * customMatParameterErrors() const
Definition: TrackSystemController.cxx:1383
TrackSystemController::emitRefit
void emitRefit()
Definition: TrackSystemController.cxx:1998
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
TrackHandle_TrkTrack.h
TrackCommonFlags::SELECTIONMODE
SELECTIONMODE
Definition: TrackCommonFlags.h:33
TrackSystemController::cutExcludeBarcodeZero
bool cutExcludeBarcodeZero() const
Definition: TrackSystemController.cxx:1860
TrackSystemController::possibleChange_showTruthAscObjs
void possibleChange_showTruthAscObjs()
TrackSystemController::possibleChange_propMaxRadius
void possibleChange_propMaxRadius()
VP1Interval
Definition: VP1Interval.h:23
TrackCommonFlags::TSOS_AnyMeasurementNotOutlier
@ TSOS_AnyMeasurementNotOutlier
Definition: TrackCommonFlags.h:62
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
TrackSystemController::printTotMomentumOnMultiTrackSelection
bool printTotMomentumOnMultiTrackSelection() const
Definition: TrackSystemController.cxx:1979
TrackHandleBase::getVisibleMeasurements
QList< AssociatedObjectHandleBase * > getVisibleMeasurements() const
Definition: TrackHandleBase.cxx:1979
TrackSystemController::Imp::noneAvailString
static const QString noneAvailString
Definition: TrackSystemController.cxx:98
TrackSystemController::Imp::matmixer
VP1SoMaterialMixer * matmixer
Definition: TrackSystemController.cxx:103
TrackSystemController::selectionMode
TrackCommonFlags::SELECTIONMODE selectionMode() const
Definition: TrackSystemController.cxx:1701
TrackCommonFlags::FROMPRDS
@ FROMPRDS
Definition: TrackCommonFlags.h:36
TrackSystemController::Imp
Definition: TrackSystemController.cxx:79
VP1ToolAccessHelper.h
TrackCommonFlags::TSOS_AnyMeasurementOutlier
@ TSOS_AnyMeasurementOutlier
Definition: TrackCommonFlags.h:63
TrackSystemController::trackObjBrowser
QTreeWidget * trackObjBrowser() const
Returns a pointer to the Track Object Browser (if it exists)
Definition: TrackSystemController.cxx:2049
TrackSystemController::updateAscObjComplexity
void updateAscObjComplexity()
Definition: TrackSystemController.cxx:1434
TRT_PAI_physicsConstants::mb
const double mb
1mb to cm2
Definition: TRT_PAI_physicsConstants.h:15
TrackSystemController::possibleChange_materialEffectsOnTrackScale
void possibleChange_materialEffectsOnTrackScale()
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
TrackCommonFlags::TSOS_AnyParsErrors
@ TSOS_AnyParsErrors
Definition: TrackCommonFlags.h:66
TrackSystemController::Imp::last_selectionMode
TrackCommonFlags::SELECTIONMODE last_selectionMode
Definition: TrackSystemController.cxx:119
TrackCommonFlags::TSOS_TrackParsErrorsNotPerigee
@ TSOS_TrackParsErrorsNotPerigee
bit 1
Definition: TrackCommonFlags.h:45
TrackSystemController::ascObjComplexity
SoComplexity * ascObjComplexity() const
Definition: TrackSystemController.cxx:1464
TrackSystemController::Imp::lastUpdatedAvailableExtrapolators
QStringList lastUpdatedAvailableExtrapolators
Definition: TrackSystemController.cxx:95
TrackSystemController::Imp::last_cutAllowedPhi
QList< VP1Interval > last_cutAllowedPhi
Definition: TrackSystemController.cxx:135
TrackSystemController::propMaxRadius
float propMaxRadius() const
Definition: TrackSystemController.cxx:1651
TrackSystemController::common
TrackSysCommonData * common() const
Returns a pointer to the common data (if it exists)
Definition: TrackSystemController.cxx:2054
TrackCommonFlags::TSOS_NoObjects
@ TSOS_NoObjects
Definition: TrackCommonFlags.h:43
TrackSystemController::Imp::last_shownTrackParts
TrackCommonFlags::TrackPartsFlags last_shownTrackParts
Definition: TrackSystemController.cxx:107
Trk::photon
@ photon
Definition: ParticleHypothesis.h:32
VP1ToolAccessHelper
Definition: VP1ToolAccessHelper.h:29
TrackSystemController::Imp::ui_extrap
Ui::TrackSysSettingsExtrapolationsForm ui_extrap
Definition: TrackSystemController.cxx:145
TrackSystemController::collWidget
TrackCollWidget * collWidget() const
Definition: TrackSystemController.cxx:1264
TrackSystemController::possibleChange_vertexProjectionAngle
void possibleChange_vertexProjectionAngle()
VP1HelperClassBase::message
void message(const QString &) const
Definition: VP1HelperClassBase.cxx:49
TrackCommonFlags::DETAILLEVEL
DETAILLEVEL
Definition: TrackCommonFlags.h:39
TrackSystemController::possibleChange_drawMeasGlobalPositions
void possibleChange_drawMeasGlobalPositions()
doL1CaloHVCorrections.parts
parts
Definition: doL1CaloHVCorrections.py:334
TrackSystemController::~TrackSystemController
virtual ~TrackSystemController()
Definition: TrackSystemController.cxx:657
TrackSystemController::showTruthAscObjs
bool showTruthAscObjs() const
Definition: TrackSystemController.cxx:1756
TrackSystemController::NoPropOptions
@ NoPropOptions
Definition: TrackSystemController.h:82
TrackSystemController::ignoreMeasurementEffectsOnTrackInProp
bool ignoreMeasurementEffectsOnTrackInProp()
If true (default) don't use TSOS with MEOT to draw track points.
Definition: TrackSystemController.cxx:1660
VP1AvailableToolsHelper::availableTools
QStringList availableTools() const
Definition: VP1AvailableToolsHelper.cxx:239
VP1JobConfigInfo.h
TrackSystemController::possibleChange_cutTruthExcludeNeutrals
void possibleChange_cutTruthExcludeNeutrals()
TrackSystemController::Imp::last_numberOfPointsOnCircles
int last_numberOfPointsOnCircles
Definition: TrackSystemController.cxx:130
TrackSystemController::customMatMeasurements
SoMaterial * customMatMeasurements() const
Definition: TrackSystemController.cxx:1359
TrackSystemController::Imp::last_cutAllowedPt
VP1Interval last_cutAllowedPt
Definition: TrackSystemController.cxx:132
VP1AvailableToolsHelper
Definition: VP1AvailableToolsHelper.h:30
TrackSystemController::possibleChange_shownTrackParts
void possibleChange_shownTrackParts()
TrackCommonFlags::TSOS_SurfacesCustom
@ TSOS_SurfacesCustom
bit 10
Definition: TrackCommonFlags.h:53
TrackSystemController::Imp::initMaterials
void initMaterials()
Definition: TrackSystemController.cxx:617
AscObj_TSOS::trackStateOnSurface
const Trk::TrackStateOnSurface * trackStateOnSurface() const
Definition: AscObj_TSOS.h:71
TrackSystemController::possibleChange_numberOfPointsOnCircles
void possibleChange_numberOfPointsOnCircles()
TrackSystemController::possibleChange_cutOnlyVertexAssocTracks
void possibleChange_cutOnlyVertexAssocTracks()
VP1JobConfigInfo::hasPixelGeometry
static bool hasPixelGeometry()
Definition: VP1JobConfigInfo.cxx:127
TrackSystemController::getMaterialForMomentum
SoMaterial * getMaterialForMomentum(const double &absmom) const
Definition: TrackSystemController.cxx:1341
TrackSystemController::possibleChange_cutExcludeBarcodeZero
void possibleChange_cutExcludeBarcodeZero()
TrackCommonFlags::TSOS_TubeSurfaces
@ TSOS_TubeSurfaces
bit 11
Definition: TrackCommonFlags.h:54
TrackSystemController::Imp::theclass
TrackSystemController * theclass
Definition: TrackSystemController.cxx:81
TrackSystemController::Imp::ensureExtrapolatorsCreated
static void ensureExtrapolatorsCreated(IVP1System *)
Definition: TrackSystemController.cxx:194
TrackSystemController::Imp::toolaccesshelper
VP1ToolAccessHelper * toolaccesshelper
Definition: TrackSystemController.cxx:106
TrackSystemController::Imp::toolhelper_fitters
VP1AvailableToolsHelper * toolhelper_fitters
Definition: TrackSystemController.cxx:105
TrackSystemController::showTotMomentumOnMultiTrackSelection
bool showTotMomentumOnMultiTrackSelection() const
Definition: TrackSystemController.cxx:1985
VP1JobConfigInfo::hasMuonGeometry
static bool hasMuonGeometry()
Definition: VP1JobConfigInfo.cxx:134
TrackSystemController::Imp::lastUpdatedAvailableFitters
QStringList lastUpdatedAvailableFitters
Definition: TrackSystemController.cxx:96
Trk::Volume
Definition: Volume.h:35
TrackSystemController::NoLabels
@ NoLabels
Definition: TrackSystemController.h:172
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
TrackSystemController::possibleChange_assocObjDetailLevel
void possibleChange_assocObjDetailLevel()
TileDCSDataPlotter.tt
tt
Definition: TileDCSDataPlotter.py:874
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
ITrackFitter.h
TrackSystemController::Imp::last_propagationOptions
PropagationOptionFlags last_propagationOptions
Definition: TrackSystemController.cxx:115
TrackSystemController::Imp::calorimeterEntryLayer
Trk::Volume * calorimeterEntryLayer
Definition: TrackSystemController.cxx:162
AscObj_TSOS
Definition: AscObj_TSOS.h:45
VP1SoMaterialMixer
Definition: VP1SoMaterialMixer.h:19
TrackSystemController::updateFitPRDButtonState
void updateFitPRDButtonState()
Definition: TrackSystemController.cxx:2036
VP1Controller::initLastVars
void initLastVars()
Definition: VP1Controller.cxx:68
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
IVP1System.h
TrackSystemController::numberOfPointsOnCircles
int numberOfPointsOnCircles() const
Definition: TrackSystemController.cxx:1608
TrackStateOnSurface.h
node
Definition: memory_hooks-stdcmalloc.h:74
TrackSystemController::setNumberOfSelectedPRDsAndTracks
void setNumberOfSelectedPRDsAndTracks(unsigned prds, unsigned trks)
Definition: TrackSystemController.cxx:2016
VP1TrackSystem.h
TrackSystemController::extrapolateToThisVolume
const Trk::Volume * extrapolateToThisVolume() const
Returns the volume to which we extrapolate ID tracks, or zero if no VolumesSvc found.
Definition: TrackSystemController.cxx:1689
common
Definition: common.py:1
TrackSystemController::Imp::last_vertexProjectionAngle
int last_vertexProjectionAngle
Definition: TrackSystemController.cxx:108
SoCooperativeSelection
Definition: SoCooperativeSelection.h:29
VP1ToolAccessHelper::getToolPointer
toolT * getToolPointer(const QString &toolname, bool silent=false, bool createIfNotExists=false)
TrackSystemController::possibleChange_cutAllowedPhi
void possibleChange_cutAllowedPhi()
VP1ControllerMacros.h
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
TrackSystemController::Imp::last_cutTruthFromIROnly
bool last_cutTruthFromIROnly
Definition: TrackSystemController.cxx:138
TrackSystemController::Imp::last_showTruthAscObjs
bool last_showTruthAscObjs
Definition: TrackSystemController.cxx:120