ATLAS Offline Software
Loading...
Searching...
No Matches
TrackHandleBase Class Referenceabstract

#include <TrackHandleBase.h>

Inheritance diagram for TrackHandleBase:
Collaboration diagram for TrackHandleBase:

Classes

class  Imp

Public Member Functions

 TrackHandleBase (TrackCollHandleBase *)
virtual ~TrackHandleBase ()
TrackSysCommonData * common () const
void setVisible (bool)
 use by the collection handle.
bool visible () const
TrackCollHandleBase * collHandle () const
const std::set< GeoPVConstLink > & touchedMuonChambers () const
void update3DObjects (bool invalidatePropagatedPoints=false, float maxR=0.0)
void updateInDetProjections ()
void updateMuonProjections ()
void updateMaterial ()
void rerandomiseRandomMaterial ()
void updateRandomColourTransparencyAndBrightness ()
SoMaterial * currentMaterial () const
QStringList baseInfo () const
virtual QStringList clicked () const =0
 Called when user selects the node (stringlist is displayed in messagebox).
virtual Amg::Vector3D momentum () const
virtual std::optional< Amg::Vector3D > startPoint () const
 returns 0 if can't find start point.
virtual std::optional< Amg::Vector3D > endPoint () const
 returns 0 if can't find start point.
virtual int pdgCode () const
 0 means unknown
double charge () const
virtual double mass () const
bool hasCharge () const
bool hasMass () const
virtual bool hasSubSystemHitInfo () const
virtual bool isRun4EDM () const
virtual bool isIDTrack () const
virtual unsigned getNPixelHits () const
virtual unsigned getNSCTHits () const
virtual unsigned getNTRTHits () const
virtual unsigned getNMuonHits () const
virtual unsigned getNMuonPhiHits () const
 The number of phi hits is part of hit counts below (i.e.
virtual unsigned getNMDTHits () const
virtual unsigned getNRPCHits () const
virtual unsigned getNTGCHits () const
virtual unsigned getNCSCHits () const
virtual unsigned getNMMHits () const
virtual unsigned getNsTGCHits () const
virtual unsigned getNMuonPrecisionHits () const
virtual const Trk::FitQuality * getFitQuality () const
virtual const MuonGM::MuonReadoutElement * getMuonReadoutElement (const Trk::RIO_OnTrack &mb) const
QList< AssociatedObjectHandleBase * > getVisibleMeasurements () const
TrackCommonFlags::TSOSPartsFlags shownTSOSParts () const
TrackCommonFlags::TSOSPartsFlags customColouredTSOSParts () const
std::vector< Amg::Vector3D > * hackGetPointsPropagated ()
 FIXME.
virtual QString shortInfo () const
 returns mom and hit information about track
virtual QString type () const
 return very short word with type (maybe link with collection type?)
virtual void fillObjectBrowser (QList< QTreeWidgetItem * > &list)
 Called in child classes.
virtual void updateObjectBrowser ()
QTreeWidgetItem * browserTreeItem () const

Static Public Member Functions

static int numberOfInstances ()
static double unknown ()

Protected Member Functions

virtual double calculateCharge () const
virtual const Trk::Track * provide_pathInfoTrkTrack () const
virtual const std::vector< Amg::Vector3D > * provide_pathInfoPoints ()
virtual Trk::ParticleHypothesis extrapolationParticleHypothesis () const
 Default implementation of this next method bases hypothesis on pdgCode() and charge():
virtual void ensureTouchedMuonChambersInitialised () const
void registerTouchedMuonChamber (const GeoPVConstLink &) const
 If not earlier, touched muon chambers must me registered at latest when this method is invoked.
virtual void visibleStateChanged ()
 override if need to take action in this case.
virtual void currentMaterialChanged ()
const QList< AssociatedObjectHandleBase * > & getAllAscObjHandles () const
 override if need to take action in this case.
virtual bool containsDetElement (const QString &) const
void registerAssocObject (AssociatedObjectHandleBase *)
 Trackhandle assumes ownership.
virtual void ensureInitTSOSs (std::unique_ptr< std::vector< AssociatedObjectHandleBase * > > &)
 Ensure that the TSOSs are initialized.

Private Member Functions

 TrackHandleBase (const TrackHandleBase &)
TrackHandleBase & operator= (const TrackHandleBase &)
void clearLine ()
void registerTrack ()
void updateShapes_TSOSWithMeasurements ()
void updateShapes_TSOSWithErrors ()
void updateShapes_TSOSWithMaterialEffects ()
void setShownTSOSParts (TrackCommonFlags::TSOSPartsFlags f)
void setCustomColouredTSOSParts (TrackCommonFlags::TSOSPartsFlags f)
AssocObjAttachmentHandle * getAttachmentHandle (int regionIndex, const double &crossoverval)

Private Attributes

Imp * m_d
bool m_visible
TrackCollHandleBase * m_collhandle
SoMaterial * m_currentmaterial

Friends

class AssocObjAttachmentHandle
class AssociatedObjectHandleBase
class TrackCollHandleBase

Detailed Description

Definition at line 57 of file TrackHandleBase.h.

Constructor & Destructor Documentation

◆ TrackHandleBase() [1/2]

TrackHandleBase::TrackHandleBase ( TrackCollHandleBase * ch)

Definition at line 203 of file TrackHandleBase.cxx.

204 : m_d(new Imp(this)), m_visible(false), m_collhandle(ch), m_currentmaterial(nullptr)
205{
206 assert(m_collhandle);
208}
SoMaterial * m_currentmaterial
TrackCollHandleBase * m_collhandle

◆ ~TrackHandleBase()

TrackHandleBase::~TrackHandleBase ( )
virtual

Definition at line 211 of file TrackHandleBase.cxx.

212{
213 if (m_d->extraRepresentation)
214 common()->unregisterTrack(m_d->extraRepresentation);
215
216 //FIXME: if visible, should we call detach first?
217 for(AssociatedObjectHandleBase*ao : m_d->associatedObjects)
218 delete ao;
219
220 //Delete points the following way since we might use same points for raw and propagated.
221 if (m_d->points_propagated != m_d->points_raw)
222 delete m_d->points_propagated;
223 delete m_d->points_raw;
224 if (m_d->points_propagated_id_projections != m_d->points_raw_id_projections)
225 delete m_d->points_propagated_id_projections;
226 delete m_d->points_raw_id_projections;
227 if (m_d->points_propagated_muon_projections != m_d->points_raw_muon_projections)
228 delete m_d->points_propagated_muon_projections;
229 delete m_d->points_raw_muon_projections;
230
231 clearLine();
233 m_currentmaterial->unref();
234 if (m_d->randommaterial)
235 m_d->randommaterial->unref();
236 if (m_d->label_sep)
237 m_d->label_sep->unref();
238
239 std::map<std::pair<int,double>,AssocObjAttachmentHandle *>::iterator it,itE(m_d->attachmentHandles.end());
240 for (it = m_d->attachmentHandles.begin();it!=itE;++it)
241 delete it->second;
242
243 delete m_d;
245}
friend class AssociatedObjectHandleBase
friend class AssocObjAttachmentHandle
TrackSysCommonData * common() const
void unregisterTrack(SoNode *)

◆ TrackHandleBase() [2/2]

TrackHandleBase::TrackHandleBase ( const TrackHandleBase & )
private

Member Function Documentation

◆ baseInfo()

QStringList TrackHandleBase::baseInfo ( ) const

coverity 17186: this code is unreachable int pdg = pdgCode(); if (pdg) { bool ok; QString name = VP1ParticleData::particleName(pdg,ok); if (ok) l << "pdg: "+QString::number(pdg)+" ["+name+"]"; else l << "pdg: "+QString::number(pdg); }

return l;

Definition at line 1549 of file TrackHandleBase.cxx.

1550{
1551 QStringList l;
1553 mom /= CLHEP::GeV;
1554 if (mom.mag2()==0.0) {
1555 l << "Momentum : 0 (undefined)";
1556 } else {
1557 l << "Momentum [GeV]: "+VP1Msg::str(mom);
1558 l << "|Pt|/|P| [GeV]: "+VP1Msg::str(mom.perp())+" / " + VP1Msg::str(mom.mag());
1559 l << VP1Msg::str("(")+QChar(0x03B7)+","+QChar(0x03D5)+VP1Msg::str(")=(")
1561
1562 l << "Eta: "+VP1Msg::str(mom.eta());
1563 l << "Phi: "+VP1Msg::str(VP1LinAlgUtils::phiFromXY(mom.x(), mom.y() ));
1564 }
1565 l<<"Hit summary: Pix["+VP1Msg::str(getNPixelHits())+"], SCT["+VP1Msg::str(getNSCTHits())+"], TRT["+VP1Msg::str(getNTRTHits())
1566 +"], MDT["+QString::number(getNMDTHits())+"], RPC["+QString::number(getNRPCHits())+"], TGC["+QString::number(getNTGCHits())+"], CSC["+QString::number(getNCSCHits())+"] MM["+QString::number(getNMMHits())+"], sTGC["+QString::number(getNsTGCHits())+"]";
1567
1568 return l;
1582}
virtual unsigned getNTRTHits() const
virtual unsigned getNMDTHits() const
virtual unsigned getNMMHits() const
virtual unsigned getNSCTHits() const
virtual unsigned getNTGCHits() const
virtual unsigned getNCSCHits() const
virtual unsigned getNRPCHits() const
virtual Amg::Vector3D momentum() const
virtual unsigned getNsTGCHits() const
virtual unsigned getNPixelHits() const
static double phiFromXY(const double &x, const double &y)
static QString str(const QString &s)
Definition VP1String.h:49
Eigen::Matrix< double, 3, 1 > Vector3D
l
Printing final latex table to .tex output file.

◆ browserTreeItem()

QTreeWidgetItem * TrackHandleBase::browserTreeItem ( ) const

Definition at line 2024 of file TrackHandleBase.cxx.

2024{return m_d->m_objBrowseTree;}

◆ calculateCharge()

double TrackHandleBase::calculateCharge ( ) const
protectedvirtual

Reimplemented in TrackHandle_SimulationTrack, TrackHandle_TrackParticle, TrackHandle_TruthTrack, and TrackHandle_xAODTrackParticle.

Definition at line 1479 of file TrackHandleBase.cxx.

1480{
1481 //look up from pdgCode(); // valid PDG codes > 0
1482 int pdg = pdgCode();
1483 if (pdg) {
1484 bool ok;
1485 double c = VP1ParticleData::particleCharge(pdg,ok);
1486 if (ok) {
1487 VP1Msg::messageDebug("TrackHandleBase: Determined charge from pdg code "+VP1Msg::str(pdg)+": "+VP1Msg::str(c));
1488 return c;
1489 }
1490 }
1491
1492 //Attempt to look at the first trackparameter.
1493 const Trk::Track * trk = provide_pathInfoTrkTrack();
1494 if (trk&&!trk->trackParameters()->empty()) {
1495 double c = (*(trk->trackParameters()->begin()))->charge();
1496 VP1Msg::messageDebug("TrackHandleBase: Determined charge from first track parameter: "+VP1Msg::str(c));
1497 return c;
1498 }
1499 if (VP1Msg::verbose())
1500 VP1Msg::messageDebug("Failed to determine charge.");
1501
1502 return unknown();
1503}
virtual const Trk::Track * provide_pathInfoTrkTrack() const
virtual int pdgCode() const
0 means unknown
static double unknown()
const DataVector< const TrackParameters > * trackParameters() const
Return a pointer to a vector of TrackParameters.
static bool verbose()
Definition VP1Msg.h:31
static void messageDebug(const QString &)
Definition VP1Msg.cxx:39
static double particleCharge(const int &pdgcode, bool &ok)

◆ charge()

double TrackHandleBase::charge ( ) const

Definition at line 1506 of file TrackHandleBase.cxx.

1507{
1508 if (m_d->chargeinit)
1509 return m_d->charge;
1510 m_d->chargeinit = true;
1511 m_d->charge = calculateCharge();
1512 return m_d->charge;
1513}
virtual double calculateCharge() const

◆ clearLine()

void TrackHandleBase::clearLine ( )
private

Definition at line 639 of file TrackHandleBase.cxx.

640{
641 if (m_d->line) {
642 common()->unregisterTrack(m_d->line);
643 m_d->line->unref();
644 m_d->line=nullptr;
645 }
646}

◆ clicked()

virtual QStringList TrackHandleBase::clicked ( ) const
pure virtual

Called when user selects the node (stringlist is displayed in messagebox).

Reimplementations should add info momInfo() to get momentum, eta, phi, pid,charge, mass printed.

Implemented in TrackHandle_SimulationTrack, TrackHandle_TrackContainer, TrackHandle_TrackParticle, TrackHandle_TrkSegment, TrackHandle_TrkTrack, TrackHandle_TruthTrack, and TrackHandle_xAODTrackParticle.

◆ collHandle()

TrackCollHandleBase * TrackHandleBase::collHandle ( ) const
inline

Definition at line 69 of file TrackHandleBase.h.

69{ return m_collhandle; }

◆ common()

TrackSysCommonData * TrackHandleBase::common ( ) const

Definition at line 254 of file TrackHandleBase.cxx.

255{
256 return m_collhandle->common();
257}

◆ containsDetElement()

virtual bool TrackHandleBase::containsDetElement ( const QString & ) const
inlineprotectedvirtual

Reimplemented in TrackHandle_TrackContainer, and TrackHandle_TrkTrack.

Definition at line 165 of file TrackHandleBase.h.

165{return false; }

◆ currentMaterial()

SoMaterial * TrackHandleBase::currentMaterial ( ) const
inline

Definition at line 77 of file TrackHandleBase.h.

77{ return m_currentmaterial; }

◆ currentMaterialChanged()

virtual void TrackHandleBase::currentMaterialChanged ( )
inlineprotectedvirtual

Reimplemented in TrackHandle_TrackContainer, TrackHandle_TrkSegment, and TrackHandle_TrkTrack.

Definition at line 161 of file TrackHandleBase.h.

161{};

◆ customColouredTSOSParts()

TrackCommonFlags::TSOSPartsFlags TrackHandleBase::customColouredTSOSParts ( ) const

Definition at line 305 of file TrackHandleBase.cxx.

306{
307 return m_d->customColouredTSOSParts;//FIXME: inline?
308}

◆ endPoint()

std::optional< Amg::Vector3D > TrackHandleBase::endPoint ( ) const
virtual

returns 0 if can't find start point.

Definition at line 1605 of file TrackHandleBase.cxx.

1606{
1607 m_d->ensureLoadPathInfo();
1608 if (m_d->pathInfo_TrkTrack) {
1609 Trk::TrackStates::const_reverse_iterator tsos_iter = m_d->pathInfo_TrkTrack->trackStateOnSurfaces()->rend();
1610 Trk::TrackStates::const_reverse_iterator tsos_end = m_d->pathInfo_TrkTrack->trackStateOnSurfaces()->rbegin();
1611 for (; tsos_iter != tsos_end; ++tsos_iter) {
1612 if (common()->trackSanityHelper()->isSafe(*tsos_iter)) {
1613 const Trk::TrackParameters* trackParam = (*tsos_iter)->trackParameters();
1614 if (common()->trackSanityHelper()->isSafe(trackParam))
1615 return trackParam->position();
1616 }
1617 }
1618 } else if (m_d->pathInfo_Points&&!m_d->pathInfo_Points->empty()) {
1619 return m_d->pathInfo_Points->back();
1620 }
1621 return {};
1622}
std::reverse_iterator< const_iterator > const_reverse_iterator
Definition DataVector.h:870
const Amg::Vector3D & position() const
Access method for the position.
ParametersBase< TrackParametersDim, Charged > TrackParameters

◆ ensureInitTSOSs()

void TrackHandleBase::ensureInitTSOSs ( std::unique_ptr< std::vector< AssociatedObjectHandleBase * > > & tsos_ascobjs)
protectedvirtual

Ensure that the TSOSs are initialized.

This is called by update3DObjects() and should be called by any method that needs to access the TSOSs.

Reimplemented in TrackHandle_TrackContainer.

Definition at line 379 of file TrackHandleBase.cxx.

380{
381 std::cout<<"TrackHandleBase::ensureInitTSOSs"<<std::endl;
382 if (tsos_ascobjs)
383 return;
384
385 tsos_ascobjs = std::make_unique<std::vector<AssociatedObjectHandleBase*>>();
386 m_d->ensureLoadPathInfo();
387
388 if (!m_d->pathInfo_TrkTrack||!m_d->pathInfo_TrkTrack->trackParameters()||m_d->pathInfo_TrkTrack->trackParameters()->empty())
389 return;
390
391 tsos_ascobjs->reserve(m_d->pathInfo_TrkTrack->trackParameters()->size());
392
393 unsigned parindex(0);
394
395 AscObj_TSOS* ascObjNeedDistToNext(nullptr);
396 Trk::TrackStates::const_iterator tsos_iter = m_d->pathInfo_TrkTrack->trackStateOnSurfaces()->begin();
397 Trk::TrackStates::const_iterator tsos_end = m_d->pathInfo_TrkTrack->trackStateOnSurfaces()->end();
398 const Trk::TrackParameters* trackParam(nullptr);
399 for (; tsos_iter != tsos_end; ++tsos_iter) {
400 trackParam = (*tsos_iter)->trackParameters();
401 if (!VP1TrackSanity::isSafe(*tsos_iter)) {
402 parindex++;
403 continue;
404 }
405 if (trackParam&&!VP1TrackSanity::isSafe(trackParam)) {
406 parindex++;
407 continue;
408 }
409 //FIXME: likewise check that we don't have a bad measurement, material effect, ...
410 if (ascObjNeedDistToNext&&trackParam) {
411 ascObjNeedDistToNext->setDistToNextPar((trackParam->position()-ascObjNeedDistToNext->approxCenter()).mag());
412 //ascObjNeedDistToNext value will be overwritten below
413 }
414 VP1Msg::messageVerbose("Adding TSOS at index:"+QString::number(parindex));
415 ascObjNeedDistToNext = m_d->addTSOS(*tsos_iter,parindex++);
416 }
417
418}
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:861
static void messageVerbose(const QString &)
Definition VP1Msg.cxx:84
static bool isSafe(const Trk::TrackStateOnSurface *)

◆ ensureTouchedMuonChambersInitialised()

virtual void TrackHandleBase::ensureTouchedMuonChambersInitialised ( ) const
inlineprotectedvirtual

◆ extrapolationParticleHypothesis()

Trk::ParticleHypothesis TrackHandleBase::extrapolationParticleHypothesis ( ) const
protectedvirtual

Default implementation of this next method bases hypothesis on pdgCode() and charge():

Definition at line 1532 of file TrackHandleBase.cxx.

1533{
1534 switch(abs(pdgCode())) {
1535 case 211: return Trk::pion;
1536 case 2212: return Trk::proton;
1537 case 11: return Trk::electron;
1538 case 13: return Trk::muon;
1539 case 321://k+
1540 case 323://k*+
1541 return Trk::kaon;
1542 case 0:
1543 default:
1545 }
1546}
double charge() const
virtual unsigned getNMuonHits() const
bool hasCharge() const

◆ fillObjectBrowser()

void TrackHandleBase::fillObjectBrowser ( QList< QTreeWidgetItem * > & list)
virtual

Called in child classes.

Reimplemented in TrackHandle_TrackContainer, and TrackHandle_TrkTrack.

Definition at line 2007 of file TrackHandleBase.cxx.

2007 {
2008 VP1Msg::messageVerbose("TrackHandleBase::fillObjectBrowser");
2009
2010 assert(m_d->m_objBrowseTree==0);
2011 m_d->m_objBrowseTree = new QTreeWidgetItem();
2012
2013 QString direction = QString::fromUtf8("(\u03B7,\u03D5)=[") + QString::number(momentum().eta(),'f',2) + ","+QString::number(momentum().phi(),'f',2)+"], ";
2014 QString l = direction + shortInfo();
2015 m_d->m_objBrowseTree->setText(0, type()+QString(QString::number(listOfItems.size())) );
2016 m_d->m_objBrowseTree->setText(1, l );
2017
2018 if (!visible()) {
2019 m_d->m_objBrowseTree->setFlags(Qt::ItemFlags()); // not selectable, not enabled
2020 }
2021 listOfItems << browserTreeItem();
2022}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
virtual QString shortInfo() const
returns mom and hit information about track
QTreeWidgetItem * browserTreeItem() const
bool visible() const
virtual QString type() const
return very short word with type (maybe link with collection type?)
const Amg::Vector3D & direction() const
Method to retrieve the direction at the Intersection.

◆ getAllAscObjHandles()

const QList< AssociatedObjectHandleBase * > & TrackHandleBase::getAllAscObjHandles ( ) const
protected

override if need to take action in this case.

Return list of all AscObj handles. Not guaranteed to be filled unless tsoses are visible.

Definition at line 1632 of file TrackHandleBase.cxx.

1633{
1634 return m_d->associatedObjects;
1635}

◆ getAttachmentHandle()

AssocObjAttachmentHandle * TrackHandleBase::getAttachmentHandle ( int regionIndex,
const double & crossoverval )
private

Definition at line 1466 of file TrackHandleBase.cxx.

1467{
1468 std::map<std::pair<int,double>,AssocObjAttachmentHandle *>::iterator
1469 it = m_d->attachmentHandles.find(std::make_pair(regionIndex,crossoverval));
1470 if (it!=m_d->attachmentHandles.end())
1471 return it->second;
1472 AssocObjAttachmentHandle *attachHandle
1473 = new AssocObjAttachmentHandle(common()->trackLODManager()->getLODHandle(regionIndex,crossoverval),this);
1474 m_d->attachmentHandles[std::make_pair(regionIndex,crossoverval)] = attachHandle;
1475 return attachHandle;
1476}

◆ getFitQuality()

virtual const Trk::FitQuality * TrackHandleBase::getFitQuality ( ) const
inlinevirtual

Reimplemented in TrackHandle_TrkTrack.

Definition at line 120 of file TrackHandleBase.h.

120{return nullptr;}

◆ getMuonReadoutElement()

const MuonGM::MuonReadoutElement * TrackHandleBase::getMuonReadoutElement ( const Trk::RIO_OnTrack & mb) const
virtual

Definition at line 1964 of file TrackHandleBase.cxx.

1964 {
1965 const MuonGM::MuonReadoutElement* re = nullptr;
1966 switch (TrkObjToString::type(&mb)){
1969 break;
1972 break;
1975 break;
1978 break;
1981 break;
1982 case TrkObjToString::MM:
1984 break;
1985 default:
1986 VP1Msg::message("TrackHandleBase::getReadoutElement:: Unable to find matching readoutElement");
1987 }
1988 return re;
1989 }
const std::regex re(r_e)
const RpcReadoutElement * getRpcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
const MdtReadoutElement * getMdtReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
const MMReadoutElement * getMMReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
const TgcReadoutElement * getTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
const sTgcReadoutElement * getsTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
const CscReadoutElement * getCscReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
static MeasurementType type(const Trk::PrepRawData *prd)
static const MuonGM::MuonDetectorManager * muonDetMgr()
static void message(const QString &, IVP1System *sys=0)
Definition VP1Msg.cxx:30

◆ getNCSCHits()

virtual unsigned TrackHandleBase::getNCSCHits ( ) const
inlinevirtual

◆ getNMDTHits()

virtual unsigned TrackHandleBase::getNMDTHits ( ) const
inlinevirtual

◆ getNMMHits()

virtual unsigned TrackHandleBase::getNMMHits ( ) const
inlinevirtual

Reimplemented in TrackHandle_TrkSegment, and TrackHandle_TrkTrack.

Definition at line 117 of file TrackHandleBase.h.

117{ return 0; }

◆ getNMuonHits()

virtual unsigned TrackHandleBase::getNMuonHits ( ) const
inlinevirtual

Definition at line 111 of file TrackHandleBase.h.

◆ getNMuonPhiHits()

virtual unsigned TrackHandleBase::getNMuonPhiHits ( ) const
inlinevirtual

The number of phi hits is part of hit counts below (i.e.

RPC hits include phi hits), but reported separately due to importance.

Reimplemented in TrackHandle_TrackParticle, TrackHandle_TrkSegment, TrackHandle_TrkTrack, and TrackHandle_xAODTrackParticle.

Definition at line 112 of file TrackHandleBase.h.

◆ getNMuonPrecisionHits()

virtual unsigned TrackHandleBase::getNMuonPrecisionHits ( ) const
inlinevirtual

Reimplemented in TrackHandle_TrackParticle.

Definition at line 119 of file TrackHandleBase.h.

119{ return getNMDTHits() + getNCSCHits(); } // This should really only count eta csc hits.

◆ getNPixelHits()

virtual unsigned TrackHandleBase::getNPixelHits ( ) const
inlinevirtual

◆ getNRPCHits()

virtual unsigned TrackHandleBase::getNRPCHits ( ) const
inlinevirtual

◆ getNSCTHits()

virtual unsigned TrackHandleBase::getNSCTHits ( ) const
inlinevirtual

◆ getNsTGCHits()

virtual unsigned TrackHandleBase::getNsTGCHits ( ) const
inlinevirtual

Reimplemented in TrackHandle_TrkTrack.

Definition at line 118 of file TrackHandleBase.h.

118{ return 0; }

◆ getNTGCHits()

virtual unsigned TrackHandleBase::getNTGCHits ( ) const
inlinevirtual

◆ getNTRTHits()

virtual unsigned TrackHandleBase::getNTRTHits ( ) const
inlinevirtual

◆ getVisibleMeasurements()

QList< AssociatedObjectHandleBase * > TrackHandleBase::getVisibleMeasurements ( ) const

Definition at line 1994 of file TrackHandleBase.cxx.

1995{
1996 QList<AssociatedObjectHandleBase*> l;
1997 if (!m_d->tsos_ascobjs) return l;
1998 std::vector<AssociatedObjectHandleBase*>::iterator
1999 it(m_d->tsos_ascobjs->begin()),
2000 itE(m_d->tsos_ascobjs->end());
2001 for (;it!=itE;++it)
2002 if ((*it)->hasMeasurement()&&(*it)->visible())
2003 l << (*it);
2004 return l;
2005}

◆ hackGetPointsPropagated()

std::vector< Amg::Vector3D > * TrackHandleBase::hackGetPointsPropagated ( )

FIXME.

Used to get position of track for use in short tubes etc.

Definition at line 1637 of file TrackHandleBase.cxx.

1638{
1639 m_d->ensureInitPointsPropagated();
1640 return m_d->points_propagated;
1641}

◆ hasCharge()

bool TrackHandleBase::hasCharge ( ) const
inline

Definition at line 100 of file TrackHandleBase.h.

100{ return charge()!=unknown(); }

◆ hasMass()

bool TrackHandleBase::hasMass ( ) const
inline

Definition at line 101 of file TrackHandleBase.h.

101{ return mass()!=unknown(); }
virtual double mass() const

◆ hasSubSystemHitInfo()

virtual bool TrackHandleBase::hasSubSystemHitInfo ( ) const
inlinevirtual

Reimplemented in TrackHandle_TrackParticle, TrackHandle_TrkSegment, TrackHandle_TrkTrack, and TrackHandle_xAODTrackParticle.

Definition at line 105 of file TrackHandleBase.h.

105{ return false; }

◆ isIDTrack()

bool TrackHandleBase::isIDTrack ( ) const
virtual

Definition at line 1624 of file TrackHandleBase.cxx.

1625{
1626 std::optional<Amg::Vector3D> start = startPoint();
1627 if (!start) return false;
1628 return start->perp()<1100 &&fabs( start->z())<3500;
1629}
virtual std::optional< Amg::Vector3D > startPoint() const
returns 0 if can't find start point.

◆ isRun4EDM()

virtual bool TrackHandleBase::isRun4EDM ( ) const
inlinevirtual

Reimplemented in TrackHandle_TrackContainer.

Definition at line 106 of file TrackHandleBase.h.

106{ return false; }

◆ mass()

double TrackHandleBase::mass ( ) const
virtual

Definition at line 1516 of file TrackHandleBase.cxx.

1517{
1518 if (m_d->massinit)
1519 return m_d->mass;
1520 m_d->massinit = true;
1521 int pdg = pdgCode();
1522 if (pdg) {
1523 bool ok;
1524 double m = VP1ParticleData::particleMass(pdg,ok);
1525 if (ok)
1526 m_d->mass = m;
1527 }
1528 return m_d->mass;
1529}
static double particleMass(const int &pdgcode, bool &ok)

◆ momentum()

virtual Amg::Vector3D TrackHandleBase::momentum ( ) const
inlinevirtual

◆ numberOfInstances()

int TrackHandleBase::numberOfInstances ( )
static

Definition at line 248 of file TrackHandleBase.cxx.

249{
250 return Imp::ntrackhandles;
251}

◆ operator=()

TrackHandleBase & TrackHandleBase::operator= ( const TrackHandleBase & )
private

◆ pdgCode()

virtual int TrackHandleBase::pdgCode ( ) const
inlinevirtual

0 means unknown

Reimplemented in TrackHandle_SimulationTrack, and TrackHandle_TruthTrack.

Definition at line 87 of file TrackHandleBase.h.

◆ provide_pathInfoPoints()

virtual const std::vector< Amg::Vector3D > * TrackHandleBase::provide_pathInfoPoints ( )
inlineprotectedvirtual

Reimplemented in TrackHandle_TrackContainer, and TrackHandle_TrkSegment.

Definition at line 152 of file TrackHandleBase.h.

152{ return nullptr; }

◆ provide_pathInfoTrkTrack()

virtual const Trk::Track * TrackHandleBase::provide_pathInfoTrkTrack ( ) const
inlineprotectedvirtual

◆ registerAssocObject()

void TrackHandleBase::registerAssocObject ( AssociatedObjectHandleBase * ao)
protected

Trackhandle assumes ownership.

Definition at line 1447 of file TrackHandleBase.cxx.

1448{
1449 if (VP1Msg::verbose()) {
1450 if (m_d->associatedObjects.contains(ao)) {
1451 m_d->theclass->collHandle()->systemBase()->message("TrackHandleBase::registerAssocObject ERROR: object already registered!");
1452 return;
1453 }
1454 }
1455 //Assume ownership of this associated object:
1456 if (!ao) {
1457 m_d->theclass->collHandle()->systemBase()->message("TrackHandleBase::registerAssocObject ERROR: object is null!");
1458 return;
1459 }
1460
1461 m_d->associatedObjects << ao;
1462}

◆ registerTouchedMuonChamber()

void TrackHandleBase::registerTouchedMuonChamber ( const GeoPVConstLink & chamberPV) const
protected

If not earlier, touched muon chambers must me registered at latest when this method is invoked.

Call this from constructor - (at least) once for each muon chamber "touched" by this track.

Definition at line 1267 of file TrackHandleBase.cxx.

1268{
1269 m_d->touchedmuonchambers.insert(chamberPV);
1270}

◆ registerTrack()

void TrackHandleBase::registerTrack ( )
private

Definition at line 649 of file TrackHandleBase.cxx.

650{
651 if (m_d->line)
652 common()->registerTrack(m_d->line,this);
653}
void registerTrack(SoNode *, TrackHandleBase *)

◆ rerandomiseRandomMaterial()

void TrackHandleBase::rerandomiseRandomMaterial ( )

Definition at line 1393 of file TrackHandleBase.cxx.

1394{
1395 if ( !m_d->randommaterial )//We will anyway rerandomize it when we need it
1396 return;
1397
1398 double r2 = 0.3*0.3;
1399 unsigned i(0);
1400 double r,g,b;
1401 bool ok;
1402 while (true) {
1403 r = (rand() / static_cast<double>(RAND_MAX));
1404 g = (rand() / static_cast<double>(RAND_MAX));
1405 b = (rand() / static_cast<double>(RAND_MAX));
1406 ok = true;
1407 //For now we make sure that we avoid black and red. This should be updated from bgd and highlight col automatically! (fixme).
1408 // -> and we should probably also make sure that tracks close in (eta,phi) are well separated in colour-space.
1409 if ( (r-1.0)*(r-1.0)+g*g+b*b < r2*0.5 )//avoid red (distance)
1410 ok = false;
1411 else if ( r*r/(r*r+g*g+b*b) > 0.8 )//avoid red (angle)
1412 ok = false;
1413 else if ( r*r+g*g+b*b < r2*2.0 )//avoid black
1414 ok = false;
1415 if (ok)
1416 break;
1417 ++i;
1418 if (i>50 ) {
1419 r2 *= 0.99;//To avoid problem in case we add too many forbidden spheres.
1420 if (i>1000) {
1421 //Just a safety
1422 m_d->theclass->collHandle()->systemBase()->message("TrackHandleBase::rerandomiseRandomMaterial Warning: Random colour could"
1423 " not be selected such as to satisfy all separation criterias");
1424 break;
1425 }
1426 }
1427 }
1429 collHandle()->collMaterialBrightness(),
1430 collHandle()->collMaterialTransparency());
1431}
TrackCollHandleBase * collHandle() const
static void setMaterialParameters(SoMaterial *m, const QColor &, const double &brightness=0.0, const double &transp=0.0)
int r
Definition globals.cxx:22

◆ setCustomColouredTSOSParts()

void TrackHandleBase::setCustomColouredTSOSParts ( TrackCommonFlags::TSOSPartsFlags f)
private

Definition at line 355 of file TrackHandleBase.cxx.

356{
357 if (m_d->customColouredTSOSParts==f)
358 return;
359 //Figure out changed bits:
360 TrackCommonFlags::TSOSPartsFlags change(m_d->customColouredTSOSParts ^ f);//^ is XOR
361 m_d->customColouredTSOSParts=f;
362
363 if (!m_d->tsos_ascobjs||m_d->shownTSOSParts==TrackCommonFlags::TSOS_NoObjects)
364 return;
365
366 TrackCommonFlags::TSOSPartsFlags changedShownParts(change & m_d->shownTSOSParts);
367
368 if (!changedShownParts)
369 return;
370
371 std::vector<AssociatedObjectHandleBase*>::iterator it(m_d->tsos_ascobjs->begin()), itE(m_d->tsos_ascobjs->end());
372 for (;it!=itE;++it) {
373 if ((*it)->parts()&changedShownParts)
374 (*it)->update3DObjects();
375 }
376}

◆ setShownTSOSParts()

void TrackHandleBase::setShownTSOSParts ( TrackCommonFlags::TSOSPartsFlags f)
private

Definition at line 311 of file TrackHandleBase.cxx.

312{
313 VP1Msg::messageDebug(QString("TrackHandleBase::setShownTSOSParts to ")+QString::number(f) );
314
315 if (m_d->shownTSOSParts==f){
316 VP1Msg::messageDebug(QString("->No change in shown parts. Skipping."));
317 return;
318 }
319
320 //Figure out changed bits:
321 TrackCommonFlags::TSOSPartsFlags change(m_d->shownTSOSParts ^ f);//^ is XOR
322 m_d->shownTSOSParts=f;
323 if (!m_d->tsos_ascobjs&&(m_d->shownTSOSParts==TrackCommonFlags::TSOS_NoObjects||!visible()))
324 return;
325
326 ensureInitTSOSs(m_d->tsos_ascobjs);
327 //Loop over all TSOS objects. Those with changed parts needs shape
328 //and visibility update:
329 std::vector<AssociatedObjectHandleBase*>::iterator it(m_d->tsos_ascobjs->begin()), itE(m_d->tsos_ascobjs->end());
330 for (;it!=itE;++it) {
331 const bool vis = (*it)->parts() & m_d->shownTSOSParts;
332 if (!((*it)->parts()&change)){
333 continue;
334 }
335
336 if (vis==(*it)->visible()) {
337 //Just update shape:
338 (*it)->update3DObjects();
339 continue;
340 }
341 //Need both shape and visibility updates.
342 if (vis) {
343 //update shape and then turn visible:
344 (*it)->update3DObjects();
345 (*it)->setVisible(vis);
346 } else {
347 //turn invisible and then update (i.e. invalidate) shape:
348 (*it)->setVisible(vis);
349 (*it)->update3DObjects();
350 }
351 }
352}
virtual void ensureInitTSOSs(std::unique_ptr< std::vector< AssociatedObjectHandleBase * > > &)
Ensure that the TSOSs are initialized.

◆ setVisible()

void TrackHandleBase::setVisible ( bool vis)

use by the collection handle.

Definition at line 433 of file TrackHandleBase.cxx.

434{
435 std::cout<<"TrackHandleBase::setVisible"<<std::endl;
436 QString tmp = (vis)?"True":"False";
437 QString tmp2 = (m_visible)?"True":"False";
438 VP1Msg::messageDebug(QString("TrackHandleBase calling setVisible with vis=")+tmp+QString(", and m_visible=")+tmp2 );
439 if (vis==m_visible)
440 return;
441 std::cout<<"TrackHandleBase::setVisible 1"<<std::endl;
442
443 m_visible=vis;
444 if (vis) {
445 m_collhandle->incrementNShownHandles();
446 if (!touchedMuonChambers().empty()) {
447 for (std::set<GeoPVConstLink>::iterator it=touchedMuonChambers().begin(); it!=touchedMuonChambers().end(); ++it)
449 }
450 if (!m_d->line)
451 m_d->rebuild3DObjects();//The call to rebuild also fixes attached state.
452 else
453 m_d->attach3DObjects();
454 } else {
455 m_collhandle->decrementNShownHandles();
456 if (!touchedMuonChambers().empty()) {
457 for (std::set<GeoPVConstLink>::iterator it=touchedMuonChambers().begin(); it!=touchedMuonChambers().end(); ++it)
459 }
460 m_d->detach3DObjects();
461 }
462
463 std::cout<<"TrackHandleBase::setVisible 2"<<std::endl;
464
465
466 bool initTSOS(false);
467 if (!m_d->tsos_ascobjs&&vis&&m_d->shownTSOSParts!=TrackCommonFlags::TSOS_NoObjects) {
468 ensureInitTSOSs(m_d->tsos_ascobjs);
469 initTSOS = true;
470 }
471 std::cout<<"m_d->tsos_ascobjs: "<<m_d->tsos_ascobjs<<std::endl;
472 std::cout<<"m_d->shownTSOSParts!=TrackCommonFlags::TSOS_NoObjects "<<(m_d->shownTSOSParts!=TrackCommonFlags::TSOS_NoObjects)<<std::endl;
473 std::cout<<"TrackHandleBase::setVisible 3"<<std::endl;
474
475 if (!initTSOS && m_d->tsos_ascobjs) {
476 std::vector<AssociatedObjectHandleBase*>::iterator
477 it(m_d->tsos_ascobjs->begin()),
478 itE(m_d->tsos_ascobjs->end());
479 if (m_d->shownTSOSParts!=TrackCommonFlags::TSOS_NoObjects) {
480 for (;it!=itE;++it) {
481 if ((*it)->visible()!=((*it)->parts() & m_d->shownTSOSParts))
482 (*it)->toggleVisible();
483 }
484 } else {
485 for (;it!=itE;++it) {
486 if ((*it)->visible())
487 (*it)->setVisible(false);
488 }
489 }
490 }
491 std::cout<<"TrackHandleBase::setVisible 4"<<std::endl;
492
494
495 std::map<std::pair<int,double>,AssocObjAttachmentHandle *>::iterator it,itE(m_d->attachmentHandles.end());
496 for (it = m_d->attachmentHandles.begin();it!=itE;++it)
497 it->second->trackVisibilityChanged();
498
499 //Label
500
501}
static const Attributes_t empty
void decrementNumberOfObjectsForPV(const GeoPVConstLink &chamberPV)
void incrementNumberOfObjectsForPV(const GeoPVConstLink &chamberPV)
const std::set< GeoPVConstLink > & touchedMuonChambers() const
virtual void visibleStateChanged()
override if need to take action in this case.
TouchedMuonChamberHelper * touchedMuonChamberHelper() const

◆ shortInfo()

virtual QString TrackHandleBase::shortInfo ( ) const
inlinevirtual

returns mom and hit information about track

Reimplemented in TrackHandle_TrackContainer, and TrackHandle_TrkTrack.

Definition at line 129 of file TrackHandleBase.h.

◆ shownTSOSParts()

TrackCommonFlags::TSOSPartsFlags TrackHandleBase::shownTSOSParts ( ) const

Definition at line 299 of file TrackHandleBase.cxx.

300{
301 return m_d->shownTSOSParts;//FIXME: inline?
302}

◆ startPoint()

std::optional< Amg::Vector3D > TrackHandleBase::startPoint ( ) const
virtual

returns 0 if can't find start point.

Definition at line 1585 of file TrackHandleBase.cxx.

1586{
1587 m_d->ensureLoadPathInfo();
1588 if (m_d->pathInfo_TrkTrack) {
1589 Trk::TrackStates::const_iterator tsos_iter = m_d->pathInfo_TrkTrack->trackStateOnSurfaces()->begin();
1590 Trk::TrackStates::const_iterator tsos_end = m_d->pathInfo_TrkTrack->trackStateOnSurfaces()->end();
1591 for (; tsos_iter != tsos_end; ++tsos_iter) {
1592 if (common()->trackSanityHelper()->isSafe(*tsos_iter)) {
1593 const Trk::TrackParameters* trackParam = (*tsos_iter)->trackParameters();
1594 if (common()->trackSanityHelper()->isSafe(trackParam))
1595 return trackParam->position();
1596 }
1597 }
1598 } else if (m_d->pathInfo_Points&&!m_d->pathInfo_Points->empty()) {
1599 return m_d->pathInfo_Points->at(0);
1600 }
1601 return {};
1602}

◆ touchedMuonChambers()

const std::set< GeoPVConstLink > & TrackHandleBase::touchedMuonChambers ( ) const

Definition at line 1273 of file TrackHandleBase.cxx.

1274{
1275 if (!m_d->inittouchedchambers) {
1278 m_d->inittouchedchambers=true;
1279 }
1280 return m_d->touchedmuonchambers;
1281}
virtual void ensureTouchedMuonChambersInitialised() const
static bool hasMuonGeometry()

◆ type()

virtual QString TrackHandleBase::type ( ) const
inlinevirtual

return very short word with type (maybe link with collection type?)

Reimplemented in TrackHandle_SimulationTrack, TrackHandle_TrackContainer, TrackHandle_TrackParticle, TrackHandle_TrkSegment, TrackHandle_TrkTrack, TrackHandle_TruthTrack, and TrackHandle_xAODTrackParticle.

Definition at line 130 of file TrackHandleBase.h.

◆ unknown()

double TrackHandleBase::unknown ( )
inlinestatic

Definition at line 103 of file TrackHandleBase.h.

103{ return -999.0; }

◆ update3DObjects()

void TrackHandleBase::update3DObjects ( bool invalidatePropagatedPoints = false,
float maxR = 0.0 )

Definition at line 504 of file TrackHandleBase.cxx.

505{
506 VP1Msg::messageVerbose(QString("TrackHandleBase::update3DObject with maxR set to ")+QString::number(maxR) );
507 if (maxR>0.0) {
508 m_d->tempMaxPropRadius=maxR;
509 }
510 if ( invalidatePropagatedPoints) {
511 if (m_d->points_propagated != m_d->points_raw) {
512 delete m_d->points_propagated;m_d->points_propagated = nullptr;
513 }
514 delete m_d->points_raw;m_d->points_raw = nullptr;
515 if (m_d->points_propagated_id_projections) { delete m_d->points_propagated_id_projections; m_d->points_propagated_id_projections = nullptr; }
516 if (m_d->points_propagated_muon_projections) { delete m_d->points_propagated_muon_projections; m_d->points_propagated_muon_projections = nullptr; }
517 }
518 if (m_visible) {
519 m_d->rebuild3DObjects();
520 } else {
521 //Simply clear the present 3D objects. They will only be recreated if/when the track becomes visible again.
522 clearLine();
523 }
524 m_d->tempMaxPropRadius=0.0;
525}

◆ updateInDetProjections()

void TrackHandleBase::updateInDetProjections ( )

Definition at line 528 of file TrackHandleBase.cxx.

529{
530 //Invalidate points of indet projections if already calculated:
531 if (m_d->points_raw_id_projections!=m_d->points_propagated_id_projections)
532 delete m_d->points_propagated_id_projections;
533 delete m_d->points_raw_id_projections;
534 m_d->points_raw_id_projections = nullptr;
535 m_d->points_propagated_id_projections = nullptr;
536 //Rebuild 3D objects:
538}
void update3DObjects(bool invalidatePropagatedPoints=false, float maxR=0.0)

◆ updateMaterial()

void TrackHandleBase::updateMaterial ( )

Definition at line 953 of file TrackHandleBase.cxx.

954{
955 //We need to change the current material. This means we need to
956 //clear the cache. Only if we are visible do we need to do a
957 //detach->clear material->attach cycle to trigger attachment under new material.
958
960 return;//We have no material cached and is thus not attached either.
961 if (m_visible) {
962 //See if the material changed. If it did, detach, update the material, attach again.
963 SoMaterial * newmat = m_d->determineMaterial();
964 newmat->ref();
965 if (newmat!=m_currentmaterial) {
966 m_d->detach3DObjects();
967 m_currentmaterial->unref();
968 m_currentmaterial = newmat;
969 m_d->attach3DObjects();
970 m_d->materialChanged();
971 } else {
972 newmat->unref();
973 }
974 } else {
975 //Just clear material.
976 m_currentmaterial->unref();
977 m_currentmaterial = nullptr;
978 m_d->materialChanged();
979 }
980}

◆ updateMuonProjections()

void TrackHandleBase::updateMuonProjections ( )

Definition at line 541 of file TrackHandleBase.cxx.

542{
543 //Invalidate points of indet projections if already calculated:
544 if (m_d->points_raw_muon_projections!=m_d->points_propagated_muon_projections)
545 delete m_d->points_propagated_muon_projections;
546 delete m_d->points_raw_muon_projections;
547 m_d->points_raw_muon_projections = nullptr;
548 m_d->points_propagated_muon_projections = nullptr;
549 //Rebuild 3D objects:
551}

◆ updateObjectBrowser()

virtual void TrackHandleBase::updateObjectBrowser ( )
inlinevirtual

Reimplemented in TrackHandle_TrackContainer, and TrackHandle_TrkTrack.

Definition at line 135 of file TrackHandleBase.h.

135{};

◆ updateRandomColourTransparencyAndBrightness()

void TrackHandleBase::updateRandomColourTransparencyAndBrightness ( )

Definition at line 1434 of file TrackHandleBase.cxx.

1435{
1436 if ( !m_d->randommaterial )//We will anyway set up correctly when needed.
1437 return;
1438 float r,g,b;
1439 m_d->randommaterial->diffuseColor[0].getValue(r,g,b);
1441 collHandle()->collMaterialBrightness(),
1442 collHandle()->collMaterialTransparency());
1443}

◆ updateShapes_TSOSWithErrors()

void TrackHandleBase::updateShapes_TSOSWithErrors ( )
private

Definition at line 273 of file TrackHandleBase.cxx.

274{
275 if (!m_d->tsos_ascobjs)
276 return;
277 std::vector<AssociatedObjectHandleBase*>::iterator
278 it(m_d->tsos_ascobjs->begin()),
279 itE(m_d->tsos_ascobjs->end());
280 for (;it!=itE;++it)
281 if ((*it)->hasError())
282 (*it)->update3DObjects();
283}

◆ updateShapes_TSOSWithMaterialEffects()

void TrackHandleBase::updateShapes_TSOSWithMaterialEffects ( )
private

Definition at line 286 of file TrackHandleBase.cxx.

287{
288 if (!m_d->tsos_ascobjs)
289 return;
290 std::vector<AssociatedObjectHandleBase*>::iterator
291 it(m_d->tsos_ascobjs->begin()),
292 itE(m_d->tsos_ascobjs->end());
293 for (;it!=itE;++it)
294 if ((*it)->hasMaterialEffect())
295 (*it)->update3DObjects();
296}

◆ updateShapes_TSOSWithMeasurements()

void TrackHandleBase::updateShapes_TSOSWithMeasurements ( )
private

Definition at line 260 of file TrackHandleBase.cxx.

261{
262 if (!m_d->tsos_ascobjs)
263 return;
264 std::vector<AssociatedObjectHandleBase*>::iterator
265 it(m_d->tsos_ascobjs->begin()),
266 itE(m_d->tsos_ascobjs->end());
267 for (;it!=itE;++it)
268 if ((*it)->hasMeasurement())
269 (*it)->update3DObjects();
270}

◆ visible()

bool TrackHandleBase::visible ( ) const
inline

Definition at line 68 of file TrackHandleBase.h.

68{ return m_visible; }

◆ visibleStateChanged()

void TrackHandleBase::visibleStateChanged ( )
protectedvirtual

override if need to take action in this case.

Reimplemented in TrackHandle_SimulationTrack, TrackHandle_TrackContainer, TrackHandle_TrkSegment, TrackHandle_TrkTrack, and TrackHandle_TruthTrack.

Definition at line 2027 of file TrackHandleBase.cxx.

2028{
2029 if ( !browserTreeItem()) {
2030 VP1Msg::messageVerbose("visibleStateChanged: No m_objBrowseTree!");
2031 return;
2032 }
2033
2034 if (!visible()) {
2035 browserTreeItem()->setFlags(Qt::ItemFlags()); // not selectable, not enabled
2036 } else {
2037 browserTreeItem()->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); // selectable, enabled
2038 }
2039 QFont itemFont = browserTreeItem()->font(0);
2040 itemFont.setStrikeOut(!visible());
2041 browserTreeItem()->setFont(0, itemFont);
2042 browserTreeItem()->setFont(1, itemFont);
2043}

◆ AssociatedObjectHandleBase

friend class AssociatedObjectHandleBase
friend

Definition at line 191 of file TrackHandleBase.h.

◆ AssocObjAttachmentHandle

friend class AssocObjAttachmentHandle
friend

Definition at line 172 of file TrackHandleBase.h.

◆ TrackCollHandleBase

friend class TrackCollHandleBase
friend

Definition at line 192 of file TrackHandleBase.h.

Member Data Documentation

◆ m_collhandle

TrackCollHandleBase* TrackHandleBase::m_collhandle
private

Definition at line 179 of file TrackHandleBase.h.

◆ m_currentmaterial

SoMaterial* TrackHandleBase::m_currentmaterial
private

Definition at line 180 of file TrackHandleBase.h.

◆ m_d

Imp* TrackHandleBase::m_d
private

Definition at line 174 of file TrackHandleBase.h.

◆ m_visible

bool TrackHandleBase::m_visible
private

Definition at line 178 of file TrackHandleBase.h.


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