ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
graphics
VP1
VP1Systems
VP1TrackSystems
src
TrackSysCommonData.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
7
// //
8
// Implementation of class TrackSysCommonData //
9
// //
10
// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
11
// Initial version: April 2008 //
12
// //
14
15
#include "
VP1TrackSystems/TrackSysCommonData.h
"
16
17
#include "
VP1TrackSystems/VP1TrackSystem.h
"
18
#include "
VP1TrackSystems/AscObjSelectionManager.h
"
19
#include "
VP1TrackSystems/TrackPropagationHelper.h
"
20
#include "
VP1TrackSystems/TrackLODManager.h
"
21
#include "
VP1TrackSystems/TrackSystemController.h
"
22
#include "
VP1TrackSystems/VP1TrackSanity.h
"
23
#include "
VP1TrackSystems/TrackHandle_TrkTrack.h
"
24
#include "
VP1TrackSystems/TrackHandleBase.h
"
25
26
#include "
VP1PRDSystems/MuonChamberProjectionHelper.h
"
27
#include "
VP1PRDSystems/TouchedMuonChamberHelper.h
"
28
29
#include "
VP1GuideLineSystems/InDetProjHelper.h
"
30
31
#include "
VP1Base/VisibleObjectToMaterialHelper.h
"
32
#include "
VP1Base/VP1Msg.h
"
33
#include "
VP1Utils/VP1SGAccessHelper.h
"
34
35
#include <Inventor/C/errors/debugerror.h>
36
#include <Inventor/nodes/SoVertexProperty.h>
37
#include <Inventor/nodes/SoPointSet.h>
38
#include <Inventor/nodes/SoSeparator.h>
39
40
#include <QTreeWidgetItem>
41
42
#include<map>
43
44
//____________________________________________________________________
45
class
TrackSysCommonData::Imp
{
46
public
:
47
std::map<SoNode*,TrackHandleBase*>
nodeToTrackHandle
;
48
};
49
50
//____________________________________________________________________
51
TrackSysCommonData::TrackSysCommonData
(
VP1TrackSystem
* sys,
TrackSystemController
*
controller
)
52
:
VP1HelperClassBase
(sys,
"TrackSysCommonData"
),
m_textSep
(nullptr),
m_d
(new
Imp
),
53
m_ascObjSelectionManager
(nullptr),
m_controller
(
controller
),
m_lastSelectedTrack
(nullptr)
54
{
55
m_3dsystem
= sys;
56
m_muonChamberProjectionHelper
=
new
MuonChamberProjectionHelper
(sys);
57
m_indetProjHelper_Pixel
=
InDetProjHelper::createPixelHelper
(sys);
58
m_indetProjHelper_SCT
=
InDetProjHelper::createSCTHelper
(sys);
59
m_indetProjHelper_TRT
=
InDetProjHelper::createTRTHelper
(sys);
60
m_touchedMuonChamberHelper
=
new
TouchedMuonChamberHelper
;
61
m_trackPropagationHelper
=
new
TrackPropagationHelper
(sys);
62
m_trackSanity
=
new
VP1TrackSanity
(sys);
63
64
m_singlePoint
=
new
SoPointSet;
65
m_singlePoint
->ref();
66
SoVertexProperty * vertices =
new
SoVertexProperty;
67
vertices->vertex.set1Value(0,0.0f,0.0f,0.0f);
68
m_singlePoint
->numPoints=1;
69
m_singlePoint
->vertexProperty.setValue(vertices);
70
71
m_trackLODManager
=
new
TrackLODManager
(
nullptr
,sys);
72
QObject::connect(
m_controller
,SIGNAL(assocObjDetailLevelChanged(
TrackCommonFlags::DETAILLEVEL
)),
73
m_trackLODManager
,SLOT(setDetailLevel(
TrackCommonFlags::DETAILLEVEL
)) );
74
m_trackLODManager
->setDetailLevel(
m_controller
->assocObjDetailLevel());
75
76
QObject::connect(
m_touchedMuonChamberHelper
,SIGNAL(touchedMuonChambersChanged(
const
std::set<GeoPVConstLink>&)),
77
sys,SLOT(emitTouchedMuonChambersChanged(
const
std::set<GeoPVConstLink>&)));
//Fixme: need track sys!!
78
79
m_visTrkTracksToMaterialHelper
=
new
VisibleObjectToMaterialHelper<Trk::Track>
(
nullptr
,sys);
80
m_visTrkSegmentsToMaterialHelper
=
new
VisibleObjectToMaterialHelper<Trk::Segment>
(
nullptr
,sys);
81
QObject::connect(
m_visTrkTracksToMaterialHelper
,SIGNAL(visibleObjectsChanged()),sys,SLOT(visibleObjectsChanged()));
82
QObject::connect(
m_visTrkSegmentsToMaterialHelper
,SIGNAL(visibleObjectsChanged()),sys,SLOT(visibleObjectsChanged()));
83
84
// Get geometry context
85
if
(!
VP1SGAccessHelper
(
m_3dsystem
).retrieve(
m_geometryContext
,
"ActsAlignment"
)) {
86
message
(
"Error: Could not retrieve ACTS alignment="
);
87
}
88
89
}
90
91
//____________________________________________________________________
92
TrackSysCommonData::~TrackSysCommonData
()
93
{
94
delete
m_muonChamberProjectionHelper
;
95
delete
m_indetProjHelper_Pixel
;
96
delete
m_indetProjHelper_SCT
;
97
delete
m_indetProjHelper_TRT
;
98
delete
m_touchedMuonChamberHelper
;
99
delete
m_trackPropagationHelper
;
100
delete
m_trackLODManager
;
101
delete
m_visTrkTracksToMaterialHelper
;
102
delete
m_visTrkSegmentsToMaterialHelper
;
103
delete
m_trackSanity
;
104
m_singlePoint
->unref();
105
if
(
m_textSep
) {
106
m_textSep
->unref();
107
m_textSep
=
nullptr
;
108
}
109
delete
m_d
;
110
}
111
112
//____________________________________________________________________
113
void
TrackSysCommonData::setEventData
(
AscObjSelectionManager
* aomgr)
114
{
115
m_ascObjSelectionManager
= aomgr;
116
}
117
118
//____________________________________________________________________
119
void
TrackSysCommonData::clearEventData
()
120
{
121
m_ascObjSelectionManager
->aboutTodelete();
//To allow to emit signals.
122
delete
m_ascObjSelectionManager
;
123
m_ascObjSelectionManager
=
nullptr
;
124
m_touchedMuonChamberHelper
->eraseEventData();
125
m_trackLODManager
->eraseEventData();
126
m_visTrkTracksToMaterialHelper
->setNoVisibleObjects();
127
m_visTrkSegmentsToMaterialHelper
->setNoVisibleObjects();
128
// m_d->nodeToTrackHandle.clear(); TrackHandle destructor already ensures that unregister... below is called.
129
}
130
131
//____________________________________________________________________
132
void
TrackSysCommonData::registerTrack
(SoNode*
node
,
TrackHandleBase
*handle)
133
{
134
if
(
VP1Msg::verbose
()) {
135
if
(!
node
||!handle) {
136
message
(
"registerTrack ERROR: Received null pointer!"
);
137
return
;
138
}
139
std::map<SoNode*,TrackHandleBase*>::iterator it =
m_d
->nodeToTrackHandle.find(
node
);
140
if
(it!=
m_d
->nodeToTrackHandle.end())
141
message
(
"registerTrack ERROR: Node already registered!"
);
142
}
143
m_d
->nodeToTrackHandle[
node
]=handle;
144
}
145
146
//____________________________________________________________________
147
void
TrackSysCommonData::unregisterTrack
(SoNode*
node
)
148
{
149
if
(
VP1Msg::verbose
()) {
150
if
(!
node
) {
151
message
(
"unregisterTrack ERROR: Received null pointer!"
);
152
return
;
153
}
154
}
155
std::map<SoNode*,TrackHandleBase*>::iterator it =
m_d
->nodeToTrackHandle.find(
node
);
156
if
(it==
m_d
->nodeToTrackHandle.end()) {
157
message
(
"unregisterTrack ERROR: Not previously registered!"
);
158
return
;
159
}
160
m_d
->nodeToTrackHandle.erase(it);
161
}
162
163
//____________________________________________________________________
164
TrackHandleBase
*
TrackSysCommonData::trackHandle
(SoNode*n)
165
{
166
if
(!n)
167
return
nullptr
;
168
std::map<SoNode*,TrackHandleBase*>::iterator it =
m_d
->nodeToTrackHandle.find(n);
169
if
(it!=
m_d
->nodeToTrackHandle.end())
170
return
it->second;
171
return
nullptr
;
172
}
173
174
//____________________________________________________________________
175
SoNode*
TrackSysCommonData::node
(
TrackHandleBase
*
h
)
176
{
177
if
(!
h
)
178
return
nullptr
;
179
std::map<SoNode*,TrackHandleBase*>::iterator it =
m_d
->nodeToTrackHandle.begin(), itEnd=
m_d
->nodeToTrackHandle.end();
180
for
(; it!=itEnd;++it)
181
if
(it->second==
h
)
return
it->first;
182
return
nullptr
;
183
}
184
185
//____________________________________________________________________
186
SoNode*
TrackSysCommonData::node
(QTreeWidgetItem* item)
187
{
188
if
(!item)
189
return
nullptr
;
190
std::map<SoNode*,TrackHandleBase*>::iterator it =
m_d
->nodeToTrackHandle.begin(), itEnd=
m_d
->nodeToTrackHandle.end();
191
for
(; it!=itEnd;++it)
192
if
(it->second->browserTreeItem()==item)
return
it->first;
193
return
nullptr
;
194
}
195
196
const
TrackHandleBase
*
TrackSysCommonData::getHandle
(
const
Trk::Track
* trk)
197
{
198
if
(!trk) {
199
messageVerbose
(
"TrackSysCommonData::getHandle(): Received null pointer!"
);
200
return
nullptr
;
201
}
202
// messageVerbose("TrackSysCommonData::getHandle(): about to loop over this many elements:"+QString::number(m_d->nodeToTrackHandle.size()));
203
204
std::map<SoNode*,TrackHandleBase*>::iterator it =
m_d
->nodeToTrackHandle.begin(), itEnd=
m_d
->nodeToTrackHandle.end();
205
for
(; it!=itEnd;++it){
206
const
TrackHandle_TrkTrack
* trkHandle =
dynamic_cast<
const
TrackHandle_TrkTrack
*
>
(it->second);
207
if
(trkHandle && trkHandle->
trkTrackPointer
()==trk)
return
trkHandle;
208
}
209
return
nullptr
;
210
}
211
212
const
ActsTrk::GeometryContext
&
TrackSysCommonData::geometryContext
()
const
{
213
return
*
m_geometryContext
;
214
}
215
216
217
ServiceHandle<Muon::IMuonIdHelperSvc>
&
TrackSysCommonData::muonIdHelperSvc
() {
218
if
(
m_idHelperSvc
.retrieve().isFailure()) {
219
message
(
"IMuonIdHelperSvc ERROR: Can not retrieve"
);
220
}
221
return
m_idHelperSvc
;
222
}
223
224
AscObjSelectionManager.h
InDetProjHelper.h
MuonChamberProjectionHelper.h
TouchedMuonChamberHelper.h
TrackHandleBase.h
TrackHandle_TrkTrack.h
TrackLODManager.h
TrackPropagationHelper.h
TrackSysCommonData.h
TrackSystemController.h
VP1Msg.h
VP1SGAccessHelper.h
VP1TrackSanity.h
VP1TrackSystem.h
VisibleObjectToMaterialHelper.h
ActsTrk::GeometryContext
Definition
GeometryContext.h:30
AscObjSelectionManager
Definition
AscObjSelectionManager.h:37
h
Header file for AthHistogramAlgorithm.
InDetProjHelper::createTRTHelper
static InDetProjHelper * createTRTHelper(IVP1System *sys=0)
Definition
InDetProjHelper.cxx:68
InDetProjHelper::createPixelHelper
static InDetProjHelper * createPixelHelper(IVP1System *sys=0)
Definition
InDetProjHelper.cxx:32
InDetProjHelper::createSCTHelper
static InDetProjHelper * createSCTHelper(IVP1System *sys=0)
Definition
InDetProjHelper.cxx:50
MuonChamberProjectionHelper
Definition
MuonChamberProjectionHelper.h:32
ServiceHandle
Definition
ClusterMakerTool.h:36
TouchedMuonChamberHelper
Definition
TouchedMuonChamberHelper.h:30
TrackCommonFlags::DETAILLEVEL
DETAILLEVEL
Definition
TrackCommonFlags.h:39
TrackHandleBase
Definition
TrackHandleBase.h:57
TrackHandle_TrkTrack
Definition
TrackHandle_TrkTrack.h:29
TrackHandle_TrkTrack::trkTrackPointer
const Trk::Track * trkTrackPointer() const
Definition
TrackHandle_TrkTrack.h:43
TrackLODManager
Definition
TrackLODManager.h:32
TrackPropagationHelper
Definition
TrackPropagationHelper.h:40
TrackSysCommonData::Imp
Definition
TrackSysCommonData.cxx:45
TrackSysCommonData::Imp::nodeToTrackHandle
std::map< SoNode *, TrackHandleBase * > nodeToTrackHandle
Definition
TrackSysCommonData.cxx:47
TrackSysCommonData::m_ascObjSelectionManager
AscObjSelectionManager * m_ascObjSelectionManager
Definition
TrackSysCommonData.h:103
TrackSysCommonData::m_geometryContext
const ActsTrk::GeometryContext * m_geometryContext
Definition
TrackSysCommonData.h:118
TrackSysCommonData::m_indetProjHelper_SCT
InDetProjHelper * m_indetProjHelper_SCT
Definition
TrackSysCommonData.h:107
TrackSysCommonData::~TrackSysCommonData
virtual ~TrackSysCommonData()
Definition
TrackSysCommonData.cxx:92
TrackSysCommonData::trackHandle
TrackHandleBase * trackHandle(SoNode *n)
Definition
TrackSysCommonData.cxx:164
TrackSysCommonData::m_touchedMuonChamberHelper
TouchedMuonChamberHelper * m_touchedMuonChamberHelper
Definition
TrackSysCommonData.h:109
TrackSysCommonData::m_indetProjHelper_TRT
InDetProjHelper * m_indetProjHelper_TRT
Definition
TrackSysCommonData.h:108
TrackSysCommonData::registerTrack
void registerTrack(SoNode *, TrackHandleBase *)
Definition
TrackSysCommonData.cxx:132
TrackSysCommonData::m_trackLODManager
TrackLODManager * m_trackLODManager
Definition
TrackSysCommonData.h:111
TrackSysCommonData::TrackSysCommonData
TrackSysCommonData(VP1TrackSystem *sys, TrackSystemController *)
Definition
TrackSysCommonData.cxx:51
TrackSysCommonData::m_visTrkSegmentsToMaterialHelper
VisibleObjectToMaterialHelper< Trk::Segment > * m_visTrkSegmentsToMaterialHelper
Definition
TrackSysCommonData.h:113
TrackSysCommonData::m_trackSanity
VP1TrackSanity * m_trackSanity
Definition
TrackSysCommonData.h:114
TrackSysCommonData::m_muonChamberProjectionHelper
MuonChamberProjectionHelper * m_muonChamberProjectionHelper
Definition
TrackSysCommonData.h:105
TrackSysCommonData::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition
TrackSysCommonData.h:119
TrackSysCommonData::muonIdHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > & muonIdHelperSvc()
Definition
TrackSysCommonData.cxx:217
TrackSysCommonData::getHandle
const TrackHandleBase * getHandle(const Trk::Track *trk)
Definition
TrackSysCommonData.cxx:196
TrackSysCommonData::m_controller
TrackSystemController * m_controller
Definition
TrackSysCommonData.h:104
TrackSysCommonData::m_visTrkTracksToMaterialHelper
VisibleObjectToMaterialHelper< Trk::Track > * m_visTrkTracksToMaterialHelper
Definition
TrackSysCommonData.h:112
TrackSysCommonData::unregisterTrack
void unregisterTrack(SoNode *)
Definition
TrackSysCommonData.cxx:147
TrackSysCommonData::node
SoNode * node(TrackHandleBase *h)
Returns the node associated with this handle.
Definition
TrackSysCommonData.cxx:175
TrackSysCommonData::m_trackPropagationHelper
TrackPropagationHelper * m_trackPropagationHelper
Definition
TrackSysCommonData.h:110
TrackSysCommonData::clearEventData
void clearEventData()
Definition
TrackSysCommonData.cxx:119
TrackSysCommonData::geometryContext
const ActsTrk::GeometryContext & geometryContext() const
Definition
TrackSysCommonData.cxx:212
TrackSysCommonData::m_lastSelectedTrack
TrackHandleBase * m_lastSelectedTrack
Definition
TrackSysCommonData.h:116
TrackSysCommonData::m_d
Imp * m_d
Definition
TrackSysCommonData.h:100
TrackSysCommonData::controller
TrackSystemController * controller() const
Definition
TrackSysCommonData.h:124
TrackSysCommonData::m_textSep
SoSeparator * m_textSep
Definition
TrackSysCommonData.h:91
TrackSysCommonData::m_3dsystem
VP1TrackSystem * m_3dsystem
Definition
TrackSysCommonData.h:102
TrackSysCommonData::setEventData
void setEventData(AscObjSelectionManager *)
Definition
TrackSysCommonData.cxx:113
TrackSysCommonData::m_singlePoint
SoPointSet * m_singlePoint
Definition
TrackSysCommonData.h:115
TrackSysCommonData::m_indetProjHelper_Pixel
InDetProjHelper * m_indetProjHelper_Pixel
Definition
TrackSysCommonData.h:106
TrackSystemController
Definition
TrackSystemController.h:50
Trk::Track
The ATLAS Track class.
Definition
Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
VP1HelperClassBase::VP1HelperClassBase
VP1HelperClassBase(IVP1System *sys=0, QString helpername="")
Definition
VP1HelperClassBase.cxx:28
VP1HelperClassBase::messageVerbose
void messageVerbose(const QString &) const
Definition
VP1HelperClassBase.cxx:78
VP1HelperClassBase::message
void message(const QString &) const
Definition
VP1HelperClassBase.cxx:49
VP1Msg::verbose
static bool verbose()
Definition
VP1Msg.h:31
VP1SGAccessHelper
Definition
VP1SGAccessHelper.h:25
VP1TrackSanity
Definition
VP1TrackSanity.h:34
VP1TrackSystem
Definition
VP1TrackSystem.h:36
VisibleObjectToMaterialHelper
Definition
VisibleObjectToMaterialHelper.h:42
Generated on
for ATLAS Offline Software by
1.17.0