ATLAS Offline Software
VP1TrackSystem.h
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 // Header file for class VP1TrackSystem //
9 // //
10 // Description: System displaying all track-like objects //
11 // //
12 // Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
13 // Initial version: February 2008 //
14 // //
16 
17 #ifndef VP1TRACKSYSTEM_H
18 #define VP1TRACKSYSTEM_H
19 
22 #include <QList>
23 #include <vector>
24 #include <map>
25 class SoMaterial;
27 class TrackHandleBase;
28 
29 namespace Trk {
30  class Track;
31  class Segment;
32  class PrepRawData;
33  class ITrackFitter;
34 }
35 
37 
38  Q_OBJECT
39 
40 public:
41 
42  VP1TrackSystem(const QString& name="Tracks");
43  virtual ~VP1TrackSystem();
44 
45  void systemcreate(StoreGateSvc* detstore);
46  void systemuncreate();
47  QWidget * buildController();
48  void buildEventSceneGraph(StoreGateSvc* sg, SoSeparator *root);
49  void systemerase();
50  QByteArray saveState();
51  void restoreFromState(QByteArray);
52 
53  void userPickedNode(SoNode* pickedNode, SoPath *pickedPath);
54  void userSelectedSingleNode(SoCooperativeSelection*, SoNode* , SoPath*);//SINGLE
55  void userDeselectedSingleNode(SoCooperativeSelection*, SoNode* , SoPath*);//SINGLE
56  void userChangedSelection(SoCooperativeSelection*, QSet<SoNode*>, QSet<SoPath*>);//TOGGLE/SHIFT
57  void userClickedOnBgd();
60  SoMaterial* materialFromVertex(const TrackHandleBase* trk) const;
61 
62  public Q_SLOTS:
63 
64  //Fixme: Use this or use the prd system directly? The thing to
65  //remember is that we have CSC's/TGC's and RPC's also, so it might
66  //get complicated, and thus better to keep the logic in a single place.
67 // void appropriateMDTProjectionsChanged(int);//0: No projections, 1: Project to end of tubes, 2: Project to end of chamber volume.
68 
69  //Fixme: It would be better (and more like the tracksys/segmentsys->prd sys interaction) just to receive a list of visible vertices/jets and their colours!!
70  // void highlightTracks( const std::vector<std::pair<SoMaterial*,std::set<const Trk::Track*> > >&);//Orders remembered on a per-sender basis, so a given sender
71  //(JetSystem/VertexSystem/...) can override its own orders again.
72  void setApplicableIDProjections( InDetProjFlags::InDetProjPartsFlags pixel,
73  InDetProjFlags::InDetProjPartsFlags sct,
74  InDetProjFlags::InDetProjPartsFlags trt );
75 
76  void setSelectedPRDs(const QList<const Trk::PrepRawData*>&);
77  void updateAlignment();
78  void tracksFromVertexChanged(QList< std::pair<const SoMaterial*, QList< const Trk::Track*> > >& );
79 
80 signals:
81  void touchedMuonChambersChanged(const std::set<GeoPVConstLink>&);//Fixme: Remember to emit in e.g. systemerase (is that automatic?)
82  void objectInMuonChamberSelected(const GeoPVConstLink& chamberPV);//For automatic chamber reorientations
83  void visibleTracksChanged(const std::vector< std::pair<const Trk::Track*, const SoMaterial*> >&);
84  void visibleSegmentsChanged(const std::vector< std::pair<const Trk::Segment*, const SoMaterial*> >&);
85  void usedIDProjectionsChanged( InDetProjFlags::DetTypeFlags );
87  void muonChamberT0sChanged(const std::map<GeoPVConstLink, float>& , int );
88 
89 private Q_SLOTS:
90  void emitTouchedMuonChambersChanged(const std::set<GeoPVConstLink>&);
91  void visibleObjectsChanged();
92  void updateSelectionMode();
95  void refit();//Temporary
96 private:
97 
98  void refitFromPRDs(const Trk::ITrackFitter* currentFitter, QList<const Trk::Track*>& fittedtracks);
99  void refitSingleTrack(const Trk::ITrackFitter* currentFitter, QList<const Trk::Track*>& fittedtracks);
100 
101  class Imp;
102  Imp * m_d;
103 
104 };
105 
106 #endif
107 //
VP1TrackSystem::~VP1TrackSystem
virtual ~VP1TrackSystem()
Definition: VP1TrackSystem.cxx:171
VP1TrackSystem::userChangedSelection
void userChangedSelection(SoCooperativeSelection *, QSet< SoNode * >, QSet< SoPath * >)
Definition: VP1TrackSystem.cxx:739
VP1TrackSystem::m_d
Imp * m_d
Definition: VP1TrackSystem.h:101
VP1TrackSystem::updateShownTotMomentum
void updateShownTotMomentum()
Definition: VP1TrackSystem.cxx:694
IVP13DSystemSimple
Definition: IVP13DSystemSimple.h:24
VP1TrackSystem::visibleObjectsChanged
void visibleObjectsChanged()
Definition: VP1TrackSystem.cxx:457
VP1TrackSystem::VP1TrackSystem
VP1TrackSystem(const QString &name="Tracks")
Definition: VP1TrackSystem.cxx:152
Trk::TrackState::Segment
@ Segment
Definition: TrackStateDefs.h:37
VP1TrackSystem::refitFromPRDs
void refitFromPRDs(const Trk::ITrackFitter *currentFitter, QList< const Trk::Track * > &fittedtracks)
Definition: VP1TrackSystem.cxx:835
VP1TrackSystem::objectInMuonChamberSelected
void objectInMuonChamberSelected(const GeoPVConstLink &chamberPV)
VP1TrackSystem::setSelectedPRDs
void setSelectedPRDs(const QList< const Trk::PrepRawData * > &)
Definition: VP1TrackSystem.cxx:786
VP1TrackSystem::updateAlignment
void updateAlignment()
Special mode to allow in VP1 alignment tests.
Definition: VP1TrackSystem.cxx:939
sendEI_SPB.root
root
Definition: sendEI_SPB.py:34
VP1TrackSystem::userPickedNode
void userPickedNode(SoNode *pickedNode, SoPath *pickedPath)
Definition: VP1TrackSystem.cxx:553
IVP13DSystemSimple.h
VP1TrackSystem::materialFromVertex
SoMaterial * materialFromVertex(const TrackHandleBase *trk) const
Returns the material for the vertex which knows this trackhandle (if known)
Definition: VP1TrackSystem.cxx:1013
Trk::ITrackFitter
Definition: ITrackFitter.h:42
VP1TrackSystem::visibleSegmentsChanged
void visibleSegmentsChanged(const std::vector< std::pair< const Trk::Segment *, const SoMaterial * > > &)
VP1TrackSystem::systemuncreate
void systemuncreate()
Definition: VP1TrackSystem.cxx:192
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
VP1TrackSystem::muonChamberT0sChanged
void muonChamberT0sChanged(const std::map< GeoPVConstLink, float > &, int)
The map is the dt0 per chamber, plus a label identifier, which by convention (!) is 0=Moore,...
VP1TrackSystem::buildController
QWidget * buildController()
Definition: VP1TrackSystem.cxx:207
VP1TrackSystem::Imp
Definition: VP1TrackSystem.cxx:98
VP1TrackSystem::usedIDProjectionsChanged
void usedIDProjectionsChanged(InDetProjFlags::DetTypeFlags)
IVP1System::name
const QString & name() const
Definition: IVP1System.cxx:50
VP1TrackSystem::restoreFromState
void restoreFromState(QByteArray)
Definition: VP1TrackSystem.cxx:425
VP1TrackSystem::visibleTracksChanged
void visibleTracksChanged(const std::vector< std::pair< const Trk::Track *, const SoMaterial * > > &)
VP1TrackSystem
Definition: VP1TrackSystem.h:36
VP1TrackSystem::emitTouchedMuonChambersChanged
void emitTouchedMuonChambersChanged(const std::set< GeoPVConstLink > &)
Definition: VP1TrackSystem.cxx:450
VP1TrackSystem::newTrackSelected
void newTrackSelected(const TrackHandleBase &)
VP1TrackSystem::refitSingleTrack
void refitSingleTrack(const Trk::ITrackFitter *currentFitter, QList< const Trk::Track * > &fittedtracks)
Definition: VP1TrackSystem.cxx:908
python.L1.Config.LegacyTopoMergerMap.signals
signals
Definition: LegacyTopoMergerMap.py:13
VP1TrackSystem::possiblyEmitUsedIDProjectionsChanged
void possiblyEmitUsedIDProjectionsChanged()
Definition: VP1TrackSystem.cxx:776
VP1TrackSystem::systemerase
void systemerase()
Definition: VP1TrackSystem.cxx:359
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
VP1TrackSystem::userClickedOnBgd
void userClickedOnBgd()
Definition: VP1TrackSystem.cxx:640
VP1TrackSystem::buildEventSceneGraph
void buildEventSceneGraph(StoreGateSvc *sg, SoSeparator *root)
Definition: VP1TrackSystem.cxx:228
VP1TrackSystem::systemcreate
void systemcreate(StoreGateSvc *detstore)
Definition: VP1TrackSystem.cxx:177
VP1TrackSystem::setApplicableIDProjections
void setApplicableIDProjections(InDetProjFlags::InDetProjPartsFlags pixel, InDetProjFlags::InDetProjPartsFlags sct, InDetProjFlags::InDetProjPartsFlags trt)
Definition: VP1TrackSystem.cxx:489
VP1TrackSystem::touchedMuonChambersChanged
void touchedMuonChambersChanged(const std::set< GeoPVConstLink > &)
InDetProjFlags.h
VP1TrackSystem::tracksFromVertexChanged
void tracksFromVertexChanged(QList< std::pair< const SoMaterial *, QList< const Trk::Track * > > > &)
Definition: VP1TrackSystem.cxx:989
VP1TrackSystem::selAscs
SoCooperativeSelection * selAscs()
Needed in TrackSystemController::objectBrowserClicked(QTreeWidgetItem * item, int)
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
TrackHandleBase
Definition: TrackHandleBase.h:56
VP1TrackSystem::refit
void refit()
Definition: VP1TrackSystem.cxx:794
VP1TrackSystem::saveState
QByteArray saveState()
Definition: VP1TrackSystem.cxx:408
VP1TrackSystem::userDeselectedSingleNode
void userDeselectedSingleNode(SoCooperativeSelection *, SoNode *, SoPath *)
Definition: VP1TrackSystem.cxx:651
SiliconTech::pixel
@ pixel
VP1TrackSystem::userSelectedSingleNode
void userSelectedSingleNode(SoCooperativeSelection *, SoNode *, SoPath *)
Definition: VP1TrackSystem.cxx:565
SoCooperativeSelection
Definition: SoCooperativeSelection.h:29
VP1TrackSystem::updateSelectionMode
void updateSelectionMode()
Definition: VP1TrackSystem.cxx:524
VP1TrackSystem::selTracks
SoCooperativeSelection * selTracks()
Needed in TrackSystemController::objectBrowserClicked(QTreeWidgetItem * item, int)
Definition: VP1TrackSystem.cxx:934