ATLAS Offline Software
Loading...
Searching...
No Matches
PRDTrackSegmentHelper Class Reference

#include <PRDTrackSegmentHelper.h>

Inheritance diagram for PRDTrackSegmentHelper:
Collaboration diagram for PRDTrackSegmentHelper:

Classes

class  Imp
class  TracksAndSegments

Public Member Functions

 PRDTrackSegmentHelper (std::map< const Trk::PrepRawData *, QList< PRDHandleBase * > > *prd2handle, IVP1System *sys=0, QObject *parent=0)
virtual ~PRDTrackSegmentHelper ()
void visibleTracksChanged (const std::vector< std::pair< const Trk::Track *, const SoMaterial * > > &)
void visibleSegmentsChanged (const std::vector< std::pair< const Trk::Segment *, const SoMaterial * > > &)
SoMaterial * trackMaterial (const Trk::Track *) const
SoMaterial * segmentMaterial (const Trk::Segment *) const
const TracksAndSegmentstracksAndSegments (const Trk::PrepRawData *)
void setSystemBasePointer (IVP1System *sys)
void message (const QString &) const
void message (const QStringList &, const QString &addtoend="") const
void message (const QString &addtostart, const QStringList &, const QString &addtoend="") const
void messageDebug (const QString &) const
void messageDebug (const QStringList &, const QString &addtoend="") const
void messageDebug (const QString &addtostart, const QStringList &, const QString &addtoend="") const
void messageVerbose (const QString &) const
void messageVerbose (const QStringList &, const QString &addtoend="") const
void messageVerbose (const QString &addtostart, const QStringList &, const QString &addtoend="") const
IVP1SystemsystemBase () const
const QString & helperClassName () const

Static Public Member Functions

static bool verbose ()
static void warnUndeletedInstances ()
static QString str (const QString &s)
static QString str (const char *c)
static QString str (const bool b)
static QString str (const QColor &)
static QString str (const SbColor &)
static QString str (const VP1Interval &)
static QString str (const SbVec2d &)
static QString str (const SbVec2f &)
static QString str (const SbVec2s &)
static QString str (const SbVec3d &)
static QString str (const SbVec3f &)
static QString str (const SbVec3s &)
static QString str (const SbVec4d &)
static QString str (const SbVec4f &)
static QString str (short int n)
static QString str (unsigned short int n)
static QString str (long n)
static QString str (ulong n)
static QString str (int n)
static QString str (uint n)
static QString str (qlonglong n)
static QString str (qulonglong n)
static QString str (const double &d)
static QString str (const float &f)
static QString str (const void *)
template<class T>
static QString str (const T *t)
template<class T>
static QString str (const QFlags< T > &f)
template<class T>
static QString str (const HepGeom::BasicVector3D< T > &t)
static QString str (const Amg::Vector3D &t)
template<class T>
static QString str (const QList< T > &t)

Protected Member Functions

void setHelperClassName (const QString &n)

Private Attributes

Impm_d
QString m_helpername
IVP1Systemm_system

Static Private Attributes

static const bool s_vp1verbose = VP1QtUtils::environmentVariableIsOn("VP1_VERBOSE_OUTPUT")

Detailed Description

Definition at line 36 of file PRDTrackSegmentHelper.h.

Constructor & Destructor Documentation

◆ PRDTrackSegmentHelper()

PRDTrackSegmentHelper::PRDTrackSegmentHelper ( std::map< const Trk::PrepRawData *, QList< PRDHandleBase * > > * prd2handle,
IVP1System * sys = 0,
QObject * parent = 0 )

Definition at line 83 of file PRDTrackSegmentHelper.cxx.

85 : QObject(parent), VP1HelperClassBase(sys,"PRDTrackSegmentHelper"), m_d(new Imp)
86{
87 m_d->theclass = this;
88 m_d->prd2handles = prd2handles;
89}
VP1HelperClassBase(IVP1System *sys=0, QString helpername="")

◆ ~PRDTrackSegmentHelper()

PRDTrackSegmentHelper::~PRDTrackSegmentHelper ( )
virtual

Definition at line 92 of file PRDTrackSegmentHelper.cxx.

93{
94 delete m_d;
95}

Member Function Documentation

◆ helperClassName()

const QString & VP1HelperClassBase::helperClassName ( ) const
inlineinherited

Definition at line 51 of file VP1HelperClassBase.h.

51{ return m_helpername; }

◆ message() [1/3]

void VP1HelperClassBase::message ( const QString & str) const
inherited

Definition at line 49 of file VP1HelperClassBase.cxx.

50{
51 if (m_helpername.isEmpty()) {
52 if (m_system)
53 m_system->message(str);
54 else
55 std::cout<<VP1Msg::prefix_msg()<<" [nameless helper class]: "<<str.toStdString()<<std::endl;
56 } else {
57 if (m_system)
58 m_system->message("["+m_helpername+"] " + str);
59 else
60 std::cout<<VP1Msg::prefix_msg()<<" ["<<m_helpername.toStdString()<<"]: "<<str.toStdString()<<std::endl;
61 }
62}
static const char * prefix_msg()
Definition VP1Msg.h:56
static QString str(const QString &s)
Definition VP1String.h:49

◆ message() [2/3]

void VP1HelperClassBase::message ( const QString & addtostart,
const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 131 of file VP1HelperClassBase.cxx.

132{
133 if (addtostart.isEmpty()) {
134 message(l,addtoend);
135 return;
136 }
137 if (addtoend.isEmpty()) {
138 for (const QString& s : l)
139 message(addtostart+s);
140 } else {
141 for (const QString& s : l)
142 message(addtostart+s+addtoend);
143 }
144}
void message(const QString &) const

◆ message() [3/3]

void VP1HelperClassBase::message ( const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 91 of file VP1HelperClassBase.cxx.

92{
93 if (addtoend.isEmpty()) {
94 for (const QString& s : l)
95 message(s);
96 } else {
97 for (const QString& s : l)
98 message(s+addtoend);
99 }
100}

◆ messageDebug() [1/3]

void VP1HelperClassBase::messageDebug ( const QString & str) const
inherited

Definition at line 65 of file VP1HelperClassBase.cxx.

66{
67 if (!VP1Msg::debug())
68 return;
69 std::string sysstring(m_system ? " in "+m_system->name().toStdString() : std::string(""));
70 if (m_helpername.isEmpty()) {
71 std::cout<<VP1Msg::prefix_debug()<<" [helper"<<sysstring<<"]: "<<str.toStdString()<<std::endl;
72 } else {
73 std::cout<<VP1Msg::prefix_debug()<<" ["<<m_helpername.toStdString()<<sysstring<<"]: "<<str.toStdString()<<std::endl;
74 }
75}
static bool debug()
Definition VP1Msg.h:32
static const char * prefix_debug()
Definition VP1Msg.h:57

◆ messageDebug() [2/3]

void VP1HelperClassBase::messageDebug ( const QString & addtostart,
const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 147 of file VP1HelperClassBase.cxx.

148{
149 if (!VP1Msg::debug())
150 return;
151 if (addtostart.isEmpty()) {
152 messageDebug(l,addtoend);
153 return;
154 }
155 if (addtoend.isEmpty()) {
156 for (const QString& s : l)
157 messageDebug(addtostart+s);
158 } else {
159 for (const QString& s : l)
160 messageDebug(addtostart+s+addtoend);
161 }
162}
void messageDebug(const QString &) const

◆ messageDebug() [3/3]

void VP1HelperClassBase::messageDebug ( const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 103 of file VP1HelperClassBase.cxx.

104{
105 if (!VP1Msg::debug())
106 return;
107 if (addtoend.isEmpty()) {
108 for (const QString& s : l)
109 messageDebug(s);
110 } else {
111 for (const QString& s : l)
112 messageDebug(s+addtoend);
113 }
114}

◆ messageVerbose() [1/3]

void VP1HelperClassBase::messageVerbose ( const QString & str) const
inherited

Definition at line 78 of file VP1HelperClassBase.cxx.

79{
80 if (!VP1Msg::verbose())
81 return;
82 std::string sysstring(m_system ? " in "+m_system->name().toStdString() : std::string(""));
83 if (m_helpername.isEmpty()) {
84 std::cout<<VP1Msg::prefix_verbose()<<" [helper"<<sysstring<<"]: "<<str.toStdString()<<std::endl;
85 } else {
86 std::cout<<VP1Msg::prefix_verbose()<<" ["<<m_helpername.toStdString()<<sysstring<<"]: "<<str.toStdString()<<std::endl;
87 }
88}
static bool verbose()
Definition VP1Msg.h:31
static const char * prefix_verbose()
Definition VP1Msg.h:59

◆ messageVerbose() [2/3]

void VP1HelperClassBase::messageVerbose ( const QString & addtostart,
const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 165 of file VP1HelperClassBase.cxx.

166{
167 if (!VP1Msg::verbose())
168 return;
169 if (addtostart.isEmpty()) {
170 messageVerbose(l,addtoend);
171 return;
172 }
173 if (addtoend.isEmpty()) {
174 for (const QString& s : l)
175 messageVerbose(addtostart+s);
176 } else {
177 for (const QString& s : l)
178 messageVerbose(addtostart+s+addtoend);
179 }
180}
void messageVerbose(const QString &) const

◆ messageVerbose() [3/3]

void VP1HelperClassBase::messageVerbose ( const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 117 of file VP1HelperClassBase.cxx.

118{
119 if (!VP1Msg::verbose())
120 return;
121 if (addtoend.isEmpty()) {
122 for (const QString& s : l)
124 } else {
125 for (const QString& s : l)
126 messageVerbose(s+addtoend);
127 }
128}

◆ segmentMaterial()

SoMaterial * PRDTrackSegmentHelper::segmentMaterial ( const Trk::Segment * s) const

Definition at line 528 of file PRDTrackSegmentHelper.cxx.

529{
530 std::map< const Trk::Segment*, const SoMaterial* >::const_iterator it = m_d->segments2mat.find(s);
531 return it == m_d->segments2mat.end() ? 0 : const_cast<SoMaterial *>(it->second);//fixme; const_cast is temporary hack. Remove const from materials!
532}

◆ setHelperClassName()

void VP1HelperClassBase::setHelperClassName ( const QString & n)
inlineprotectedinherited

Definition at line 59 of file VP1HelperClassBase.h.

◆ setSystemBasePointer()

void VP1HelperClassBase::setSystemBasePointer ( IVP1System * sys)
inherited

Definition at line 197 of file VP1HelperClassBase.cxx.

198{
199 m_system = sys;
200 if (VP1Msg::verbose()){
201 vp1helperclassbase_instanceMap[this] = (m_system?m_system->name():QString(""));
202 }
203}
static std::map< VP1HelperClassBase *, QString > vp1helperclassbase_instanceMap

◆ str() [1/30]

QString VP1String::str ( const Amg::Vector3D & t)
inlinestaticinherited

Definition at line 98 of file VP1String.h.

98{ return "("+str(t.x())+", "+str(t.y())+", "+str(t.z())+")"; }

◆ str() [2/30]

QString VP1String::str ( const bool b)
inlinestaticinherited

Definition at line 53 of file VP1String.h.

53{ return b?"True":"False"; }

◆ str() [3/30]

QString VP1String::str ( const char * c)
inlinestaticinherited

Definition at line 50 of file VP1String.h.

50{ return c; }

◆ str() [4/30]

QString VP1String::str ( const double & d)
inlinestaticinherited

Definition at line 81 of file VP1String.h.

81{ return QString::number(d); }

◆ str() [5/30]

QString VP1String::str ( const float & f)
inlinestaticinherited

Definition at line 82 of file VP1String.h.

82{ return QString::number(f); }

◆ str() [6/30]

template<class T>
QString VP1String::str ( const HepGeom::BasicVector3D< T > & t)
inlinestaticinherited

Definition at line 95 of file VP1String.h.

95{ return "("+str(t.x())+", "+str(t.y())+", "+str(t.z())+")"; }

◆ str() [7/30]

QString VP1String::str ( const QColor & c)
staticinherited

Definition at line 30 of file VP1String.cxx.

31{
32 return c.isValid() ? c.name() : "Invalid";
33}

◆ str() [8/30]

template<class T>
QString VP1String::str ( const QFlags< T > & f)
inlinestaticinherited

Definition at line 91 of file VP1String.h.

91{ return "0x"+QString::number(f, 16).toUpper().rightJustified(8,'0'); }

◆ str() [9/30]

template<class T>
QString VP1String::str ( const QList< T > & t)
inlinestaticinherited

Definition at line 102 of file VP1String.h.

102{ return "QList of size"+QString::number(t.size()); }

◆ str() [10/30]

QString VP1String::str ( const QString & s)
inlinestaticinherited

Definition at line 49 of file VP1String.h.

49{ return s; }

◆ str() [11/30]

QString VP1String::str ( const SbColor & c)
staticinherited

Definition at line 36 of file VP1String.cxx.

37{
39}
static QColor sbcol2qcol(const SbColor &)

◆ str() [12/30]

QString VP1String::str ( const SbVec2d & v)
staticinherited

Definition at line 61 of file VP1String.cxx.

61{ double x,y; v.getValue(x,y); return "("+str(x)+", "+str(y)+")"; }
#define y
#define x

◆ str() [13/30]

QString VP1String::str ( const SbVec2f & v)
staticinherited

Definition at line 62 of file VP1String.cxx.

62{ float x,y; v.getValue(x,y); return "("+str(x)+", "+str(y)+")"; }

◆ str() [14/30]

QString VP1String::str ( const SbVec2s & v)
staticinherited

Definition at line 63 of file VP1String.cxx.

63{ short x,y; v.getValue(x,y); return "("+str(x)+", "+str(y)+")"; }

◆ str() [15/30]

QString VP1String::str ( const SbVec3d & v)
staticinherited

Definition at line 64 of file VP1String.cxx.

64{ double x,y,z; v.getValue(x,y,z); return "("+str(x)+", "+str(y)+", "+str(z)+")"; }
#define z

◆ str() [16/30]

QString VP1String::str ( const SbVec3f & v)
staticinherited

Definition at line 65 of file VP1String.cxx.

65{ float x,y,z; v.getValue(x,y,z); return "("+str(x)+", "+str(y)+", "+str(z)+")"; }

◆ str() [17/30]

QString VP1String::str ( const SbVec3s & v)
staticinherited

Definition at line 66 of file VP1String.cxx.

66{ short x,y,z; v.getValue(x,y,z); return "("+str(x)+", "+str(y)+", "+str(z)+")"; }

◆ str() [18/30]

QString VP1String::str ( const SbVec4d & v)
staticinherited

Definition at line 67 of file VP1String.cxx.

67{ double x,y,z,t; v.getValue(x,y,z,t); return "("+str(x)+", "+str(y)+", "+str(z)+", "+str(t)+")"; }

◆ str() [19/30]

QString VP1String::str ( const SbVec4f & v)
staticinherited

Definition at line 68 of file VP1String.cxx.

68{ float x,y,z,t; v.getValue(x,y,z,t); return "("+str(x)+", "+str(y)+", "+str(z)+", "+str(t)+")"; }

◆ str() [20/30]

template<class T>
QString VP1String::str ( const T * t)
inlinestaticinherited

Definition at line 87 of file VP1String.h.

87{ return str(static_cast<const void* >(t)); }

◆ str() [21/30]

QString VP1String::str ( const void * p)
staticinherited

Definition at line 48 of file VP1String.cxx.

49{
50 if (p) {
51 std::ostringstream s;
52 s << p;
53 // Explicitly naming QString here avoids a cppcheck warning.
54 return QString (s.str().c_str());
55 } else {
56 return "NULL";
57 }
58}

◆ str() [22/30]

QString VP1String::str ( const VP1Interval & i)
staticinherited

Definition at line 42 of file VP1String.cxx.

43{
44 return i.toString();
45}

◆ str() [23/30]

QString VP1String::str ( int n)
inlinestaticinherited

Definition at line 77 of file VP1String.h.

77{ return QString::number(n); }

◆ str() [24/30]

QString VP1String::str ( long n)
inlinestaticinherited

Definition at line 75 of file VP1String.h.

75{ return QString::number(n); }

◆ str() [25/30]

QString VP1String::str ( qlonglong n)
inlinestaticinherited

Definition at line 79 of file VP1String.h.

79{ return QString::number(n); }

◆ str() [26/30]

QString VP1String::str ( qulonglong n)
inlinestaticinherited

Definition at line 80 of file VP1String.h.

80{ return QString::number(n); }

◆ str() [27/30]

QString VP1String::str ( short int n)
inlinestaticinherited

Definition at line 73 of file VP1String.h.

73{ return QString::number(n); }

◆ str() [28/30]

QString VP1String::str ( uint n)
inlinestaticinherited

Definition at line 78 of file VP1String.h.

78{ return QString::number(n); }

◆ str() [29/30]

QString VP1String::str ( ulong n)
inlinestaticinherited

Definition at line 76 of file VP1String.h.

76{ return QString::number(n); }

◆ str() [30/30]

QString VP1String::str ( unsigned short int n)
inlinestaticinherited

Definition at line 74 of file VP1String.h.

74{ return QString::number(n); }

◆ systemBase()

IVP1System * VP1HelperClassBase::systemBase ( ) const
inlineinherited

Definition at line 50 of file VP1HelperClassBase.h.

50{ return m_system; }

◆ trackMaterial()

SoMaterial * PRDTrackSegmentHelper::trackMaterial ( const Trk::Track * t) const

Definition at line 521 of file PRDTrackSegmentHelper.cxx.

522{
523 std::map< const Trk::Track*, const SoMaterial* >::const_iterator it = m_d->tracks2mat.find(t);
524 return it == m_d->tracks2mat.end() ? 0 : const_cast<SoMaterial *>(it->second);//fixme; const_cast is temporary hack. Remove const from materials!
525}

◆ tracksAndSegments()

const PRDTrackSegmentHelper::TracksAndSegments * PRDTrackSegmentHelper::tracksAndSegments ( const Trk::PrepRawData * prd)

Definition at line 483 of file PRDTrackSegmentHelper.cxx.

484{
485 std::map< const Trk::PrepRawData*,TracksAndSegments >::iterator itInfo = m_d->prdsOnTracksAndSegments.find(prd);
486 return itInfo == m_d->prdsOnTracksAndSegments.end() ? 0 : &(itInfo->second);
487}

◆ verbose()

bool VP1HelperClassBase::verbose ( )
inlinestaticinherited

Definition at line 32 of file VP1HelperClassBase.h.

32{ return s_vp1verbose; } // Returns true if env var VP1_VERBOSE_OUTPUT=1
static const bool s_vp1verbose

◆ visibleSegmentsChanged()

void PRDTrackSegmentHelper::visibleSegmentsChanged ( const std::vector< std::pair< const Trk::Segment *, const SoMaterial * > > & segments)

Definition at line 179 of file PRDTrackSegmentHelper.cxx.

180{
181 //NB: Code here is very similar to code in visibleTracksChanged!!
182 messageVerbose("visibleSegmentsChanged start (old nsegments = "+QString::number(m_d->segments2mat.size())
183 +", new nsegments = "+QString::number(segments.size())+")");
184
185 if (segments.empty()) {
186 //Special case #1 - loop over previous segment's, remove their pointers from the relevant prd handles + update their materials.
187 messageVerbose("special case #1 - new segment list is empty");
188 std::map< const Trk::Segment*, const SoMaterial* >::iterator it, itE = m_d->segments2mat.end();
189 for (it=m_d->segments2mat.begin();it!=itE;++it) {
190 m_d->removeSegmentFromPRDs(it->first);
191 }
192 m_d->segments2mat.clear();
193 messageVerbose("visibleSegmentsChanged end");
194 return;
195 }
196
197 if (m_d->segments2mat.empty()) {
198 //special case #2 - no previous segments, so just loop over incoming
199 //segments, and add their pointers to the relevant prd handles + update their materials.
200 messageVerbose("special case #2 - old segment list is empty");
201 std::vector< std::pair<const Trk::Segment*, const SoMaterial*> >::const_iterator it(segments.begin()), itE(segments.end());
202 for (;it!=itE;++it) {
203 m_d->segments2mat.insert(*it);
204 m_d->addSegmentToPRDs(it->first );
205 }
206 messageVerbose("visibleSegmentsChanged end");
207 return;
208 }
209
210 //Normal case - need to remove some segmentpointers, add some, and for others possibly just update their materials.
211 messageVerbose("normal case - neither old, nor new, segment lists are empty");
212
213 //First check if any previously visible segments simply disappeared.
214 // --> Create std::set for faster searches.
215 std::set<const Trk::Segment*> newsegmentsset;
216 std::vector< std::pair<const Trk::Segment*, const SoMaterial*> >::const_iterator it(segments.begin()), itE(segments.end());
217 for (;it!=itE;++it)
218 newsegmentsset.insert(it->first);
219 std::set<const Trk::Segment*>::const_iterator newsegmentssetEnd(newsegmentsset.end());
220
221 // --> Check old segments versus this set - remove if no match:
222 std::map< const Trk::Segment*, const SoMaterial* >::iterator it2, it2E = m_d->segments2mat.end();
223 for (it2=m_d->segments2mat.begin();it2!=it2E;) {
224 if (newsegmentsset.find(it2->first)==newsegmentssetEnd) {
225 m_d->removeSegmentFromPRDs(it2->first);
226 m_d->segments2mat.erase(it2++);//postfix ++ operator must be used as here (due to the erase call)
227 } else {
228 ++it2;
229 }
230 }
231
232 // Next, check all segments that are now visible - if not previously
233 // visible we add their pointers to the relevant handles. If just
234 // the material changed, we make sure the prd handle updates its
235 // material.
236 it2E=m_d->segments2mat.end();
237 for (it=segments.begin();it!=itE;++it) {
238 it2 = m_d->segments2mat.find(it->first);
239 if (it2==it2E) {
240 m_d->segments2mat[it->first] = it->second;
241 m_d->addSegmentToPRDs(it->first);
242 } else {
243 //we need to update the segment material - but only if it changed of course.
244 if (it->second!=it2->second) {
245 m_d->segments2mat[it->first] = it->second;
246 m_d->updateMaterialOfPRDs(it->first);
247 }
248 }
249 }
250 messageVerbose("visibleSegmentsChanged end");
251}

◆ visibleTracksChanged()

void PRDTrackSegmentHelper::visibleTracksChanged ( const std::vector< std::pair< const Trk::Track *, const SoMaterial * > > & tracks)

Definition at line 98 of file PRDTrackSegmentHelper.cxx.

99{
100 //NB: Code here is very similar to code in visibleSegmentsChanged!!
101 messageVerbose("visibleTracksChanged start (old ntracks = "+QString::number(m_d->tracks2mat.size())
102 +", new ntracks = "+QString::number(tracks.size())+")");
103
104 if (tracks.empty()) {
105 //Special case #1 - loop over previous track's, remove their pointers from the relevant prd handles + update their materials.
106 messageVerbose("special case #1 - new track list is empty");
107 std::map< const Trk::Track*, const SoMaterial* >::iterator it, itE = m_d->tracks2mat.end();
108 for (it=m_d->tracks2mat.begin();it!=itE;++it) {
109 m_d->removeTrackFromPRDs(it->first,false);//measurements
110 m_d->removeTrackFromPRDs(it->first,true);//outliers
111 }
112 m_d->tracks2mat.clear();
113 messageVerbose("visibleTracksChanged end");
114 return;
115 }
116
117 if (m_d->tracks2mat.empty()) {
118 //special case #2 - no previous tracks, so just loop over incoming
119 //tracks, and add their pointers to the relevant prd handles + update their materials.
120 messageVerbose("special case #2 - old track list is empty");
121 std::vector< std::pair<const Trk::Track*, const SoMaterial*> >::const_iterator it(tracks.begin()), itE(tracks.end());
122 for (;it!=itE;++it) {
123 m_d->tracks2mat.insert(*it);
124 m_d->addTrackToPRDs(it->first, false );//measurements
125 m_d->addTrackToPRDs(it->first, true );//outliers
126 }
127 messageVerbose("visibleTracksChanged end");
128 return;
129 }
130
131 //Normal case - need to remove some trackpointers, add some, and for others possibly just update their materials.
132 messageVerbose("normal case - neither old, nor new, track lists are empty");
133
134 //First check if any previously visible tracks simply disappeared.
135 // --> Create std::set for faster searches.
136 std::set<const Trk::Track*> newtracksset;
137 std::vector< std::pair<const Trk::Track*, const SoMaterial*> >::const_iterator it(tracks.begin()), itE(tracks.end());
138 for (;it!=itE;++it)
139 newtracksset.insert(it->first);
140 std::set<const Trk::Track*>::const_iterator newtrackssetEnd(newtracksset.end());
141
142 // --> Check old tracks versus this set - remove if no match:
143 std::map< const Trk::Track*, const SoMaterial* >::iterator it2, it2E = m_d->tracks2mat.end();
144 for (it2=m_d->tracks2mat.begin();it2!=it2E;) {
145 if (newtracksset.find(it2->first)==newtrackssetEnd) {
146 m_d->removeTrackFromPRDs(it2->first,false);//measurements
147 m_d->removeTrackFromPRDs(it2->first,true);//outliers
148 m_d->tracks2mat.erase(it2++);//postfix ++ operator must be used as here (due to the erase call)
149 } else {
150 ++it2;
151 }
152 }
153
154 // Next, check all tracks that are now visible - if not previously
155 // visible we add their pointers to the relevant handles. If just
156 // the material changed, we make sure the prd handle updates its
157 // material.
158 it2E=m_d->tracks2mat.end();
159 for (it=tracks.begin();it!=itE;++it) {
160 it2 = m_d->tracks2mat.find(it->first);
161 if (it2==it2E) {
162 m_d->tracks2mat[it->first] = it->second;
163 m_d->addTrackToPRDs(it->first, false );//measurements
164 m_d->addTrackToPRDs(it->first, true );//outliers
165 } else {
166 //we need to update the track material - but only if it changed of course.
167 if (it->second!=it2->second) {
168 m_d->tracks2mat[it->first] = it->second;
169 m_d->updateMaterialOfPRDs(it->first, false );//measurements
170 m_d->updateMaterialOfPRDs(it->first, true );//outliers
171 }
172 }
173 }
174 messageVerbose("visibleTracksChanged end");
175
176}

◆ warnUndeletedInstances()

void VP1HelperClassBase::warnUndeletedInstances ( )
staticinherited

Definition at line 183 of file VP1HelperClassBase.cxx.

184{
186 return;
187 std::cout << "WARNING: Detected "<<vp1helperclassbase_instanceMap.size()<<" undeleted helper class instances:"<<std::endl;
188
189 std::map<VP1HelperClassBase*,QString>::iterator it,itE(vp1helperclassbase_instanceMap.end());
190 for (it = vp1helperclassbase_instanceMap.begin();it!=itE;++it) {
191 std::cout << " ==> "<<it->first<<": "<<it->first->m_helpername.toStdString()
192 << (it->second.isEmpty()?QString(""):" (in system "+it->second+")").toStdString()<<std::endl;
193 }
194}

Member Data Documentation

◆ m_d

Imp* PRDTrackSegmentHelper::m_d
private

Definition at line 63 of file PRDTrackSegmentHelper.h.

◆ m_helpername

QString VP1HelperClassBase::m_helpername
privateinherited

Definition at line 67 of file VP1HelperClassBase.h.

◆ m_system

IVP1System* VP1HelperClassBase::m_system
privateinherited

Definition at line 68 of file VP1HelperClassBase.h.

◆ s_vp1verbose

const bool VP1HelperClassBase::s_vp1verbose = VP1QtUtils::environmentVariableIsOn("VP1_VERBOSE_OUTPUT")
staticprivateinherited

Definition at line 69 of file VP1HelperClassBase.h.


The documentation for this class was generated from the following files: