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

#include <TrackHandle_TrackContainer.h>

Inheritance diagram for TrackHandle_TrackContainer:
Collaboration diagram for TrackHandle_TrackContainer:

Public Member Functions

 TrackHandle_TrackContainer (TrackCollHandleBase *, ActsTrk::TrackContainer::ConstTrackProxy, const ActsTrk::TrackContainer &)
virtual ~TrackHandle_TrackContainer ()
virtual QStringList clicked () const
 Called when user selects the node (stringlist is displayed in messagebox).
virtual bool isRun4EDM () const final
virtual Amg::Vector3D momentum () const
virtual const std::vector< Amg::Vector3D > * provide_pathInfoPoints ()
ActsTrk::TrackContainer::ConstTrackProxy track () const
const std::vector< ActsTrk::TrackContainer::ConstTrackStateProxy > & trackStates () const
virtual bool containsDetElement (const QString &) const
virtual void fillObjectBrowser (QList< QTreeWidgetItem * > &list)
 Called in child classes.
virtual void updateObjectBrowser ()
SoNode * zoomToTSOS (unsigned int index)
 Depending on controller configuration attempt to zoom to the corresponding TSOS & returned detailed node matching it.
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?)
TrackSysCommonDatacommon () const
void setVisible (bool)
 use by the collection handle.
bool visible () const
TrackCollHandleBasecollHandle () 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 std::optional< Amg::Vector3DstartPoint () const
 returns 0 if can't find start point.
virtual std::optional< Amg::Vector3DendPoint () 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 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::FitQualitygetFitQuality () const
virtual const MuonGM::MuonReadoutElementgetMuonReadoutElement (const Trk::RIO_OnTrack &mb) const
QList< AssociatedObjectHandleBase * > getVisibleMeasurements () const
TrackCommonFlags::TSOSPartsFlags shownTSOSParts () const
TrackCommonFlags::TSOSPartsFlags customColouredTSOSParts () const
std::vector< Amg::Vector3D > * hackGetPointsPropagated ()
 FIXME.
QTreeWidgetItem * browserTreeItem () const

Static Public Member Functions

static int numberOfInstances ()
static double unknown ()

Protected Member Functions

virtual double calculateCharge () const
virtual const Trk::Trackprovide_pathInfoTrkTrack () const
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.
const QList< AssociatedObjectHandleBase * > & getAllAscObjHandles () const
 override if need to take action in this case.
void registerAssocObject (AssociatedObjectHandleBase *)
 Trackhandle assumes ownership.

Protected Attributes

ActsTrk::TrackContainer::ConstTrackProxy m_track
const ActsTrk::TrackContainerm_container
std::vector< ActsTrk::TrackContainer::ConstTrackStateProxy > m_trackStates

Private Member Functions

void visibleStateChanged ()
 override if need to take action in this case.
void currentMaterialChanged ()
virtual void ensureInitTSOSs (std::vector< AssociatedObjectHandleBase * > *&ascobjs)
 Ensure that the TSOSs are initialized.
void ensureInitTrackStateCache ()
 Ensure that the track state cache is initialized.
void addTrackState (const typename ActsTrk::TrackContainer::ConstTrackStateProxy &state, std::vector< AssociatedObjectHandleBase * > *ascobjs, unsigned int index)
TrkObjToString::MeasurementType measurementType (const ActsTrk::TrackStateBackend::ConstTrackStateProxy &state) const
QString measurementText (const ActsTrk::TrackContainer::ConstTrackStateProxy &state) const
void clearLine ()
void registerTrack ()
void updateShapes_TSOSWithMeasurements ()
void updateShapes_TSOSWithErrors ()
void updateShapes_TSOSWithMaterialEffects ()
void setShownTSOSParts (TrackCommonFlags::TSOSPartsFlags f)
void setCustomColouredTSOSParts (TrackCommonFlags::TSOSPartsFlags f)
AssocObjAttachmentHandlegetAttachmentHandle (int regionIndex, const double &crossoverval)

Private Attributes

Impm_d
bool m_visible
TrackCollHandleBasem_collhandle
SoMaterial * m_currentmaterial

Detailed Description

Definition at line 28 of file TrackHandle_TrackContainer.h.

Constructor & Destructor Documentation

◆ TrackHandle_TrackContainer()

TrackHandle_TrackContainer::TrackHandle_TrackContainer ( TrackCollHandleBase * ch,
ActsTrk::TrackContainer::ConstTrackProxy tp,
const ActsTrk::TrackContainer & container )

Definition at line 34 of file TrackHandle_TrackContainer.cxx.

37 : TrackHandleBase(ch), m_track(tp), m_container(container) {}
TrackHandleBase(TrackCollHandleBase *)
ActsTrk::TrackContainer::ConstTrackProxy m_track
const ActsTrk::TrackContainer & m_container

◆ ~TrackHandle_TrackContainer()

TrackHandle_TrackContainer::~TrackHandle_TrackContainer ( )
virtual

Definition at line 40 of file TrackHandle_TrackContainer.cxx.

40{}

Member Function Documentation

◆ addTrackState()

void TrackHandle_TrackContainer::addTrackState ( const typename ActsTrk::TrackContainer::ConstTrackStateProxy & state,
std::vector< AssociatedObjectHandleBase * > * ascobjs,
unsigned int index )
private

Definition at line 389 of file TrackHandle_TrackContainer.cxx.

391 {
392
393 AscObj_TrackState* ao = new AscObj_TrackState(this, index, state);
394
396
397 ascobjs->push_back(ao);
398 if (ao->parts() & shownTSOSParts()){
399 ao->setVisible(true);
400 }
401}
virtual void setVisible(bool)
virtual TrackCommonFlags::TSOSPartsFlags parts() const
TrackCommonFlags::TSOSPartsFlags shownTSOSParts() const
void registerAssocObject(AssociatedObjectHandleBase *)
Trackhandle assumes ownership.

◆ baseInfo()

QStringList TrackHandleBase::baseInfo ( ) const
inherited

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 1551 of file TrackHandleBase.cxx.

1552{
1553 QStringList l;
1555 mom /= CLHEP::GeV;
1556 if (mom.mag2()==0.0) {
1557 l << "Momentum : 0 (undefined)";
1558 } else {
1559 l << "Momentum [GeV]: "+VP1Msg::str(mom);
1560 l << "|Pt|/|P| [GeV]: "+VP1Msg::str(mom.perp())+" / " + VP1Msg::str(mom.mag());
1561 l << VP1Msg::str("(")+QChar(0x03B7)+","+QChar(0x03D5)+VP1Msg::str(")=(")
1563
1564 l << "Eta: "+VP1Msg::str(mom.eta());
1565 l << "Phi: "+VP1Msg::str(VP1LinAlgUtils::phiFromXY(mom.x(), mom.y() ));
1566 }
1567 l<<"Hit summary: Pix["+VP1Msg::str(getNPixelHits())+"], SCT["+VP1Msg::str(getNSCTHits())+"], TRT["+VP1Msg::str(getNTRTHits())
1568 +"], MDT["+QString::number(getNMDTHits())+"], RPC["+QString::number(getNRPCHits())+"], TGC["+QString::number(getNTGCHits())+"], CSC["+QString::number(getNCSCHits())+"] MM["+QString::number(getNMMHits())+"], sTGC["+QString::number(getNsTGCHits())+"]";
1569
1570 return l;
1584}
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
inherited

Definition at line 2026 of file TrackHandleBase.cxx.

2026{return m_d->m_objBrowseTree;}

◆ calculateCharge()

double TrackHandleBase::calculateCharge ( ) const
protectedvirtualinherited

Reimplemented in TrackHandle_SimulationTrack, TrackHandle_TrackParticle, TrackHandle_TruthTrack, and TrackHandle_xAODTrackParticle.

Definition at line 1481 of file TrackHandleBase.cxx.

1482{
1483 //look up from pdgCode(); // valid PDG codes > 0
1484 int pdg = pdgCode();
1485 if (pdg) {
1486 bool ok;
1487 double c = VP1ParticleData::particleCharge(pdg,ok);
1488 if (ok) {
1489 VP1Msg::messageDebug("TrackHandleBase: Determined charge from pdg code "+VP1Msg::str(pdg)+": "+VP1Msg::str(c));
1490 return c;
1491 }
1492 }
1493
1494 //Attempt to look at the first trackparameter.
1495 const Trk::Track * trk = provide_pathInfoTrkTrack();
1496 if (trk&&!trk->trackParameters()->empty()) {
1497 double c = (*(trk->trackParameters()->begin()))->charge();
1498 VP1Msg::messageDebug("TrackHandleBase: Determined charge from first track parameter: "+VP1Msg::str(c));
1499 return c;
1500 }
1501 if (VP1Msg::verbose())
1502 VP1Msg::messageDebug("Failed to determine charge.");
1503
1504 return unknown();
1505}
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
inherited

Definition at line 1508 of file TrackHandleBase.cxx.

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

◆ clearLine()

void TrackHandleBase::clearLine ( )
privateinherited

Definition at line 640 of file TrackHandleBase.cxx.

641{
642 if (m_d->line) {
643 common()->unregisterTrack(m_d->line);
644 m_d->line->unref();
645 m_d->line=nullptr;
646 }
647}
TrackSysCommonData * common() const
void unregisterTrack(SoNode *)

◆ clicked()

QStringList TrackHandle_TrackContainer::clicked ( ) const
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.

Implements TrackHandleBase.

Definition at line 43 of file TrackHandle_TrackContainer.cxx.

43 {
44 QStringList l;
45 l << "TrackProxy:";
47 return l;
48}
QStringList baseInfo() const

◆ collHandle()

TrackCollHandleBase * TrackHandleBase::collHandle ( ) const
inlineinherited

Definition at line 68 of file TrackHandleBase.h.

68{ return m_collhandle; }
TrackCollHandleBase * m_collhandle

◆ common()

TrackSysCommonData * TrackHandleBase::common ( ) const
inherited

Definition at line 255 of file TrackHandleBase.cxx.

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

◆ containsDetElement()

bool TrackHandle_TrackContainer::containsDetElement ( const QString & ) const
virtual

Reimplemented from TrackHandleBase.

Definition at line 354 of file TrackHandle_TrackContainer.cxx.

355 {
356 return false;
357}

◆ currentMaterial()

SoMaterial * TrackHandleBase::currentMaterial ( ) const
inlineinherited

Definition at line 76 of file TrackHandleBase.h.

76{ return m_currentmaterial; }
SoMaterial * m_currentmaterial

◆ currentMaterialChanged()

void TrackHandle_TrackContainer::currentMaterialChanged ( )
privatevirtual

Reimplemented from TrackHandleBase.

Definition at line 84 of file TrackHandle_TrackContainer.cxx.

84{}

◆ customColouredTSOSParts()

TrackCommonFlags::TSOSPartsFlags TrackHandleBase::customColouredTSOSParts ( ) const
inherited

Definition at line 306 of file TrackHandleBase.cxx.

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

◆ endPoint()

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

returns 0 if can't find start point.

Definition at line 1607 of file TrackHandleBase.cxx.

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

◆ ensureInitTrackStateCache()

void TrackHandle_TrackContainer::ensureInitTrackStateCache ( )
private

Ensure that the track state cache is initialized.

Definition at line 359 of file TrackHandle_TrackContainer.cxx.

360 {
361 // Unfortunately actsTracks are stored in reverse order, so we need to do some
362 // gymnastics (There is certainly a more elegant way to do this, but since
363 // this will all be changed soon I don't think it matters)
364 if (!m_trackStates.empty())
365 return;
366 m_trackStates.reserve(m_track.nTrackStates());
367 for (auto trackstate : m_track.trackStatesReversed()) {
368 m_trackStates.push_back(trackstate);
369 }
370
372}
std::vector< ActsTrk::TrackContainer::ConstTrackStateProxy > m_trackStates
void reverse(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of reverse for DataVector/List.

◆ ensureInitTSOSs()

void TrackHandle_TrackContainer::ensureInitTSOSs ( std::vector< AssociatedObjectHandleBase * > *& ascobjs)
privatevirtual

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 from TrackHandleBase.

Definition at line 375 of file TrackHandle_TrackContainer.cxx.

376 {
377 if (ascobjs)
378 return;
380
381 ascobjs = new std::vector<AssociatedObjectHandleBase*>;
382 unsigned int index =0;
383
384 for (const auto trackState : m_trackStates) {
385 addTrackState(trackState, ascobjs, index++);
386 }
387}
void ensureInitTrackStateCache()
Ensure that the track state cache is initialized.
void addTrackState(const typename ActsTrk::TrackContainer::ConstTrackStateProxy &state, std::vector< AssociatedObjectHandleBase * > *ascobjs, unsigned int index)
str index
Definition DeMoScan.py:362

◆ ensureTouchedMuonChambersInitialised()

virtual void TrackHandleBase::ensureTouchedMuonChambersInitialised ( ) const
inlineprotectedvirtualinherited

◆ extrapolationParticleHypothesis()

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

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

Definition at line 1534 of file TrackHandleBase.cxx.

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

◆ fillObjectBrowser()

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

Called in child classes.

Reimplemented from TrackHandleBase.

Definition at line 86 of file TrackHandle_TrackContainer.cxx.

87 {
88 TrackHandleBase::fillObjectBrowser(listOfItems); // Obligatory!
89
90
91 // Fill sub-data.
92 QList<AssociatedObjectHandleBase*> list = getAllAscObjHandles();
93 unsigned int listSize = list.size();
94
96
97 unsigned int trackStateNum=0;
98 for (const auto trackState : m_trackStates) {
99 QString surfaceText = QString(" ");
100 surfaceText += trackState.hasReferenceSurface()?QString::number(trackState.referenceSurface().type()):"No Surface";
101
102 // VP1Msg::messageVerbose("TrackState #"+QString::number(trackStateNum) + surfaceText);
103
104 bool visible=false;
105 QTreeWidgetItem* TSOSitem = new QTreeWidgetItem(browserTreeItem());
106
107 AscObj_TrackState* asc=nullptr;
108 if (trackStateNum<listSize) asc = dynamic_cast<AscObj_TrackState*>(list.at(trackStateNum));
109
110 if (asc) {
111 asc->setBrowserTreeItem(TSOSitem);
112 visible=asc->visible();
113 }
114
115 if (!visible) {
116 TSOSitem->setFlags(Qt::ItemFlag());// not selectable, not enabled
117 QFont itemFont = TSOSitem->font(0);
118 itemFont.setStrikeOut(true);
119 TSOSitem->setFont(0, itemFont);
120 TSOSitem->setFont(1, itemFont);
121 }
122 std::ostringstream s;
123
124 s << " | Flags: "<< trackState.typeFlags();
125 QString text = QString::number( trackStateNum )+QString(s.str().c_str());
126 TSOSitem->setText(0, QString("Track State "+text ) );
127
128 if (trackState.hasReferenceSurface()) {
129 auto& surface = trackState.referenceSurface();
130 QString surfaceText = QString(surface.toString(common()->geometryContext().context()).c_str());
131 QTreeWidgetItem* surfItem = new QTreeWidgetItem(TSOSitem);
132 surfItem->setExpanded(true);
133 surfItem->setFlags(Qt::ItemIsEnabled);
134 surfItem->setText(0, QString(surface.name().c_str()));
135 surfItem->setText(1, surfaceText );
136 }
137
138 // TSOSitem->setText(1,
139
140 QString trackStateText;
141 // bool first=true;
142
143 // const Trk::MeasurementBase* meas = (*it)->measurementOnTrack();
144 if (trackState.hasCalibrated() ){
145 QString measName = QString(TrkObjToString::typeName(measurementType(trackState)).c_str());
146 trackStateText+=measName;
147
148 QTreeWidgetItem* measItem = new QTreeWidgetItem(TSOSitem);
149 measItem->setExpanded(true); // want it opened so subparams seen easily
150 measItem->setFlags(Qt::ItemIsEnabled);
151 measItem->setText(0, measName);
152 measItem->setText(1, measurementText(trackState) ); //TODO expand this with more info
153
154 // QStringList list = TrkObjToString::fullInfo( *((*it)->measurementOnTrack ()) );
155 // for (int i = 0; i < (list.size()-1); ){
156 // QTreeWidgetItem* subparamItem = new QTreeWidgetItem(measItem);
157 // subparamItem->setText(0, list.at(i++) );
158 // subparamItem->setText(1, list.at(i++) );
159 // subparamItem->setFlags(Qt::ItemIsEnabled);
160 // }
161 }
162 // first=false;
163 // }
164 // if ( (*it)->trackParameters () ) {
165 // if (!first) trackStateText.append(" + ");
166 // trackStateText.append("Parameters");
167
168 // QTreeWidgetItem* paramItem = new QTreeWidgetItem(TSOSitem);
169 // paramItem->setExpanded(true); // want it opened so subparams seen easily
170 // paramItem->setFlags(Qt::ItemIsEnabled);
171 // paramItem->setText(0, TrkObjToString::name( *((*it)->trackParameters ()) ) );
172 // // paramItem->setText(1, TrkObjToString::shortInfo( *((*it)->trackParameters ()) ) );
173
174 // QStringList list = TrkObjToString::fullInfo( *((*it)->trackParameters ()) );
175 // for (int i = 0; i < (list.size()-1); ){
176 // QTreeWidgetItem* subparamItem = new QTreeWidgetItem(paramItem);
177 // subparamItem->setText(0, list.at(i++) );
178 // subparamItem->setText(1, list.at(i++) );
179 // subparamItem->setFlags(Qt::ItemIsEnabled);
180 // }
181 // first=false;
182 // }
183 // if ( (*it)->materialEffectsOnTrack () ){
184 // if (!first) trackStateText.append(" + ");
185 // trackStateText.append("MaterialEffectsOnTrack");
186 // QTreeWidgetItem* meItem = new QTreeWidgetItem(TSOSitem);
187 // meItem->setExpanded(true); // want it opened so subparams seen easily
188 // meItem->setFlags(Qt::ItemIsEnabled);
189
190 // meItem->setText(0, TrkObjToString::name( *((*it)->materialEffectsOnTrack ()) ) );
191 // meItem->setText(1, TrkObjToString::shortInfo( *((*it)->materialEffectsOnTrack ()) ) );
192
193 // first=false;
194 // }
195 // if ( (*it)->fitQualityOnSurface () ){
196 // if (!first) trackStateText.append(" + ");
197 // trackStateText.append("FitQuality");
198 // QTreeWidgetItem* fqItem = new QTreeWidgetItem(TSOSitem);
199 // fqItem->setExpanded(true); // want it opened so subparams seen easily
200 // fqItem->setFlags(Qt::ItemIsEnabled);
201 // fqItem->setText(0, QString("FitQuality") );
202 // fqItem->setText(1, TrkObjToString::shortInfo( (*it)->fitQualityOnSurface () ) );
203
204 // first=false;
205 // }
206 // FIXME - add information about chamber for Muon systems?
207
208 // if ( (*it)->type(Trk::TrackStateOnSurface::Outlier) ){
209 // if (!first) trackStateText.append(" + ");
210 // trackStateText.append("Outlier");
211 // }
212
213 // if ( (*it)->type(Trk::TrackStateOnSurface::InertMaterial) ){
214 // if (!first) trackStateText.append(" + ");
215 // trackStateText.append("InertMaterial");
216 // }
217
218 // if ( (*it)->type(Trk::TrackStateOnSurface::BremPoint) ){
219 // if (!first) trackStateText.append(" + ");
220 // trackStateText.append("BremPoint");
221 // }
222
223 // if ( (*it)->type(Trk::TrackStateOnSurface::Perigee) ){
224 // if (!first) trackStateText.append(" + ");
225 // trackStateText.append("Perigee");
226 // }
227
228 // if ( (*it)->type(Trk::TrackStateOnSurface::Hole) ){
229 // if (!first) trackStateText.append(" + ");
230 // trackStateText.append("Hole");
231 // }
232 TSOSitem->setText(1, trackStateText );
233 trackStateNum++;
234 }
235 // listOfItems << browserTreeItem();
236
237}
virtual void setBrowserTreeItem(QTreeWidgetItem *obt)
virtual void fillObjectBrowser(QList< QTreeWidgetItem * > &list)
Called in child classes.
QTreeWidgetItem * browserTreeItem() const
bool visible() const
const QList< AssociatedObjectHandleBase * > & getAllAscObjHandles() const
override if need to take action in this case.
QString measurementText(const ActsTrk::TrackContainer::ConstTrackStateProxy &state) const
TrkObjToString::MeasurementType measurementType(const ActsTrk::TrackStateBackend::ConstTrackStateProxy &state) const
static std::string typeName(MeasurementType type)
Returns a very short summary of the object type.
list(name, path='/')
Definition histSizes.py:38

◆ getAllAscObjHandles()

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

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 1634 of file TrackHandleBase.cxx.

1635{
1636 return m_d->associatedObjects;
1637}

◆ getAttachmentHandle()

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

Definition at line 1468 of file TrackHandleBase.cxx.

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

◆ getFitQuality()

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

Reimplemented in TrackHandle_TrkTrack.

Definition at line 119 of file TrackHandleBase.h.

119{return nullptr;}

◆ getMuonReadoutElement()

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

Definition at line 1966 of file TrackHandleBase.cxx.

1966 {
1967 const MuonGM::MuonReadoutElement* re = nullptr;
1968 switch (TrkObjToString::type(&mb)){
1971 break;
1974 break;
1977 break;
1980 break;
1983 break;
1984 case TrkObjToString::MM:
1986 break;
1987 default:
1988 VP1Msg::message("TrackHandleBase::getReadoutElement:: Unable to find matching readoutElement");
1989 }
1990 return re;
1991 }
const boost::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
inlinevirtualinherited

◆ getNMDTHits()

virtual unsigned TrackHandleBase::getNMDTHits ( ) const
inlinevirtualinherited

◆ getNMMHits()

virtual unsigned TrackHandleBase::getNMMHits ( ) const
inlinevirtualinherited

Reimplemented in TrackHandle_TrkSegment, and TrackHandle_TrkTrack.

Definition at line 116 of file TrackHandleBase.h.

116{ return 0; }

◆ getNMuonHits()

virtual unsigned TrackHandleBase::getNMuonHits ( ) const
inlinevirtualinherited

Definition at line 110 of file TrackHandleBase.h.

◆ getNMuonPhiHits()

virtual unsigned TrackHandleBase::getNMuonPhiHits ( ) const
inlinevirtualinherited

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 111 of file TrackHandleBase.h.

◆ getNMuonPrecisionHits()

virtual unsigned TrackHandleBase::getNMuonPrecisionHits ( ) const
inlinevirtualinherited

Reimplemented in TrackHandle_TrackParticle.

Definition at line 118 of file TrackHandleBase.h.

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

◆ getNPixelHits()

virtual unsigned TrackHandleBase::getNPixelHits ( ) const
inlinevirtualinherited

◆ getNRPCHits()

virtual unsigned TrackHandleBase::getNRPCHits ( ) const
inlinevirtualinherited

◆ getNSCTHits()

virtual unsigned TrackHandleBase::getNSCTHits ( ) const
inlinevirtualinherited

◆ getNsTGCHits()

virtual unsigned TrackHandleBase::getNsTGCHits ( ) const
inlinevirtualinherited

Reimplemented in TrackHandle_TrkTrack.

Definition at line 117 of file TrackHandleBase.h.

117{ return 0; }

◆ getNTGCHits()

virtual unsigned TrackHandleBase::getNTGCHits ( ) const
inlinevirtualinherited

◆ getNTRTHits()

virtual unsigned TrackHandleBase::getNTRTHits ( ) const
inlinevirtualinherited

◆ getVisibleMeasurements()

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

Definition at line 1996 of file TrackHandleBase.cxx.

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

◆ hackGetPointsPropagated()

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

FIXME.

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

Definition at line 1639 of file TrackHandleBase.cxx.

1640{
1641 m_d->ensureInitPointsPropagated();
1642 return m_d->points_propagated;
1643}

◆ hasCharge()

bool TrackHandleBase::hasCharge ( ) const
inlineinherited

Definition at line 99 of file TrackHandleBase.h.

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

◆ hasMass()

bool TrackHandleBase::hasMass ( ) const
inlineinherited

Definition at line 100 of file TrackHandleBase.h.

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

◆ hasSubSystemHitInfo()

virtual bool TrackHandleBase::hasSubSystemHitInfo ( ) const
inlinevirtualinherited

Reimplemented in TrackHandle_TrackParticle, TrackHandle_TrkSegment, TrackHandle_TrkTrack, and TrackHandle_xAODTrackParticle.

Definition at line 104 of file TrackHandleBase.h.

104{ return false; }

◆ isIDTrack()

bool TrackHandleBase::isIDTrack ( ) const
virtualinherited

Definition at line 1626 of file TrackHandleBase.cxx.

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

◆ isRun4EDM()

virtual bool TrackHandle_TrackContainer::isRun4EDM ( ) const
inlinefinalvirtual

Reimplemented from TrackHandleBase.

Definition at line 35 of file TrackHandle_TrackContainer.h.

35{ return true; }

◆ mass()

double TrackHandleBase::mass ( ) const
virtualinherited

Definition at line 1518 of file TrackHandleBase.cxx.

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

◆ measurementText()

QString TrackHandle_TrackContainer::measurementText ( const ActsTrk::TrackContainer::ConstTrackStateProxy & state) const
private

Definition at line 430 of file TrackHandle_TrackContainer.cxx.

431 {
432 QString text("Unknown Measurement");
433 if (state.hasReferenceSurface()) {
434 const auto* actsElement = dynamic_cast<const ActsDetectorElement*>(
435 state.referenceSurface().associatedDetectorElement());
436 if (actsElement) {
437 auto& helperSvc = common()->muonIdHelperSvc();
438 if (helperSvc->isMuon(actsElement->identify()))
439 text = QString(helperSvc->toString(actsElement->identify()).c_str());
440 }
441 }
442 return text;
443}
ServiceHandle< Muon::IMuonIdHelperSvc > & muonIdHelperSvc()

◆ measurementType()

TrkObjToString::MeasurementType TrackHandle_TrackContainer::measurementType ( const ActsTrk::TrackStateBackend::ConstTrackStateProxy & state) const
private

Definition at line 403 of file TrackHandle_TrackContainer.cxx.

404 {
406 if (state.hasReferenceSurface()) {
407 const auto *actsElement = dynamic_cast<const ActsDetectorElement *>(
408 state.referenceSurface().associatedDetectorElement());
409 if (actsElement && common()->muonIdHelperSvc().get()) {
410 auto& idhelper = common()->muonIdHelperSvc()->mdtIdHelper(); // This is a lazy way to get an AtlasID helper. Not ideal if muon geometry is off.
411 if (idhelper.is_mdt(actsElement->identify())) {
413 } else if (idhelper.is_tgc(actsElement->identify())) {
415 } else if (idhelper.is_rpc(actsElement->identify())) {
417 } else if (idhelper.is_csc(actsElement->identify())) {
419 } else if (idhelper.is_stgc(actsElement->identify())) {
421 } else if (idhelper.is_mm(actsElement->identify())) {
423 }
424 }
425 return type;
426 }
428}
virtual QString type() const
return very short word with type (maybe link with collection type?)
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:130

◆ momentum()

Amg::Vector3D TrackHandle_TrackContainer::momentum ( ) const
virtual

Reimplemented from TrackHandleBase.

Definition at line 51 of file TrackHandle_TrackContainer.cxx.

51 {
52 const Acts::BoundTrackParameters trackparams(
53 m_track.referenceSurface().getSharedPtr(), m_track.parameters(),
54 std::nullopt, Acts::ParticleHypothesis::pion());
55 return trackparams.momentum()*1000.;
56}

◆ numberOfInstances()

int TrackHandleBase::numberOfInstances ( )
staticinherited

Definition at line 249 of file TrackHandleBase.cxx.

250{
251 return Imp::ntrackhandles;
252}

◆ pdgCode()

virtual int TrackHandleBase::pdgCode ( ) const
inlinevirtualinherited

0 means unknown

Reimplemented in TrackHandle_SimulationTrack, and TrackHandle_TruthTrack.

Definition at line 86 of file TrackHandleBase.h.

◆ provide_pathInfoPoints()

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

Reimplemented from TrackHandleBase.

Definition at line 59 of file TrackHandle_TrackContainer.cxx.

59 {
61 auto trackContainerCollHandle =
62 dynamic_cast<const TrackCollHandle_TrackContainer*>(collHandle());
63 auto points = new std::vector<Amg::Vector3D>;
64
65 auto ctx = trackContainerCollHandle->common()->geometryContext().context();
66 for (auto trackstate : m_trackStates) {
67 if (trackstate.hasSmoothed() && trackstate.hasReferenceSurface()) {
68 const Acts::BoundTrackParameters params(
69 trackstate.referenceSurface().getSharedPtr(), trackstate.smoothed(),
70 trackstate.smoothedCovariance(), Acts::ParticleHypothesis::pion());
71 points->push_back(params.position(ctx));
72 }
73 }
74
75 return points;
76}
TrackCollHandleBase * collHandle() const

◆ provide_pathInfoTrkTrack()

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

◆ registerAssocObject()

void TrackHandleBase::registerAssocObject ( AssociatedObjectHandleBase * ao)
protectedinherited

Trackhandle assumes ownership.

Definition at line 1449 of file TrackHandleBase.cxx.

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

◆ registerTouchedMuonChamber()

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

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 1269 of file TrackHandleBase.cxx.

1270{
1271 m_d->touchedmuonchambers.insert(chamberPV);
1272}

◆ registerTrack()

void TrackHandleBase::registerTrack ( )
privateinherited

Definition at line 650 of file TrackHandleBase.cxx.

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

◆ rerandomiseRandomMaterial()

void TrackHandleBase::rerandomiseRandomMaterial ( )
inherited

Definition at line 1395 of file TrackHandleBase.cxx.

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

Definition at line 356 of file TrackHandleBase.cxx.

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

◆ setShownTSOSParts()

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

Definition at line 312 of file TrackHandleBase.cxx.

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

◆ setVisible()

void TrackHandleBase::setVisible ( bool vis)
inherited

use by the collection handle.

Definition at line 434 of file TrackHandleBase.cxx.

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

QString TrackHandle_TrackContainer::shortInfo ( ) const
virtual

returns mom and hit information about track

Reimplemented from TrackHandleBase.

Definition at line 261 of file TrackHandle_TrackContainer.cxx.

261 {
263 mom /= CLHEP::GeV;
264
265 // format info string
266 QString l;
267 l += "|Pt|=" + VP1Msg::str(mom.perp()) + " [GeV], ";
268 l += "|P|=" + VP1Msg::str(mom.mag()) + " [GeV], ";
269 return l;
270}
virtual Amg::Vector3D momentum() const

◆ shownTSOSParts()

TrackCommonFlags::TSOSPartsFlags TrackHandleBase::shownTSOSParts ( ) const
inherited

Definition at line 300 of file TrackHandleBase.cxx.

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

◆ startPoint()

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

returns 0 if can't find start point.

Definition at line 1587 of file TrackHandleBase.cxx.

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

◆ touchedMuonChambers()

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

Definition at line 1275 of file TrackHandleBase.cxx.

1276{
1277 if (!m_d->inittouchedchambers) {
1280 m_d->inittouchedchambers=true;
1281 }
1282 return m_d->touchedmuonchambers;
1283}
virtual void ensureTouchedMuonChambersInitialised() const
static bool hasMuonGeometry()

◆ track()

ActsTrk::TrackContainer::ConstTrackProxy TrackHandle_TrackContainer::track ( ) const
inline

Definition at line 40 of file TrackHandle_TrackContainer.h.

40{ return m_track; }

◆ trackStates()

const std::vector< ActsTrk::TrackContainer::ConstTrackStateProxy > & TrackHandle_TrackContainer::trackStates ( ) const
inline

Definition at line 41 of file TrackHandle_TrackContainer.h.

41{ return m_trackStates; }

◆ type()

virtual QString TrackHandle_TrackContainer::type ( ) const
inlinevirtual

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

Reimplemented from TrackHandleBase.

Definition at line 51 of file TrackHandle_TrackContainer.h.

◆ unknown()

double TrackHandleBase::unknown ( )
inlinestaticinherited

Definition at line 102 of file TrackHandleBase.h.

102{ return -999.0; }

◆ update3DObjects()

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

Definition at line 505 of file TrackHandleBase.cxx.

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

◆ updateInDetProjections()

void TrackHandleBase::updateInDetProjections ( )
inherited

Definition at line 529 of file TrackHandleBase.cxx.

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

◆ updateMaterial()

void TrackHandleBase::updateMaterial ( )
inherited

Definition at line 954 of file TrackHandleBase.cxx.

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

◆ updateMuonProjections()

void TrackHandleBase::updateMuonProjections ( )
inherited

Definition at line 542 of file TrackHandleBase.cxx.

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

◆ updateObjectBrowser()

void TrackHandle_TrackContainer::updateObjectBrowser ( )
virtual

Reimplemented from TrackHandleBase.

Definition at line 272 of file TrackHandle_TrackContainer.cxx.

272 {
273 VP1Msg::messageVerbose("TrackHandle_TrackContainer::updateObjectBrowser");
274
275 if (!browserTreeItem()) {
277 "TrackHandle_TrackContainer::updateObjectBrowser: No m_objBrowseTree!");
278 return;
279 }
280
281 if (!visible()) {
282 browserTreeItem()->setFlags(Qt::ItemFlag()); // not selectable, not enabled
283 } else {
284 browserTreeItem()->setFlags(Qt::ItemIsSelectable |
285 Qt::ItemIsEnabled); // selectable, enabled
286 }
287 QFont font = browserTreeItem()->font(0);
288 font.setStrikeOut(!visible());
289 browserTreeItem()->setFont(0, font);
290 browserTreeItem()->setFont(1, font);
291 // FIXME! Only do if necessary i.e. if something affecting this TSOS has
292 // changed.
293
294 QList<AssociatedObjectHandleBase*> list = getAllAscObjHandles();
295
296 if (list.empty()) {
298 "No ASC objects associated with this track - no track components "
299 "visible yet?");
300 return;
301 }
302
303 unsigned int numOfTS = 0;
304
305 for (auto trackstate : m_trackStates) {
306 // We assume that there is an ASC for every trackstate
307 AscObj_TrackState* asc = dynamic_cast<AscObj_TrackState*>(list.at(numOfTS));
308 if (!asc) {
310 "Could not cast to AscObj_TrackState, or could not find matching Asc "
311 "in list of size " +
312 QString::number(list.size()));
313 numOfTS++;
314 continue;
315 }
316
317 if (asc->trackState().index() != trackstate.index()) {
319 "WARNING! TrackHandle_TrackContainer::updateObjectBrowser: " +
320 QString::number(numOfTS) +
321 ": ASC index mismatch with trackstate from loop having " +
322 QString::number(trackstate.index()) + " and ASC TS having " +
323 QString::number(asc->trackState().index()));
324 numOfTS++;
325 continue;
326 }
327
328 if (!asc->browserTreeItem()) {
329 // not set yet - so need to do this now. Can we just use the index?
330 asc->setBrowserTreeItem(browserTreeItem()->child(numOfTS));
331 }
332
333 if (!asc->browserTreeItem()) {
334 VP1Msg::message("Could not find matching browserTreeItem");
335 numOfTS++;
336 continue;
337 }
338
339 if (!asc->visible()) {
340 asc->browserTreeItem()->setFlags(
341 Qt::ItemFlag()); // not selectable, not enabled
342 } else {
343 asc->browserTreeItem()->setFlags(
344 Qt::ItemIsSelectable | Qt::ItemIsEnabled); // selectable, enabled
345 }
346 QFont itemFont = asc->browserTreeItem()->font(0);
347 itemFont.setStrikeOut(!asc->visible());
348 asc->browserTreeItem()->setFont(0, itemFont);
349 asc->browserTreeItem()->setFont(1, itemFont);
350 numOfTS++;
351 }
352}
virtual QTreeWidgetItem * browserTreeItem() const
const ActsTrk::TrackStateBackend::ConstTrackStateProxy trackState() const

◆ updateRandomColourTransparencyAndBrightness()

void TrackHandleBase::updateRandomColourTransparencyAndBrightness ( )
inherited

Definition at line 1436 of file TrackHandleBase.cxx.

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

◆ updateShapes_TSOSWithErrors()

void TrackHandleBase::updateShapes_TSOSWithErrors ( )
privateinherited

Definition at line 274 of file TrackHandleBase.cxx.

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

◆ updateShapes_TSOSWithMaterialEffects()

void TrackHandleBase::updateShapes_TSOSWithMaterialEffects ( )
privateinherited

Definition at line 287 of file TrackHandleBase.cxx.

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

◆ updateShapes_TSOSWithMeasurements()

void TrackHandleBase::updateShapes_TSOSWithMeasurements ( )
privateinherited

Definition at line 261 of file TrackHandleBase.cxx.

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

◆ visible()

bool TrackHandleBase::visible ( ) const
inlineinherited

Definition at line 67 of file TrackHandleBase.h.

67{ return m_visible; }

◆ visibleStateChanged()

void TrackHandle_TrackContainer::visibleStateChanged ( )
privatevirtual

override if need to take action in this case.

Reimplemented from TrackHandleBase.

Definition at line 79 of file TrackHandle_TrackContainer.cxx.

◆ zoomToTSOS()

SoNode * TrackHandle_TrackContainer::zoomToTSOS ( unsigned int index)

Depending on controller configuration attempt to zoom to the corresponding TSOS & returned detailed node matching it.

Definition at line 239 of file TrackHandle_TrackContainer.cxx.

239 {
241 // now find matching AscObj_TSOS
242 auto trackState = m_trackStates.at(index);
243 QList<AssociatedObjectHandleBase*> list = getAllAscObjHandles();
245 "TrackHandle_TrackContainer::zoomToTSOS: checking ASC " +
246 QString::number(index) + " of " + QString::number(list.size()));
247
248 if ( (int)index < list.size()){
249 AscObj_TrackState* asc = dynamic_cast<AscObj_TrackState*>(list.at(index));
250 if (asc && asc->trackState().index()==trackState.index()) {
252 "TrackHandle_TrackContainer::zoomToTSOS: this ASC matches " +
253 QString::number(index));
254 return asc->shapeDetailed();
255 }
256 }
257
258 return nullptr;
259}

Member Data Documentation

◆ m_collhandle

TrackCollHandleBase* TrackHandleBase::m_collhandle
privateinherited

Definition at line 178 of file TrackHandleBase.h.

◆ m_container

const ActsTrk::TrackContainer& TrackHandle_TrackContainer::m_container
protected

Definition at line 63 of file TrackHandle_TrackContainer.h.

◆ m_currentmaterial

SoMaterial* TrackHandleBase::m_currentmaterial
privateinherited

Definition at line 179 of file TrackHandleBase.h.

◆ m_d

Imp* TrackHandleBase::m_d
privateinherited

Definition at line 173 of file TrackHandleBase.h.

◆ m_track

ActsTrk::TrackContainer::ConstTrackProxy TrackHandle_TrackContainer::m_track
protected

Definition at line 62 of file TrackHandle_TrackContainer.h.

◆ m_trackStates

std::vector<ActsTrk::TrackContainer::ConstTrackStateProxy> TrackHandle_TrackContainer::m_trackStates
protected

Definition at line 64 of file TrackHandle_TrackContainer.h.

◆ m_visible

bool TrackHandleBase::m_visible
privateinherited

Definition at line 177 of file TrackHandleBase.h.


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