ATLAS Offline Software
Loading...
Searching...
No Matches
VP1TrackSystem.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 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>
25class SoMaterial;
27class TrackHandleBase;
28
29namespace Trk {
30 class Track;
31 class Segment;
32 class PrepRawData;
33 class ITrackFitter;
34}
35
37
38 Q_OBJECT
39
40public:
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*, const 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
80signals:
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
89private Q_SLOTS:
90 void emitTouchedMuonChambersChanged(const std::set<GeoPVConstLink>&);
95 void refit();//Temporary
96private:
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;
103
104};
105
106#endif
107//
IVP13DSystemSimple(const QString &name, const QString &information, const QString &contact_info)
const QString & name() const
The Athena Transient Store API.
Provides the abstract interface for track fitting in the common ATLAS Tracking EDM.
Base class for all TrackSegment implementations, extends the common MeasurementBase.
void refitSingleTrack(const Trk::ITrackFitter *currentFitter, QList< const Trk::Track * > &fittedtracks)
void tracksFromVertexChanged(QList< std::pair< const SoMaterial *, QList< const Trk::Track * > > > &)
SoCooperativeSelection * selTracks()
Needed in TrackSystemController::objectBrowserClicked(QTreeWidgetItem * item, int)
void visibleTracksChanged(const std::vector< std::pair< const Trk::Track *, const SoMaterial * > > &)
void possiblyEmitUsedIDProjectionsChanged()
QWidget * buildController()
QByteArray saveState()
void touchedMuonChambersChanged(const std::set< GeoPVConstLink > &)
void updateAlignment()
Special mode to allow in VP1 alignment tests.
void visibleSegmentsChanged(const std::vector< std::pair< const Trk::Segment *, const SoMaterial * > > &)
void restoreFromState(QByteArray)
void setSelectedPRDs(const QList< const Trk::PrepRawData * > &)
virtual ~VP1TrackSystem()
void userDeselectedSingleNode(SoCooperativeSelection *, SoNode *, SoPath *)
void objectInMuonChamberSelected(const GeoPVConstLink &chamberPV)
void userPickedNode(SoNode *pickedNode, SoPath *pickedPath)
void systemcreate(StoreGateSvc *detstore)
void updateShownTotMomentum()
void setApplicableIDProjections(InDetProjFlags::InDetProjPartsFlags pixel, InDetProjFlags::InDetProjPartsFlags sct, InDetProjFlags::InDetProjPartsFlags trt)
void userSelectedSingleNode(SoCooperativeSelection *, SoNode *, SoPath *)
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,...
void newTrackSelected(const TrackHandleBase &)
void emitTouchedMuonChambersChanged(const std::set< GeoPVConstLink > &)
void usedIDProjectionsChanged(InDetProjFlags::DetTypeFlags)
void userChangedSelection(SoCooperativeSelection *, const QSet< SoNode * > &, QSet< SoPath * >)
VP1TrackSystem(const QString &name="Tracks")
void buildEventSceneGraph(StoreGateSvc *sg, SoSeparator *root)
SoMaterial * materialFromVertex(const TrackHandleBase *trk) const
Returns the material for the vertex which knows this trackhandle (if known)
SoCooperativeSelection * selAscs()
Needed in TrackSystemController::objectBrowserClicked(QTreeWidgetItem * item, int)
void refitFromPRDs(const Trk::ITrackFitter *currentFitter, QList< const Trk::Track * > &fittedtracks)
Ensure that the ATLAS eigen extensions are properly loaded.