27#include "Identifier/Identifier.h"
35#include <Inventor/nodes/SoSeparator.h>
36#include <Inventor/nodes/SoNode.h>
66 l <<
"ERROR: This TrackHandle_TrkTrack handle has a NULL track pointer!!";
69 l <<
"Author info: " <<
" "+QString(
m_trk->info().dumpInfo().c_str());
72 if (
m_trk->fitQuality())
73 l <<
"Fit quality [Chi^2, nDoF] = ["+QString::number(
m_trk->fitQuality()->chiSquared())+
", "+QString::number(
m_trk->fitQuality()->doubleNumberDoF())+
"]. ";
74 if (
common()->controller()->printVerboseInfoOnSingleSelection()) {
75 l <<
" ===== dump =====";
78 l << QString(s.str().c_str()).split(
'\n');
95 for (; tsos_iter != tsos_end; ++tsos_iter) {
98 VP1Msg::messageVerbose(
"TrackHandle_TrkTrack WARNING: Skipping unsafe TSOS for touched muon chamber determination.");
115 VP1Msg::messageVerbose(
"TrackHandle_TrkTrack WARNING: Skipping unsafe TSOS for touched muon chamber determination.");
134 if (!
common()->trackSanityHelper()->isSafe(param))
136 return param->momentum();
159 m_hitInfoStatus =
VP1TrackSummary::countHits(
m_trk,
m_nhits_pixel,
m_nhits_sct,
m_nhits_trt,
m_nhits_muon_phi,
m_nhits_rpc,
m_nhits_mdt,
m_nhits_tgc,
m_nhits_csc,
m_nhits_mm,
m_nhits_stgc) ? 1 : 0;
178 if (i<
static_cast<unsigned int>(list.size())) asc =
dynamic_cast<AscObj_TSOS*
>(list.at(i));
186 TSOSitem->setFlags(Qt::ItemFlag());
187 QFont itemFont = TSOSitem->font(0);
188 itemFont.setStrikeOut(
true);
189 TSOSitem->setFont(0, itemFont);
190 TSOSitem->setFont(1, itemFont);
192 TSOSitem->setText(0, QString(
"Track State "+QString::number( (
int)(it -
trkTrackPointer()->trackStateOnSurfaces ()->begin() ) ) ) );
201 QTreeWidgetItem* measItem =
new QTreeWidgetItem(TSOSitem);
202 measItem->setExpanded(
true);
203 measItem->setFlags(Qt::ItemIsEnabled);
204 measItem->setText(0, measName);
208 for (
int i = 0; i < (list.size()-1); ){
209 QTreeWidgetItem* subparamItem =
new QTreeWidgetItem(measItem);
210 subparamItem->setText(0, list.at(i++) );
211 subparamItem->setText(1, list.at(i++) );
212 subparamItem->setFlags(Qt::ItemIsEnabled);
217 if ( (*it)->trackParameters () ) {
218 if (!first) tsosText.append(
" + ");
219 tsosText.append(
"Parameters");
221 QTreeWidgetItem* paramItem =
new QTreeWidgetItem(TSOSitem);
222 paramItem->setExpanded(
true);
223 paramItem->setFlags(Qt::ItemIsEnabled);
228 for (
int i = 0; i < (list.size()-1); ){
229 QTreeWidgetItem* subparamItem =
new QTreeWidgetItem(paramItem);
230 subparamItem->setText(0, list.at(i++) );
231 subparamItem->setText(1, list.at(i++) );
232 subparamItem->setFlags(Qt::ItemIsEnabled);
237 if ( (*it)->materialEffectsOnTrack () ){
238 if (!first) tsosText.append(
" + ");
239 tsosText.append(
"MaterialEffectsOnTrack");
240 QTreeWidgetItem* meItem =
new QTreeWidgetItem(TSOSitem);
241 meItem->setExpanded(
true);
242 meItem->setFlags(Qt::ItemIsEnabled);
249 if ( (*it)->fitQualityOnSurface () ){
250 if (!first) tsosText.append(
" + ");
251 tsosText.append(
"FitQuality");
252 QTreeWidgetItem* fqItem =
new QTreeWidgetItem(TSOSitem);
253 fqItem->setExpanded(
true);
254 fqItem->setFlags(Qt::ItemIsEnabled);
255 fqItem->setText(0, QString(
"FitQuality") );
263 if (!first) tsosText.append(
" + ");
264 tsosText.append(
"Outlier");
268 if (!first) tsosText.append(
" + ");
269 tsosText.append(
"InertMaterial");
273 if (!first) tsosText.append(
" + ");
274 tsosText.append(
"BremPoint");
278 if (!first) tsosText.append(
" + ");
279 tsosText.append(
"Perigee");
283 if (!first) tsosText.append(
" + ");
284 tsosText.append(
"Hole");
286 TSOSitem->setText(1, tsosText );
297 for (
int i = 0; i < list.size(); ++i) {
303 VP1Msg::messageVerbose(
"TrackSystemController::objectBrowserClicked: this ASC matches "+QString::number(i));
352 VP1Msg::message(
"No ASC objects associated with this track - no track components visible yet?");
358 unsigned int numOfTSOS=0;
359 for (;it!=itE;++it,++numOfTSOS){
363 VP1Msg::message(
"TSOS#"+QString::number(numOfTSOS)+
" does not seem to match AscObj_TSOS in list, which has size="+QString::number(list.size())+
" Will try fallback.");
364 for (
int i = 0; i < list.size(); ++i) {
372 VP1Msg::message(
"Could not find matching Asc in list of size "+QString::number(list.size()));
389 asc->
browserTreeItem()->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
392 itemFont.setStrikeOut(!asc->
visible());
405 Identifier::value_type tmpInt =
id.toLong(
nullptr,10);
406 Identifier::value_type tmpInt2 =
id.toLong(
nullptr,16);
412 for (; it != itE; ++it)
416 if ((*it)->surface().associatedDetectorElementIdentifier()==tmpInt) {
420 if ((*it)->surface().associatedDetectorElementIdentifier()==tmpInt2) {
virtual QTreeWidgetItem * browserTreeItem() const
virtual void setBrowserTreeItem(QTreeWidgetItem *obt)
const Trk::TrackStateOnSurface * trackStateOnSurface() const
SoSeparator * shapeDetailed() const
DataModel_detail::const_iterator< DataVector > const_iterator
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
Base class for the XxxReadoutElement, with Xxx = Mdt, Rpc, Tgc, Csc.
void registerTouchedMuonChamber(const GeoPVConstLink &) const
If not earlier, touched muon chambers must me registered at latest when this method is invoked.
virtual void fillObjectBrowser(QList< QTreeWidgetItem * > &list)
Called in child classes.
virtual void visibleStateChanged()
override if need to take action in this case.
QTreeWidgetItem * browserTreeItem() const
friend class TrackCollHandleBase
TrackHandleBase(TrackCollHandleBase *)
QStringList baseInfo() const
virtual const MuonGM::MuonReadoutElement * getMuonReadoutElement(const Trk::RIO_OnTrack &mb) const
virtual Amg::Vector3D momentum() const
TrackCollHandleBase * collHandle() const
TrackSysCommonData * common() const
const QList< AssociatedObjectHandleBase * > & getAllAscObjHandles() const
override if need to take action in this case.
virtual unsigned getNMDTHits() const
virtual void updateObjectBrowser()
virtual unsigned getNCSCHits() const
virtual Amg::Vector3D momentum() const
virtual unsigned getNsTGCHits() const
virtual const Trk::FitQuality * getFitQuality() const
void visibleStateChanged()
override if need to take action in this case.
SoNode * zoomToTSOS(unsigned int index)
Depending on controller configuration attempt to zoom to the corresponding TSOS & returned detailed n...
void ensureInitSubSysHitInfo() const
const Trk::Track * trkTrackPointer() const
TrackHandle_TrkTrack(TrackCollHandleBase *, const Trk::Track *)
void currentMaterialChanged()
int m_hitInfoStatus
-1: uninitialized, 0: not present, 1: present.
virtual QString shortInfo() const
returns mom and hit information about track
virtual unsigned getNRPCHits() const
virtual unsigned getNTRTHits() const
virtual QStringList clicked() const
Called when user selects the node (stringlist is displayed in messagebox).
void ensureTouchedMuonChambersInitialised() const
virtual unsigned getNMMHits() const
virtual ~TrackHandle_TrkTrack()
virtual void fillObjectBrowser(QList< QTreeWidgetItem * > &list)
Called in child classes.
virtual unsigned getNSCTHits() const
void ensureTouchedMuonChambersInitialiasedFromMeas(const Trk::MeasurementBase *meas) const
virtual bool containsDetElement(const QString &) const
virtual unsigned getNPixelHits() const
virtual unsigned getNTGCHits() const
unsigned m_nhits_muon_phi
VP1TrackSanity * trackSanityHelper() const
TrackSystemController * controller() const
QTreeWidget * trackObjBrowser() const
Returns a pointer to the Track Object Browser (if it exists)
static QString name(const Trk::MeasurementBase &mb)
static QString shortInfo(const Trk::MeasurementBase &mb)
static QStringList fullInfo(const Trk::MeasurementBase &tp)
Returns list of key, value, key, value etc.
Base class for all CompetingRIOsOnTack implementations, extends the common MeasurementBase.
virtual const RIO_OnTrack & rioOnTrack(unsigned int) const =0
returns the RIO_OnTrack (also known as ROT) objects depending on the integer.
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
This class is the pure abstract base class for all fittable tracking measurements.
Class to handle RIO On Tracks ROT) for InDet and Muons, it inherits from the common MeasurementBase.
represents the track state (measurement, material, fit parameters and quality) at a surface.
@ Perigee
This represents a perigee, and so will contain a Perigee object only.
@ BremPoint
This represents a brem point on the track, and so will contain TrackParameters and MaterialEffectsBas...
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
@ InertMaterial
This represents inert material, and so will contain MaterialEffectsBase.
@ Hole
A hole on the track - this is defined in the following way.
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
static bool hasMuonGeometry()
static void messageVerbose(const QString &)
static void message(const QString &, IVP1System *sys=0)
static QString str(const QString &s)
static bool isSafe(const Trk::TrackStateOnSurface *)
static bool countHits(const Trk::Track *, unsigned &nPixelHits, unsigned &nSCTHits, unsigned &nTRTHits, unsigned &nhits_muon_phi, unsigned &nhits_rpc, unsigned &nhits_mdt, unsigned &nhits_tgc, unsigned &nhits_csc, unsigned &nhits_mm, unsigned &nhits_stgc)
Eigen::Matrix< double, 3, 1 > Vector3D
ParametersBase< TrackParametersDim, Charged > TrackParameters