ATLAS Offline Software
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 
16 
25 
28 
30 
32 #include "VP1Base/VP1Msg.h"
33 
34 #include <Inventor/C/errors/debugerror.h>
35 #include <Inventor/nodes/SoVertexProperty.h>
36 #include <Inventor/nodes/SoPointSet.h>
37 #include <Inventor/nodes/SoSeparator.h>
38 
39 #include <QTreeWidgetItem>
40 
41 #include<map>
42 
43 //____________________________________________________________________
45 public:
46  std::map<SoNode*,TrackHandleBase*> nodeToTrackHandle;
47 };
48 
49 //____________________________________________________________________
51  : VP1HelperClassBase(sys,"TrackSysCommonData"), m_textSep(nullptr), m_d(new Imp),
52  m_ascObjSelectionManager(nullptr), m_controller(controller), m_lastSelectedTrack(nullptr)
53 {
54  m_3dsystem = sys;
62 
63  m_singlePoint = new SoPointSet;
64  m_singlePoint->ref();
65  SoVertexProperty * vertices = new SoVertexProperty;
66  vertices->vertex.set1Value(0,0.0f,0.0f,0.0f);
67  m_singlePoint->numPoints=1;
68  m_singlePoint->vertexProperty.setValue(vertices);
69 
70  m_trackLODManager = new TrackLODManager(nullptr,sys);
71  QObject::connect( m_controller,SIGNAL(assocObjDetailLevelChanged(TrackCommonFlags::DETAILLEVEL)),
72  m_trackLODManager,SLOT(setDetailLevel(TrackCommonFlags::DETAILLEVEL)) );
74 
75  QObject::connect(m_touchedMuonChamberHelper,SIGNAL(touchedMuonChambersChanged(const std::set<GeoPVConstLink>&)),
76  sys,SLOT(emitTouchedMuonChambersChanged(const std::set<GeoPVConstLink>&)));//Fixme: need track sys!!
77 
80  QObject::connect(m_visTrkTracksToMaterialHelper,SIGNAL(visibleObjectsChanged()),sys,SLOT(visibleObjectsChanged()));
81  QObject::connect(m_visTrkSegmentsToMaterialHelper,SIGNAL(visibleObjectsChanged()),sys,SLOT(visibleObjectsChanged()));
82 }
83 
84 //____________________________________________________________________
86 {
89  delete m_indetProjHelper_SCT;
90  delete m_indetProjHelper_TRT;
93  delete m_trackLODManager;
96  delete m_trackSanity;
97  m_singlePoint->unref();
98  if (m_textSep) {
99  m_textSep->unref();
100  m_textSep = nullptr;
101  }
102  delete m_d;
103 }
104 
105 //____________________________________________________________________
107 {
108  m_ascObjSelectionManager = aomgr;
109 }
110 
111 //____________________________________________________________________
113 {
114  m_ascObjSelectionManager->aboutTodelete();//To allow to emit signals.
116  m_ascObjSelectionManager = nullptr;
121  // m_d->nodeToTrackHandle.clear(); TrackHandle destructor already ensures that unregister... below is called.
122 }
123 
124 //____________________________________________________________________
126 {
127  if (VP1Msg::verbose()) {
128  if (!node||!handle) {
129  message("registerTrack ERROR: Received null pointer!");
130  return;
131  }
133  if (it!=m_d->nodeToTrackHandle.end())
134  message("registerTrack ERROR: Node already registered!");
135  }
136  m_d->nodeToTrackHandle[node]=handle;
137 }
138 
139 //____________________________________________________________________
141 {
142  if (VP1Msg::verbose()) {
143  if (!node) {
144  message("unregisterTrack ERROR: Received null pointer!");
145  return;
146  }
147  }
149  if (it==m_d->nodeToTrackHandle.end()) {
150  message("unregisterTrack ERROR: Not previously registered!");
151  return;
152  }
153  m_d->nodeToTrackHandle.erase(it);
154 }
155 
156 //____________________________________________________________________
158 {
159  if (!n)
160  return nullptr;
162  if (it!=m_d->nodeToTrackHandle.end())
163  return it->second;
164  return nullptr;
165 }
166 
167 //____________________________________________________________________
169 {
170  if (!h)
171  return nullptr;
173  for (; it!=itEnd;++it)
174  if (it->second==h) return it->first;
175  return nullptr;
176 }
177 
178 //____________________________________________________________________
179 SoNode* TrackSysCommonData::node(QTreeWidgetItem* item)
180 {
181  if (!item)
182  return nullptr;
184  for (; it!=itEnd;++it)
185  if (it->second->browserTreeItem()==item) return it->first;
186  return nullptr;
187 }
188 
190 {
191  if (!trk) {
192  messageVerbose("TrackSysCommonData::getHandle(): Received null pointer!");
193  return nullptr;
194  }
195 // messageVerbose("TrackSysCommonData::getHandle(): about to loop over this many elements:"+QString::number(m_d->nodeToTrackHandle.size()));
196 
198  for (; it!=itEnd;++it){
199  const TrackHandle_TrkTrack* trkHandle = dynamic_cast<const TrackHandle_TrkTrack*>(it->second);
200  if (trkHandle && trkHandle->trkTrackPointer()==trk) return trkHandle;
201  }
202  return nullptr;
203 }
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
TrackPropagationHelper.h
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
MuonChamberProjectionHelper
Definition: MuonChamberProjectionHelper.h:32
TrackSysCommonData::m_visTrkSegmentsToMaterialHelper
VisibleObjectToMaterialHelper< Trk::Segment > * m_visTrkSegmentsToMaterialHelper
Definition: TrackSysCommonData.h:107
AscObjSelectionManager::aboutTodelete
void aboutTodelete()
Definition: AscObjSelectionManager.cxx:97
InDetProjHelper.h
TrackLODManager::setDetailLevel
void setDetailLevel(TrackCommonFlags::DETAILLEVEL)
Definition: TrackLODManager.cxx:111
TrackSystemController.h
TrackSysCommonData::m_indetProjHelper_SCT
InDetProjHelper * m_indetProjHelper_SCT
Definition: TrackSysCommonData.h:101
TrackSysCommonData::TrackSysCommonData
TrackSysCommonData(VP1TrackSystem *sys, TrackSystemController *)
Definition: TrackSysCommonData.cxx:50
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
InDetProjHelper::createPixelHelper
static InDetProjHelper * createPixelHelper(IVP1System *sys=0)
Definition: InDetProjHelper.cxx:32
VisibleObjectToMaterialHelper::setNoVisibleObjects
void setNoVisibleObjects()
VP1Msg.h
VisibleObjectToMaterialHelper< Trk::Track >
VP1HelperClassBase::messageVerbose
void messageVerbose(const QString &) const
Definition: VP1HelperClassBase.cxx:78
TrackHandleBase.h
TrackSysCommonData::m_ascObjSelectionManager
AscObjSelectionManager * m_ascObjSelectionManager
Definition: TrackSysCommonData.h:97
TrackSysCommonData::m_textSep
SoSeparator * m_textSep
Definition: TrackSysCommonData.h:88
TrackSysCommonData::node
SoNode * node(TrackHandleBase *h)
Returns the node associated with this handle.
Definition: TrackSysCommonData.cxx:168
fillPileUpNoiseLumi.connect
string connect
Definition: fillPileUpNoiseLumi.py:70
CSV_InDetExporter.new
new
Definition: CSV_InDetExporter.py:145
skel.it
it
Definition: skel.GENtoEVGEN.py:423
TrackSystemController::assocObjDetailLevel
TrackCommonFlags::DETAILLEVEL assocObjDetailLevel() const
Definition: TrackSystemController.cxx:1762
TrackLODManager.h
InDetProjHelper::createSCTHelper
static InDetProjHelper * createSCTHelper(IVP1System *sys=0)
Definition: InDetProjHelper.cxx:50
TrackPropagationHelper
Definition: TrackPropagationHelper.h:40
TrackSysCommonData::registerTrack
void registerTrack(SoNode *, TrackHandleBase *)
Definition: TrackSysCommonData.cxx:125
VisibleObjectToMaterialHelper.h
TrackHandle_TrkTrack::trkTrackPointer
const Trk::Track * trkTrackPointer() const
Definition: TrackHandle_TrkTrack.h:43
VP1TrackSanity
Definition: VP1TrackSanity.h:34
TrackSysCommonData.h
TrackSysCommonData::~TrackSysCommonData
virtual ~TrackSysCommonData()
Definition: TrackSysCommonData.cxx:85
TrackSysCommonData::m_trackPropagationHelper
TrackPropagationHelper * m_trackPropagationHelper
Definition: TrackSysCommonData.h:104
TouchedMuonChamberHelper
Definition: TouchedMuonChamberHelper.h:30
mapkey::sys
@ sys
Definition: TElectronEfficiencyCorrectionTool.cxx:42
TrackSysCommonData::m_indetProjHelper_Pixel
InDetProjHelper * m_indetProjHelper_Pixel
Definition: TrackSysCommonData.h:100
VP1TrackSanity.h
TrackSysCommonData::m_trackLODManager
TrackLODManager * m_trackLODManager
Definition: TrackSysCommonData.h:105
beamspotman.n
n
Definition: beamspotman.py:731
TrackSysCommonData::m_muonChamberProjectionHelper
MuonChamberProjectionHelper * m_muonChamberProjectionHelper
Definition: TrackSysCommonData.h:99
TrackHandle_TrkTrack
Definition: TrackHandle_TrkTrack.h:29
TrackSysCommonData::Imp
Definition: TrackSysCommonData.cxx:44
VP1TrackSystem
Definition: VP1TrackSystem.h:36
AscObjSelectionManager.h
VP1HelperClassBase
Definition: VP1HelperClassBase.h:28
TrackSysCommonData::m_trackSanity
VP1TrackSanity * m_trackSanity
Definition: TrackSysCommonData.h:108
TrackSysCommonData::unregisterTrack
void unregisterTrack(SoNode *)
Definition: TrackSysCommonData.cxx:140
TrackSysCommonData::m_d
Imp * m_d
Definition: TrackSysCommonData.h:93
TrackSysCommonData::m_controller
TrackSystemController * m_controller
Definition: TrackSysCommonData.h:98
TrackSysCommonData::m_touchedMuonChamberHelper
TouchedMuonChamberHelper * m_touchedMuonChamberHelper
Definition: TrackSysCommonData.h:103
TrackSysCommonData::m_visTrkTracksToMaterialHelper
VisibleObjectToMaterialHelper< Trk::Track > * m_visTrkTracksToMaterialHelper
Definition: TrackSysCommonData.h:106
TrackSystemController
Definition: TrackSystemController.h:53
AscObjSelectionManager
Definition: AscObjSelectionManager.h:37
TrackSysCommonData::trackHandle
TrackHandleBase * trackHandle(SoNode *n)
Definition: TrackSysCommonData.cxx:157
item
Definition: ItemListSvc.h:43
TrackSysCommonData::Imp::nodeToTrackHandle
std::map< SoNode *, TrackHandleBase * > nodeToTrackHandle
Definition: TrackSysCommonData.cxx:46
TrackSysCommonData::m_indetProjHelper_TRT
InDetProjHelper * m_indetProjHelper_TRT
Definition: TrackSysCommonData.h:102
MuonChamberProjectionHelper.h
TrackHandle_TrkTrack.h
TrackSysCommonData::m_3dsystem
VP1TrackSystem * m_3dsystem
Definition: TrackSysCommonData.h:96
h
TrackSysCommonData::getHandle
const TrackHandleBase * getHandle(const Trk::Track *trk)
Definition: TrackSysCommonData.cxx:189
TouchedMuonChamberHelper::eraseEventData
void eraseEventData()
Definition: TouchedMuonChamberHelper.cxx:116
TrackSysCommonData::clearEventData
void clearEventData()
Definition: TrackSysCommonData.cxx:112
InDetProjHelper::createTRTHelper
static InDetProjHelper * createTRTHelper(IVP1System *sys=0)
Definition: InDetProjHelper.cxx:68
VP1HelperClassBase::message
void message(const QString &) const
Definition: VP1HelperClassBase.cxx:49
TrackCommonFlags::DETAILLEVEL
DETAILLEVEL
Definition: TrackCommonFlags.h:39
VP1Msg::verbose
static bool verbose()
Definition: VP1Msg.h:31
TouchedMuonChamberHelper.h
TrackLODManager
Definition: TrackLODManager.h:32
TrackHandleBase
Definition: TrackHandleBase.h:56
TrackSysCommonData::m_singlePoint
SoPointSet * m_singlePoint
Definition: TrackSysCommonData.h:109
TrackLODManager::eraseEventData
void eraseEventData()
Definition: TrackLODManager.cxx:151
node
Definition: memory_hooks-stdcmalloc.h:74
TrackSysCommonData::setEventData
void setEventData(AscObjSelectionManager *)
Definition: TrackSysCommonData.cxx:106
VP1TrackSystem.h