ATLAS Offline Software
VP1VertexCollection.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
7 // //
8 // Implementation of class VP1VertexCollection //
9 // //
10 // Author: Andreas.Wildauer@cern.ch //
11 // Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
12 // Ben Zastovnik //
13 // Initial version: July 2008 //
14 // //
16 
22 #include "VP1Base/IVP13DSystem.h"
25 #include "VP1Base/VP1Msg.h"
26 
27 #include <QStringList>
28 #include <QComboBox>
29 
30 #include <Inventor/nodes/SoTranslation.h>
31 #include <Inventor/nodes/SoSeparator.h>
32 #include <Inventor/nodes/SoSphere.h>
33 #include <Inventor/nodes/SoPointSet.h>
34 #include <Inventor/nodes/SoVertexProperty.h>
35 #include <Inventor/nodes/SoMatrixTransform.h>
36 #include <Inventor/nodes/SoMaterial.h>
37 #include <Inventor/SbMatrix.h>
38 #include <Inventor/SoPath.h>
39 
41 #include "VxVertex/VxContainer.h"
42 #include "TrkTrack/LinkToTrack.h"
46 #include "GaudiKernel/SystemOfUnits.h"
47 
48 #include <iostream>
49 
50 
51 //____________________________________________________________________
52 QList<VP1StdCollection*> VP1VertexCollection::createCollections(VertexSysController*controller)
53 {
54  QList<VP1StdCollection*> l;
55  for (QString key : VP1SGContentsHelper(controller->systemBase()).getKeys<VxContainer>()) {
56  VP1VertexCollection * col = new VP1VertexCollection(controller,key);
57  col->init();
58  l << col;
59  }
60  return l;
61 }
62 
63 //____________________________________________________________________
65 public:
68  QString key;
69 
70  // std::map <SoNode *, const Trk::VxCandidate *> nodeToVertexMap;//fixme: obsolete
71  void findAssociatedTracks(const Trk::VxCandidate * vtx,
72  QList<const Trk::Track*>& tracks,
73  QList<const Trk::TrackParticleBase*>& trackparticles);//fixme: use
74 
75  class VertexHandle {
76  public:
78  ~VertexHandle() { if (m_sep) m_sep->unref(); }
79 
81 
83  if (!m_attached) {
84  if (m_sep)
85  m_sep->removeAllChildren();
86  return;
87  }
88  if (!m_sep) {
89  m_sep = new SoSeparator;
90  m_sep->ref();
91  }
92  if (m_sep->getNumChildren()>0)
93  m_sep->removeAllChildren();
94  SoMaterial* mat = determineMaterial();
95  // std::cout<<"This: "<<this<<" Got material at:"<<mat<<", m_randommaterial="<<m_randommaterial<<std::endl;
96  m_sep->addChild ( mat );
98  }
99 
100  SoMaterial * determineMaterial() {
101  switch(collHandle()->colourBy()) {
103  {
104  if (!m_randommaterial) {
105  m_randommaterial = new SoMaterial;
106  m_randommaterial->ref();
108  }
109  return m_randommaterial;
110  }
112  default:
113  return collHandle()->material();
114  }
115  }
116 
118  if (m_attached)
119  return;
120  m_attached = true;
122  collSep->addChild(m_sep);
123  }
124  void ensureDetached(SoSeparator * collSep) {
125  if (!m_attached)
126  return;
127  m_attached = false;
128  if (m_sep)
129  collSep->removeChild(m_sep);
130  }
131 
132  const Trk::VxCandidate * vertex() const { return m_vertex; }
133  SoSeparator * sep() const { return m_sep; }
134  bool attached() const { return m_attached; }
136  switch(m_vertex->vertexType()) {
142  case Trk::V0Lambda:
143  case Trk::V0LambdaBar:
144  case Trk::V0KShort:
146  default:
148  }
149  }
151  // std::cout<<"rerandomiseRandomMaterial"<<std::endl;
152  if ( !m_randommaterial )//We will anyway rerandomize it when we need it
153  return;
154 
155  double r2 = 0.3*0.3;
156  unsigned i(0);
157  double r,g,b;
158  bool ok;
159  while (true) {
160  r = (rand() / static_cast<double>(RAND_MAX));
161  g = (rand() / static_cast<double>(RAND_MAX));
162  b = (rand() / static_cast<double>(RAND_MAX));
163  ok = true;
164  //For now we make sure that we avoid black and red. This should be updated from bgd and highlight col automatically! (fixme).
165  // -> and we should probably also make sure that tracks close in (eta,phi) are well separated in colour-space.
166  if ( (r-1.0)*(r-1.0)+g*g+b*b < r2*0.5 )//avoid red (distance)
167  ok = false;
168  else if ( r*r/(r*r+g*g+b*b) > 0.8 )//avoid red (angle)
169  ok = false;
170  else if ( r*r+g*g+b*b < r2*2.0 )//avoid black
171  ok = false;
172  if (ok)
173  break;
174  ++i;
175  if (i>50 ) {
176  r2 *= 0.99;//To avoid problem in case we add too many forbidden spheres.
177  if (i>1000) {
178  //Just a safety
179  collHandle()->systemBase()->message("TrackHandleBase::rerandomiseRandomMaterial Warning: Random colour could"
180  " not be selected such as to satisfy all separation criteria");
181  break;
182  }
183  }
184  }
185  // std::cout<<"rerandomiseRandomMaterial - setting to"<<r<<","<<g<<","<<b<<std::endl;
186 
188  0.15, /*brightness*/
189  0.0 /*transparency*/);
190  }
191 
192  private:
196  SoSeparator* m_sep;
197  SoMaterial* m_randommaterial;
201  if (r==0) {
202  SoPointSet * points = new SoPointSet;
203  SoVertexProperty * vertices = new SoVertexProperty;
204  vertices->vertex.set1Value(0,pos.x(), pos.y(), pos.z());
205  points->numPoints=1;
206  points->vertexProperty.setValue(vertices);
207  m_sep->addChild(points);
208  return;
209  }
210 
211  SoTranslation * translation = new SoTranslation;
212  translation->translation.setValue ( pos.x(), pos.y(), pos.z() );
213  m_sep->addChild ( translation );
214 
215  if (r>0) {
216  //Transform sphere into an ellipsoid using the error matrix:
217 // const Trk::CovarianceMatrix& errMat = m_vertex->recVertex().errorPosition().covariance();
218  const AmgSymMatrix(3)& errMat = m_vertex->recVertex().covariancePosition(); // see https://svnweb.cern.ch/trac/atlasoff/browser/Tracking/TrkEvent/VxVertex/trunk/VxVertex/RecVertex.h
219 
220  //FIXME: std::min hack for now!!
221  double a(errMat(0,0)), b(errMat(0,1)), c(errMat(0,2)),
222  d(errMat(1,1)), e(errMat(1,2)),
223  f(errMat(2,2));
224  double det = a*(d*f-e*e) + 2*b*c*e - d*c*c-f*b*b;
225  if (det>0) {
226  double sixthrootofdet = exp(log(det)/6.0);
227  double invdet = 1.0/sixthrootofdet;
228  a *= invdet;
229  b *= invdet;
230  c *= invdet;
231  d *= invdet;
232  e *= invdet;
233  f *= invdet;
234  SbMatrix sbMat(a,b,c,0,
235  b,d,e,0,
236  c,e,f,0,
237  0,0,0,1);
238  SoMatrixTransform * matTrans = new SoMatrixTransform();
239  matTrans->matrix.setValue(sbMat);
240  m_sep->addChild (matTrans);
241  } else {
242  //fixme: warn
243  }
244  }
245 
246  SoSphere * sphere = new SoSphere;
247  sphere->radius = fabs(r);
248  m_sep->addChild ( sphere );
249  }
250  };
252  return vh->type() & controller->reconCutAllowedTypes();//nb: cache allowed types val?
253  }
254 
256  if (cut(vh,controller))
258  else
260  }
261 
262  QList<VertexHandle*> vertices;
263  //Extra widgets:
264  QComboBox * comboBox_colourby = nullptr;
265  static QString comboBoxEntry_ColourByCollection() { return "Uniform"; }
266  static QString comboBoxEntry_ColourByRandom() { return "Random"; }
267 
268  SoMaterial * m_randommaterial = nullptr;
269 };
270 
271 
272 //____________________________________________________________________
274  : VP1StdCollection(controller->systemBase(),"VP1VertexCollection_"+key), m_d(new Imp),
275  m_colourby(COLOUR_PERCOLLECTION)
276 {
277  m_d->theclass = this;
278  m_d->controller = controller;
279  m_d->key = key;
280  m_d->comboBox_colourby = new QComboBox;
281  connect(controller,SIGNAL(reconVertexRepresentationChanged(const double&)),this,SLOT(updateAllShapes()));
282  connect(controller,SIGNAL(reconCutAllowedTypesChanged(VertexCommonFlags::ReconVertexTypeFlags)),this,SLOT(recheckAllCuts()));
283  connect(this,SIGNAL(tracksFromVertexChanged(QList<std::pair<const SoMaterial*,QList<const Trk::Track*> > >&)),
284  dynamic_cast<VP1VertexSystem*>(controller->systemBase()),SLOT(updateVertexToTracks(QList<std::pair<const SoMaterial*,QList<const Trk::Track*> > >&))); // FIXME - only for data!
285 
286 }
287 
288 //____________________________________________________________________
290 {
291  for (Imp::VertexHandle* vh : m_d->vertices)
292  delete vh;
293 
294  // delete m_d->comboBox_colourby; DONE by baseclass
295  delete m_d;
296 }
297 
299 {
300  VP1StdCollection::init();//this call is required
301 
302  // setupSettingsFromController(common()->controller());
303 
304  //Setup colour by:
305  m_d->comboBox_colourby->setToolTip("Determine how vertices from this collection are coloured.");
306  QStringList l;
309  m_d->comboBox_colourby->addItems(l);
310  m_d->comboBox_colourby->setCurrentIndex(0);//corresponds to per collection.
311  connect(m_d->comboBox_colourby,SIGNAL(currentIndexChanged(int)),
312  this,SLOT(colourByComboBoxItemChanged()));
313 
314  connect(this,SIGNAL(visibilityChanged(bool)),this,SLOT(collVisibilityChanged(bool)));
316 
317  connect(m_d->controller,SIGNAL(rerandomise()),this,SLOT(rerandomiseRandomVertexColours()));
318 
319 }
320 
322 {
323  messageVerbose("setColourBy called");
324  if (m_colourby==cb)
325  return;
326  messageVerbose("setColourBy ==> Changed");
327  m_colourby=cb;
328 
329  //Update gui combobox:
330  QString targetText;
331  switch(cb) {
332  case COLOUR_RANDOM:
333  targetText = Imp::comboBoxEntry_ColourByRandom();
334  break;
335  default:
338  break;
339  }
340  if (targetText!=m_d->comboBox_colourby->currentText()) {
341  int i = m_d->comboBox_colourby->findText(targetText);
342  if (i>=0&&i<m_d->comboBox_colourby->count()) {
343  bool save = m_d->comboBox_colourby->blockSignals(true);
344  m_d->comboBox_colourby->setCurrentIndex(i);
345  m_d->comboBox_colourby->blockSignals(save);
346  } else {
347  message("ERROR: Problems finding correct text in combo box");
348  }
349  }
350 
351  // //Actual material updates (could do this more efficiently by just updating material, but shouldn't matter for vertices)
352  updateAllShapes();
353 
354  // Now work out what colours to send to the track system
355  QList<const Trk::Track*> tracks;
356  QList<const Trk::TrackParticleBase*> trackparticles;
357  QList< std::pair<const SoMaterial*, QList< const Trk::Track*> > > colAndTracks;
358  for (Imp::VertexHandle* vh : m_d->vertices){
359  m_d->findAssociatedTracks(vh->vertex(),tracks,trackparticles);
360  const SoMaterial* mat = vh->attached()?vh->determineMaterial():0; // store either the material, or 0 for hidden vertices
361  colAndTracks.append(std::pair<const SoMaterial*, QList< const Trk::Track*> >(mat, tracks));
362  }
363  emit tracksFromVertexChanged(colAndTracks);
364 
365 }
366 
367 //____________________________________________________________________
369 {
370  return QList<QWidget*>() << m_d->comboBox_colourby;
371 
372 }
373 
374 //____________________________________________________________________
376 {
377  messageVerbose("Collection detail level combo box changed index");
380  else
382 }
383 
384 //____________________________________________________________________
386 {
387  return m_d->key;
388 }
389 
390 //____________________________________________________________________
392  QList<const Trk::Track*>& tracks,
393  QList<const Trk::TrackParticleBase*>& trackparticles)
394 {
395  tracks.clear();
396  trackparticles.clear();
397  if (!vtx)
398  return;
399 
400  const std::vector<Trk::VxTrackAtVertex*> * tmpVxTAVtx = vtx->vxTrackAtVertex();
401  for ( std::vector<Trk::VxTrackAtVertex*>::const_iterator itr = tmpVxTAVtx->begin(); itr != tmpVxTAVtx->end(); ++itr) {
402  Trk::ITrackLink * link = *itr ? (*itr)->trackOrParticleLink() : 0;
403  if (!link) continue;
404 
405  //Attempt to get Trk::TrackParticleBase:
406 
407  Trk::LinkToTrackParticleBase* linkToTrackParticle = dynamic_cast<Trk::LinkToTrackParticleBase*>(link);
408  const Trk::TrackParticleBase * tp((linkToTrackParticle && linkToTrackParticle->isValid())?linkToTrackParticle->cachedElement():0);
409 
410  //Attempt to get Trk::Track - directly or from the track particle:
411  const Trk::Track* trk(0);
412  if (tp) {
413  trk = tp->originalTrack();
414  } else {
415  Trk::LinkToTrack* linkToTrack = dynamic_cast<Trk::LinkToTrack*>(link);
416  if (linkToTrack && linkToTrack->isValid())
417  trk = linkToTrack->cachedElement();
418  }
419 
420  //Store:
421  if (tp)
422  trackparticles << tp;
423  if (trk)
424  tracks << trk;
425  }
426 
427 }
428 
429 //____________________________________________________________________
431 {
432  VP1MaterialButton::setMaterialParameters( m, 0.66667/*red*/, 1.0/*green*/, 0.0/*blue*/, 0.15 /*brightness*/ );
433 }
434 
435 //____________________________________________________________________
437 {
439  QList<const Trk::Track*> tracks;
440  QList<const Trk::TrackParticleBase*> trackparticles;
441  QList< std::pair<const SoMaterial*, QList< const Trk::Track*> > > colAndTracks;
442  for (Imp::VertexHandle* vh : m_d->vertices){
443  m_d->recheckCut(vh);
444  m_d->findAssociatedTracks(vh->vertex(),tracks,trackparticles);
445  const SoMaterial* mat = vh->attached()?vh->determineMaterial():0; // store either the material, or 0 for hidden vertices
446  colAndTracks.append(std::pair<const SoMaterial*, QList< const Trk::Track*> >(mat, tracks));
447  }
448  emit tracksFromVertexChanged(colAndTracks);
449  largeChangesEnd();
450 }
451 
452 //____________________________________________________________________
454 {
455  messageVerbose("VP1VertexCollection::updateAllShapes()");
456 
458  for (Imp::VertexHandle* vh : m_d->vertices)
460  largeChangesEnd();
461 }
462 
463 //____________________________________________________________________
465 {
466  const VxContainer* vxContainer;
467  if (!VP1SGAccessHelper(systemBase()).retrieve(vxContainer, m_d->key))
468  return false;
469 
470  int i(0);
471  for ( VxContainer::const_iterator vtxItr=vxContainer->begin(); vtxItr != vxContainer->end() ; ++vtxItr ) {
472  const Trk::VxCandidate* theVxCandidate = *vtxItr;
473  if (!theVxCandidate)
474  continue;
475  m_d->vertices << new Imp::VertexHandle(theVxCandidate, this);
476  if (!(i++%20))
477  systemBase()->updateGUI();
478  }
479 
480  recheckAllCuts();
481  //TODO: Option in controller for colouring first vertex in the
482  //collection (the first is the identified primary vertex), with a
483  //distinct colour.
484 
485  return true;
486 }
487 
488 //____________________________________________________________________
489 QStringList VP1VertexCollection::infoOnClicked(SoPath* pickedPath)
490 {
491  static_cast<IVP13DSystem*>(systemBase())->deselectAll();
492 
493  //Get Trk::VxCandidate pointer associated with the clicked node:
494  while (pickedPath->getLength()>3&&pickedPath->getNodeFromTail(0)->getTypeId()!=SoSeparator::getClassTypeId())
495  pickedPath->pop();
496  if (pickedPath->getNodeFromTail(0)->getTypeId()!=SoSeparator::getClassTypeId())
497  return QStringList() << "ERROR: Could not get vertex information for picked Node (1)";
498  SoSeparator * pickedSep = static_cast<SoSeparator *>(pickedPath->getNodeFromTail(0));
499 
500  Imp::VertexHandle*vertexHandle(0);
501  for (Imp::VertexHandle*vh : m_d->vertices) {
502  if (vh->sep()==pickedSep) {
503  vertexHandle = vh;
504  break;
505  }
506  }
507  if (!vertexHandle)
508  return QStringList() << "ERROR: Could not get vertex information for picked Node (1)";
509  const Trk::VxCandidate * vtx = vertexHandle->vertex();
510 
511  QStringList l;
512  if (m_d->controller->printInfoOnClick()) {
513 
514  //Make output:
515  l <<"Reconstructed vertex from collection "+text()+":" ;
516  l << "--Position [CLHEP::mm]: ("+str(vtx->recVertex().position().x()/Gaudi::Units::mm)+", "+
517  str(vtx->recVertex().position().y()/Gaudi::Units::mm)+", "+str(vtx->recVertex().position().z()/Gaudi::Units::mm)+")";
518 
519  //Track associations. (in the future we will use them to tell the
520  //track system to e.g. colour tracks by vertex - for now just print the number of those):
521  QList<const Trk::Track*> tracks;
522  QList<const Trk::TrackParticleBase*> trackparticles;
523  m_d->findAssociatedTracks(vtx,tracks,trackparticles);
524  l << "--#Tracks used: "+str(vtx->vxTrackAtVertex()->size());
526  l << "--#Trk::Track's: "+str(tracks.count());
527  l << "--#Trk::TrackParticleBase's: "+str(trackparticles.count());
528  l <<"======== Dump ========";
529  std::ostringstream s;
530  vtx->dump(s);
531  l << QString(s.str().c_str()).split('\n');
532  l <<"======================";
533  }
534  }
535 
536  if (m_d->controller->zoomOnClick()) {
537  std::set<SoCamera*> cameras = static_cast<IVP13DSystem*>(systemBase())->getCameraList();
538  std::set<SoCamera*>::iterator it,itE = cameras.end();
539  for (it=cameras.begin();it!=itE;++it)
540  VP1CameraHelper::animatedZoomToPath(*it,collSep(),pickedPath,2.0,1.0);
541  }
542 
543  return l;
544 }
545 
546 //____________________________________________________________________
548 {
549  if (VP1Msg::verbose())
550  messageVerbose("VP1VertexCollection::collVisibilityChanged => "+str(vis));
551  if (vis) {
552  recheckAllCuts();
553  } else {
554  QList< std::pair<const SoMaterial*, QList< const Trk::Track*> > > colAndTracks;
555  emit tracksFromVertexChanged(colAndTracks);
556  }
557 }
558 
559 //____________________________________________________________________
561 {
562  if (!isLoaded())
563  return;
564  messageVerbose("rerandomiseRandomVertexColours start");
566  for (Imp::VertexHandle* vh : m_d->vertices)
568  largeChangesEnd();
569  messageVerbose("rerandomiseRandomVertexColours end");
570 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
VP1VertexCollection::m_d
Imp * m_d
Definition: VP1VertexCollection.h:73
LinkToTrack.h
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
beamspotman.r
def r
Definition: beamspotman.py:676
VP1VertexSystem
Definition: VP1VertexSystem.h:16
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
VP1VertexCollection::Imp::VertexHandle::determineMaterial
SoMaterial * determineMaterial()
Definition: VP1VertexCollection.cxx:100
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
VP1VertexSystem.h
Trk::VxCandidate::recVertex
const Trk::RecVertex & recVertex(void) const
Returns a reference to reconstructed vertex.
Definition: VxCandidate.h:132
VP1VertexCollection::Imp::comboBoxEntry_ColourByRandom
static QString comboBoxEntry_ColourByRandom()
Definition: VP1VertexCollection.cxx:266
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
VP1VertexCollection.h
VP1StdCollection::material
SoMaterial * material() const
Definition: VP1StdCollection.cxx:220
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
VertexCommonFlags::RVT_Primary
@ RVT_Primary
Definition: VertexCommonFlags.h:26
VP1MaterialButton.h
TRTCalib_Extractor.det
det
Definition: TRTCalib_Extractor.py:36
hist_file_dump.d
d
Definition: hist_file_dump.py:137
VertexSysController.h
VP1Msg.h
VP1CameraHelper.h
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:55
VP1HelperClassBase::messageVerbose
void messageVerbose(const QString &) const
Definition: VP1HelperClassBase.cxx:78
Trk::KinkVtx
@ KinkVtx
Kink Vertex.
Definition: VertexType.h:32
fillPileUpNoiseLumi.connect
string connect
Definition: fillPileUpNoiseLumi.py:70
CSV_InDetExporter.new
new
Definition: CSV_InDetExporter.py:145
VertexCommonFlags::RVT_Kink
@ RVT_Kink
Definition: VertexCommonFlags.h:30
Trk::VxCandidate::vertexType
VertexType vertexType() const
return the type of the vertex
Definition: VxCandidate.h:120
skel.it
it
Definition: skel.GENtoEVGEN.py:396
VP1VertexCollection::Imp::key
QString key
Definition: VP1VertexCollection.cxx:68
VP1VertexCollection::collVisibilityChanged
void collVisibilityChanged(bool vis)
Definition: VP1VertexCollection.cxx:547
VP1VertexCollection::recheckAllCuts
void recheckAllCuts()
Definition: VP1VertexCollection.cxx:436
ParticleTest.tp
tp
Definition: ParticleTest.py:25
VP1VertexCollection::Imp
Definition: VP1VertexCollection.cxx:64
VP1StdCollection::init
virtual void init(VP1MaterialButtonBase *button=0)
Definition: VP1StdCollection.cxx:73
VP1VertexCollection
Definition: VP1VertexCollection.h:32
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
VP1StdCollection::largeChangesBegin
virtual void largeChangesBegin()
Definition: VP1StdCollection.cxx:228
VP1CameraHelper::animatedZoomToPath
static VP1CameraHelper * animatedZoomToPath(SoCamera *camera, SoGroup *sceneroot, SoPath *path, double duration_in_secs=1.0, double clipVolPercent=100.0, double slack=1.0, const SbVec3f &lookat=SbVec3f(999, 999, 999), const SbVec3f &upvec=SbVec3f(999, 999, 999), bool varySpeed=true, bool forceCircular=false)
Definition: VP1CameraHelper.cxx:371
VP1VertexCollection::~VP1VertexCollection
virtual ~VP1VertexCollection()
Definition: VP1VertexCollection.cxx:289
VP1VertexCollection::Imp::VertexHandle::updateShapes
void updateShapes(VertexSysController *controller)
Definition: VP1VertexCollection.cxx:82
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
VertexSysController::reconCutAllowedTypes
VertexCommonFlags::ReconVertexTypeFlags reconCutAllowedTypes() const
Definition: VertexSysController.cxx:318
VP1String::str
static QString str(const QString &s)
Definition: VP1String.h:49
VP1VertexCollection::Imp::VertexHandle::m_collHandle
VP1VertexCollection * m_collHandle
Definition: VP1VertexCollection.cxx:193
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:50
VP1VertexCollection::Imp::VertexHandle
Definition: VP1VertexCollection.cxx:75
VertexCommonFlags::RVT_Other
@ RVT_Other
Definition: VertexCommonFlags.h:32
VertexSysController::printVerboseInfoOnClick
bool printVerboseInfoOnClick() const
Definition: VertexSysController.cxx:255
TruthTest.itE
itE
Definition: TruthTest.py:25
VertexCommonFlags::RVT_Secondary
@ RVT_Secondary
Definition: VertexCommonFlags.h:27
VP1VertexCollection::Imp::m_randommaterial
SoMaterial * m_randommaterial
Definition: VP1VertexCollection.cxx:268
VP1SGContentsHelper::getKeys
QStringList getKeys() const
Definition: VP1SGContentsHelper.h:55
Trk::TrackParticleBase
Definition: TrackParticleBase.h:41
GeoPrimitives.h
checkTP.save
def save(self, fileName="./columbo.out")
Definition: checkTP.py:178
VP1VertexCollection::Imp::theclass
VP1VertexCollection * theclass
Definition: VP1VertexCollection.cxx:66
Trk::VxCandidate::vxTrackAtVertex
std::vector< Trk::VxTrackAtVertex * > * vxTrackAtVertex(void)
Unconst pointer to the vector of tracks Required by some of the vertex fitters.
Definition: VxCandidate.h:144
LArG4FSStartPointFilter.rand
rand
Definition: LArG4FSStartPointFilter.py:80
VP1VertexCollection::Imp::VertexHandle::m_randommaterial
SoMaterial * m_randommaterial
Definition: VP1VertexCollection.cxx:197
VertexCommonFlags::RVT_V0
@ RVT_V0
Definition: VertexCommonFlags.h:28
VP1VertexCollection::Imp::controller
VertexSysController * controller
Definition: VP1VertexCollection.cxx:67
VP1VertexCollection::Imp::findAssociatedTracks
void findAssociatedTracks(const Trk::VxCandidate *vtx, QList< const Trk::Track * > &tracks, QList< const Trk::TrackParticleBase * > &trackparticles)
Definition: VP1VertexCollection.cxx:391
lumiFormat.i
int i
Definition: lumiFormat.py:85
VP1VertexCollection::Imp::cut
bool cut(VertexHandle *vh, VertexSysController *controller)
Definition: VP1VertexCollection.cxx:251
Trk::V0LambdaBar
@ V0LambdaBar
Temporary addition for V0 LambdaBar.
Definition: VertexType.h:34
VP1MaterialButton::setMaterialParameters
static void setMaterialParameters(SoMaterial *m, const QColor &, const double &brightness=0.0, const double &transp=0.0)
Definition: VP1MaterialButton.cxx:802
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
VertexSysController::zoomOnClick
bool zoomOnClick() const
Definition: VertexSysController.cxx:256
VP1VertexCollection::infoOnClicked
QStringList infoOnClicked(SoPath *pickedPath)
Definition: VP1VertexCollection.cxx:489
IVP13DSystem.h
VP1StdCollection::visibilityChanged
void visibilityChanged(bool)
VP1VertexCollection::COLOURBY
COLOURBY
Definition: VP1VertexCollection.h:48
VP1VertexCollection::Imp::recheckCut
void recheckCut(VertexHandle *vh)
Definition: VP1VertexCollection.cxx:255
Trk::VxCandidate::dump
virtual MsgStream & dump(MsgStream &sl) const
Output Method for MsgStream, to be overloaded by child classes.
Definition: VxCandidate.cxx:106
Trk::LinkToTrack
AUTO - An Undocumented Tracking Object.
Definition: LinkToTrack.h:20
VxTrackAtVertex.h
VP1VertexCollection::Imp::vertices
QList< VertexHandle * > vertices
Definition: VP1VertexCollection.cxx:262
VP1VertexCollection::Imp::VertexHandle::VertexHandle
VertexHandle(const Trk::VxCandidate *v, VP1VertexCollection *collHandle)
Definition: VP1VertexCollection.cxx:77
VP1VertexCollection::tracksFromVertexChanged
void tracksFromVertexChanged(QList< std::pair< const SoMaterial *, QList< const Trk::Track * > > > &)
VP1VertexCollection::assignDefaultMaterial
void assignDefaultMaterial(SoMaterial *) const
Definition: VP1VertexCollection.cxx:430
hist_file_dump.f
f
Definition: hist_file_dump.py:135
VP1StdCollection::text
QString text() const
Definition: VP1StdCollection.cxx:132
VP1VertexCollection::Imp::VertexHandle::ensureAttached
void ensureAttached(SoSeparator *collSep, VertexSysController *controller)
Definition: VP1VertexCollection.cxx:117
VP1VertexCollection::Imp::VertexHandle::m_sep
SoSeparator * m_sep
Definition: VP1VertexCollection.cxx:196
VP1VertexCollection::setColourBy
void setColourBy(COLOURBY)
Definition: VP1VertexCollection.cxx:321
VxContainer.h
Trk::Vertex::position
const Amg::Vector3D & position() const
return position of vertex
Definition: Vertex.cxx:72
VxContainer
Definition: VxContainer.h:28
VP1VertexCollection::updateAllShapes
void updateAllShapes()
Definition: VP1VertexCollection.cxx:453
Trk::V0KShort
@ V0KShort
Temporary addition for KShort.
Definition: VertexType.h:35
VP1VertexCollection::rerandomiseRandomVertexColours
void rerandomiseRandomVertexColours()
Definition: VP1VertexCollection.cxx:560
VertexCommonFlags::RVT_Conversion
@ RVT_Conversion
Definition: VertexCommonFlags.h:29
LinkToTrackParticleBase.h
Trk::LinkToTrackParticleBase
Definition: LinkToTrackParticleBase.h:17
VP1VertexCollection::Imp::VertexHandle::vertex
const Trk::VxCandidate * vertex() const
Definition: VP1VertexCollection.cxx:132
VP1VertexCollection::COLOUR_PERCOLLECTION
@ COLOUR_PERCOLLECTION
Definition: VP1VertexCollection.h:48
VP1VertexCollection::load
bool load()
Definition: VP1VertexCollection.cxx:464
VP1HelperClassBase::systemBase
IVP1System * systemBase() const
Definition: VP1HelperClassBase.h:50
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
VP1VertexCollection::Imp::VertexHandle::attached
bool attached() const
Definition: VP1VertexCollection.cxx:134
Trk::V0Vtx
@ V0Vtx
Vertex from V0 Decay.
Definition: VertexType.h:31
VP1VertexCollection::init
void init(VP1MaterialButtonBase *mat=0)
Definition: VP1VertexCollection.cxx:298
VP1VertexCollection::m_colourby
COLOURBY m_colourby
Definition: VP1VertexCollection.h:75
VP1StdCollection::isLoaded
bool isLoaded() const
Definition: VP1StdCollection.cxx:148
VP1VertexCollection::Imp::VertexHandle::rerandomiseRandomMaterial
void rerandomiseRandomMaterial()
Definition: VP1VertexCollection.cxx:150
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
VP1SGContentsHelper
Definition: VP1SGContentsHelper.h:26
query_example.col
col
Definition: query_example.py:7
Trk::SecVtx
@ SecVtx
Secondary Vertex.
Definition: VertexType.h:28
VP1MaterialButtonBase
Definition: VP1MaterialButton.h:25
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
VP1VertexCollection::colourBy
COLOURBY colourBy() const
Definition: VP1VertexCollection.h:49
VP1StdCollection::largeChangesEnd
virtual void largeChangesEnd()
Definition: VP1StdCollection.cxx:239
VP1VertexCollection::Imp::VertexHandle::type
VertexCommonFlags::ReconVertexTypeFlag type()
Definition: VP1VertexCollection.cxx:135
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
python.PyAthena.v
v
Definition: PyAthena.py:154
VP1VertexCollection::Imp::VertexHandle::m_attached
bool m_attached
Definition: VP1VertexCollection.cxx:194
VP1VertexCollection::Imp::comboBox_colourby
QComboBox * comboBox_colourby
Definition: VP1VertexCollection.cxx:264
a
TList * a
Definition: liststreamerinfos.cxx:10
IVP1System::updateGUI
void updateGUI()
Definition: IVP1System.cxx:262
VP1VertexCollection::Imp::VertexHandle::actualBuildShape
void actualBuildShape(VertexSysController *controller)
Definition: VP1VertexCollection.cxx:198
Trk::VxCandidate
Definition: VxCandidate.h:27
IVP13DSystem
Definition: IVP13DSystem.h:31
VP1StdCollection::collSep
SoSeparator * collSep() const
All 3D objects from this coll.
Definition: VP1StdCollection.cxx:212
VP1VertexCollection::VP1VertexCollection
VP1VertexCollection(VertexSysController *controller, const QString &key)
Definition: VP1VertexCollection.cxx:273
VP1VertexCollection::provideText
QString provideText() const
Definition: VP1VertexCollection.cxx:385
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
VP1VertexCollection::COLOUR_RANDOM
@ COLOUR_RANDOM
Definition: VP1VertexCollection.h:48
VP1VertexCollection::Imp::VertexHandle::ensureDetached
void ensureDetached(SoSeparator *collSep)
Definition: VP1VertexCollection.cxx:124
VP1VertexCollection::Imp::comboBoxEntry_ColourByCollection
static QString comboBoxEntry_ColourByCollection()
Definition: VP1VertexCollection.cxx:265
VertexSysController::printInfoOnClick
bool printInfoOnClick() const
Definition: VertexSysController.cxx:254
VP1HelperClassBase::message
void message(const QString &) const
Definition: VP1HelperClassBase.cxx:49
VertexSysController::reconVertexRepresentation
double reconVertexRepresentation() const
Definition: VertexSysController.cxx:308
VP1VertexCollection::Imp::VertexHandle::collHandle
VP1VertexCollection * collHandle()
Definition: VP1VertexCollection.cxx:80
VP1Msg::verbose
static bool verbose()
Definition: VP1Msg.h:31
Trk::PriVtx
@ PriVtx
Primary Vertex.
Definition: VertexType.h:27
VP1StdCollection
Definition: VP1StdCollection.h:31
VP1SGAccessHelper
Definition: VP1SGAccessHelper.h:25
VP1VertexCollection::colourByComboBoxItemChanged
void colourByComboBoxItemChanged()
Definition: VP1VertexCollection.cxx:375
VP1VertexCollection::createCollections
static QList< VP1StdCollection * > createCollections(VertexSysController *controller)
Definition: VP1VertexCollection.cxx:52
VertexCommonFlags::ReconVertexTypeFlag
ReconVertexTypeFlag
Definition: VertexCommonFlags.h:25
VP1VertexCollection::defaultColourBy
virtual COLOURBY defaultColourBy() const
Definition: VP1VertexCollection.h:50
Trk::ConvVtx
@ ConvVtx
Converstion Vertex.
Definition: VertexType.h:30
VertexCommonFlags::RVT_Pileup
@ RVT_Pileup
Definition: VertexCommonFlags.h:31
python.compressB64.c
def c
Definition: compressB64.py:93
VP1SGAccessHelper.h
VertexSysController
Definition: VertexSysController.h:24
IVP1System::message
void message(const QString &) const
Definition: IVP1System.cxx:336
jobOptions.points
points
Definition: jobOptions.GenevaPy8_Zmumu.py:97
VP1VertexCollection::Imp::VertexHandle::m_vertex
const Trk::VxCandidate * m_vertex
Definition: VP1VertexCollection.cxx:195
VP1VertexCollection::Imp::VertexHandle::sep
SoSeparator * sep() const
Definition: VP1VertexCollection.cxx:133
Trk::PileUp
@ PileUp
Pile Up Vertex.
Definition: VertexType.h:29
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
Trk::V0Lambda
@ V0Lambda
Temporary addition for V0 Lambda.
Definition: VertexType.h:33
VP1VertexCollection::Imp::VertexHandle::~VertexHandle
~VertexHandle()
Definition: VP1VertexCollection.cxx:78
VP1SGContentsHelper.h
VP1VertexCollection::provideExtraWidgetsForGuiRow
QList< QWidget * > provideExtraWidgetsForGuiRow() const
Definition: VP1VertexCollection.cxx:368
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37