ATLAS Offline Software
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | Static Private Attributes | List of all members
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 }

◆ ~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)
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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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)
123  messageVerbose(s);
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.

59 { m_helpername = n; }

◆ 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 }

◆ str() [1/30]

static 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]

static QString VP1String::str ( const bool  b)
inlinestaticinherited

Definition at line 53 of file VP1String.h.

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

◆ str() [3/30]

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

Definition at line 50 of file VP1String.h.

50 { return c; }

◆ str() [4/30]

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

Definition at line 81 of file VP1String.h.

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

◆ str() [5/30]

static 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 >
static 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 >
static 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 >
static 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]

static 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 }

◆ 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)+")"; }

◆ 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)+")"; }

◆ 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 >
static 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]

static QString VP1String::str ( int  n)
inlinestaticinherited

Definition at line 77 of file VP1String.h.

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

◆ str() [24/30]

static QString VP1String::str ( long  n)
inlinestaticinherited

Definition at line 75 of file VP1String.h.

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

◆ str() [25/30]

static QString VP1String::str ( qlonglong  n)
inlinestaticinherited

Definition at line 79 of file VP1String.h.

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

◆ str() [26/30]

static QString VP1String::str ( qulonglong  n)
inlinestaticinherited

Definition at line 80 of file VP1String.h.

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

◆ str() [27/30]

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

Definition at line 73 of file VP1String.h.

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

◆ str() [28/30]

static QString VP1String::str ( uint  n)
inlinestaticinherited

Definition at line 78 of file VP1String.h.

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

◆ str() [29/30]

static QString VP1String::str ( ulong  n)
inlinestaticinherited

Definition at line 76 of file VP1String.h.

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

◆ str() [30/30]

static 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 {
486  return itInfo == m_d->prdsOnTracksAndSegments.end() ? 0 : &(itInfo->second);
487 }

◆ verbose()

static 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

◆ 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");
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:
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");
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:
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 {
185  if (vp1helperclassbase_instanceMap.empty())
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:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
PRDTrackSegmentHelper::Imp::removeTrackFromPRDs
void removeTrackFromPRDs(const Trk::Track *, bool outliers)
Definition: PRDTrackSegmentHelper.cxx:412
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
PRDTrackSegmentHelper::Imp::updateMaterialOfPRDs
void updateMaterialOfPRDs(const Trk::Track *, bool outliers)
Definition: PRDTrackSegmentHelper.cxx:450
PRDTrackSegmentHelper::Imp::addSegmentToPRDs
void addSegmentToPRDs(const Trk::Segment *)
Definition: PRDTrackSegmentHelper.cxx:254
hist_file_dump.d
d
Definition: hist_file_dump.py:137
VP1HelperClassBase::m_helpername
QString m_helpername
Definition: VP1HelperClassBase.h:67
VP1HelperClassBase::messageVerbose
void messageVerbose(const QString &) const
Definition: VP1HelperClassBase.cxx:78
VP1HelperClassBase::s_vp1verbose
static const bool s_vp1verbose
Definition: VP1HelperClassBase.h:69
skel.it
it
Definition: skel.GENtoEVGEN.py:396
VP1Msg::debug
static bool debug()
Definition: VP1Msg.h:32
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
VP1HelperClassBase::m_system
IVP1System * m_system
Definition: VP1HelperClassBase.h:68
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
x
#define x
VP1String::str
static QString str(const QString &s)
Definition: VP1String.h:49
VP1HelperClassBase::messageDebug
void messageDebug(const QString &) const
Definition: VP1HelperClassBase.cxx:65
mapkey::sys
@ sys
Definition: TElectronEfficiencyCorrectionTool.cxx:42
TruthTest.itE
itE
Definition: TruthTest.py:25
PRDTrackSegmentHelper::Imp::tracks2mat
std::map< const Trk::Track *, const SoMaterial * > tracks2mat
Definition: PRDTrackSegmentHelper.cxx:34
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
VP1Msg::prefix_msg
static const char * prefix_msg()
Definition: VP1Msg.h:56
lumiFormat.i
int i
Definition: lumiFormat.py:85
z
#define z
beamspotman.n
n
Definition: beamspotman.py:731
PRDTrackSegmentHelper::Imp::addTrackToPRDs
void addTrackToPRDs(const Trk::Track *, bool outliers)
Definition: PRDTrackSegmentHelper.cxx:365
test_pyathena.parent
parent
Definition: test_pyathena.py:15
IVP1System::name
const QString & name() const
Definition: IVP1System.cxx:50
PRDTrackSegmentHelper::Imp::theclass
PRDTrackSegmentHelper * theclass
Definition: PRDTrackSegmentHelper.cxx:31
hist_file_dump.f
f
Definition: hist_file_dump.py:135
PRDTrackSegmentHelper::Imp::prd2handles
std::map< const Trk::PrepRawData *, QList< PRDHandleBase * > > * prd2handles
Definition: PRDTrackSegmentHelper.cxx:32
VP1QtInventorUtils::sbcol2qcol
static QColor sbcol2qcol(const SbColor &)
Definition: VP1QtInventorUtils.cxx:1142
python.selection.number
number
Definition: selection.py:20
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
PRDTrackSegmentHelper::Imp::removeSegmentFromPRDs
void removeSegmentFromPRDs(const Trk::Segment *)
Definition: PRDTrackSegmentHelper.cxx:296
VP1Msg::prefix_debug
static const char * prefix_debug()
Definition: VP1Msg.h:57
PRDTrackSegmentHelper::Imp::prdsOnTracksAndSegments
std::map< const Trk::PrepRawData *, TracksAndSegments > prdsOnTracksAndSegments
Definition: PRDTrackSegmentHelper.cxx:59
python.PyAthena.v
v
Definition: PyAthena.py:154
VP1Msg::prefix_verbose
static const char * prefix_verbose()
Definition: VP1Msg.h:59
y
#define y
PRDTrackSegmentHelper::m_d
Imp * m_d
Definition: PRDTrackSegmentHelper.h:62
PRDTrackSegmentHelper::Imp::segments2mat
std::map< const Trk::Segment *, const SoMaterial * > segments2mat
Definition: PRDTrackSegmentHelper.cxx:35
VP1HelperClassBase::message
void message(const QString &) const
Definition: VP1HelperClassBase.cxx:49
str
Definition: BTagTrackIpAccessor.cxx:11
VP1Msg::verbose
static bool verbose()
Definition: VP1Msg.h:31
VP1HelperClassBase::VP1HelperClassBase
VP1HelperClassBase(IVP1System *sys=0, QString helpername="")
Definition: VP1HelperClassBase.cxx:28
python.compressB64.c
def c
Definition: compressB64.py:93
IVP1System::message
void message(const QString &) const
Definition: IVP1System.cxx:336