Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
TrackHandleBase.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
7 // //
8 // Header file for class TrackHandleBase //
9 // //
10 // Description: Base class for track handles. //
11 // //
12 // Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
13 // Initial version: February 2008 //
14 // //
16 
17 #ifndef TRACKHANDLEBASE_H
18 #define TRACKHANDLEBASE_H
19 
21 
23 
24 // GeoModel
26 //
27 #include "GeoModelKernel/GeoVPhysVol.h"
28 
29 #include <QStringList>
30 #include <QTreeWidgetItem>
31 #include <vector>
32 #include <set>
33 #include <optional>
34 #include <QList>
35 #include <QFlags>
36 
37 
41 class TrackSysCommonData;
42 class SoMaterial;
43 class SoNode;
44 class TrackLODHandle;
45 
46 namespace Trk {
47  class Track;
48  class FitQuality;
49  class RIO_OnTrack;
50 }
51 
52 namespace MuonGM {
53  class MuonReadoutElement;
54 }
55 
57 public:
58 
59  static int numberOfInstances();
60 
62  virtual ~TrackHandleBase();
63 
64  TrackSysCommonData * common() const;
65 
66  void setVisible(bool);
67  bool visible() const { return m_visible; }
69  const std::set<GeoPVConstLink>& touchedMuonChambers() const;
70  void update3DObjects(bool invalidatePropagatedPoints = false, float maxR=0.0);
72  void updateMuonProjections();
73  void updateMaterial();
76  SoMaterial * currentMaterial() const { return m_currentmaterial; }
77 
78  QStringList baseInfo() const;
81  virtual QStringList clicked() const = 0;
82 
83  virtual Amg::Vector3D momentum() const { return Amg::Vector3D(0,0,0); }
84  virtual std::optional<Amg::Vector3D> startPoint() const;
85  virtual std::optional<Amg::Vector3D> endPoint() const;
86  virtual int pdgCode() const { return 0; }
87 
88  //Default implementation of the following two methods will based on
89  //pdgCode(). In the case of charge(), if it can't be determined
90  //based on pdgCode(), and attempt will be made by looking at the
91  //first track parameters charge (if a Trk::Track is
92  //provided). Override in case the charge/mass can be determined, but
93  //the pdg code not. (or if there is a faster way to get the charge than by constructing the Trk::Track first).
94  //
95  //NB: update: it is the calculateCharge() method which must be reimplemented for the charge!
96  double charge() const;//Returns unknown() in case of trouble.
97  virtual double mass() const;//Returns unknown() in case of trouble.
98 
99  bool hasCharge() const { return charge()!=unknown(); }
100  bool hasMass() const { return mass()!=unknown(); }
101 
102  static double unknown() { return -999.0; }
103 
104  virtual bool hasSubSystemHitInfo() const { return false; }
105  virtual bool isRun4EDM() const { return false; }
106  virtual bool isIDTrack() const ;
107  virtual unsigned getNPixelHits() const { return 0; }
108  virtual unsigned getNSCTHits() const { return 0; }
109  virtual unsigned getNTRTHits() const { return 0; }
110  virtual unsigned getNMuonHits() const { return (getNMDTHits()+getNRPCHits()+getNTGCHits()+getNCSCHits()+getNMMHits()+getNsTGCHits()); }
111  virtual unsigned getNMuonPhiHits() const { return 0; }
112  virtual unsigned getNMDTHits() const { return 0; }
113  virtual unsigned getNRPCHits() const { return 0; }
114  virtual unsigned getNTGCHits() const { return 0; }
115  virtual unsigned getNCSCHits() const { return 0; }
116  virtual unsigned getNMMHits() const { return 0; }
117  virtual unsigned getNsTGCHits() const { return 0; }
118  virtual unsigned getNMuonPrecisionHits() const { return getNMDTHits() + getNCSCHits(); } // This should really only count eta csc hits.
119  virtual const Trk::FitQuality* getFitQuality() const {return nullptr;}
121 
122  QList<AssociatedObjectHandleBase*> getVisibleMeasurements() const;
123  TrackCommonFlags::TSOSPartsFlags shownTSOSParts() const;
124  TrackCommonFlags::TSOSPartsFlags customColouredTSOSParts() const;
125 
126  std::vector< Amg::Vector3D > * hackGetPointsPropagated();
127 
128  virtual QString shortInfo() const { return QString("Not yet implemented"); }
129  virtual QString type() const { return QString("Not yet implemented"); }
130 
131  // Object browser code
132  // @TODO revisit this once plan for more general approach is completed.
133  virtual void fillObjectBrowser(QList<QTreeWidgetItem *>& list);
134  virtual void updateObjectBrowser(){};
135  QTreeWidgetItem* browserTreeItem() const ;
136 
137 protected:
138 
139  virtual double calculateCharge() const;
140 
141  //Ways of providing path information:
142  // * Provide a Trk::Track
143  // * Provide a vector of Amg::Vector3D (this precludes extrapolation) // BEFORE EIGEN MIGRATION WAS: HepGeom::Point3D<double>'s
144  //
145  //Override exactly one of the two following methods, in order to
146  //provide path information. It will be called exactly once and the
147  //derived class destructor will be responsible of any necessary
148  //memory cleanup of the returned objects:
149  virtual const Trk::Track * provide_pathInfoTrkTrack() const { return nullptr; };
150  // virtual const std::vector< HepGeom::Point3D<double> > * provide_pathInfoPoints() const { return 0; }
151  virtual const std::vector< Amg::Vector3D > * provide_pathInfoPoints() { return nullptr; }
152 
155 
156  virtual void ensureTouchedMuonChambersInitialised() const {};
157  void registerTouchedMuonChamber(const GeoPVConstLink&) const;
158 
159  virtual void visibleStateChanged();
160  virtual void currentMaterialChanged() {};
161 
162  const QList<AssociatedObjectHandleBase*>& getAllAscObjHandles() const;
163 
164  virtual bool containsDetElement(const QString&) const {return false; }
165 private:
166 
167  // It is illegal to copy/assign a TrackHandleBase:
170 
172  class Imp;
173  Imp * m_d;
174 
175 
176  //Here for inlining:
177  bool m_visible;
179  SoMaterial * m_currentmaterial;
180  void clearLine();
181  void registerTrack();
182 
186  void setShownTSOSParts(TrackCommonFlags::TSOSPartsFlags f);
187  void setCustomColouredTSOSParts(TrackCommonFlags::TSOSPartsFlags f);
188 
189  //For associated objects:
191  friend class TrackCollHandleBase; // Troels: maybe not needed...
192  /*** Returns the attachment handle for the given region index and crossover value.
193  * @param regionIndex: The region index is used to determine the region of the attachment in the detector.
194  * @param crossoverval: The crossover value is used to determine the level of detail of the track.
195  **/
196  AssocObjAttachmentHandle * getAttachmentHandle(int regionIndex, const double& crossoverval);
197 protected:
199  virtual void ensureInitTSOSs(std::vector<AssociatedObjectHandleBase*>*&);
200 };
201 
203 public:
204  void attachNodes( SoNode*simple, SoNode*detailed, bool unpickable );
205  void setPickableStateOfNodes( SoNode*simple, SoNode*detailed, bool unpickable );
206  void detachNodes( SoNode*simple, SoNode*detailed );
207 private:
208  friend class TrackHandleBase;//The life of these classes are entirely owned by TrackHandleBase.
209  friend class TrackHandleBase::Imp;//The life of these classes are entirely owned by TrackHandleBase.
214  void trackMaterialChanged();
215  void trackVisibilityChanged();
216  class Imp;
217  Imp * m_d;
218 };
219 
220 
221 #endif
TrackHandleBase::browserTreeItem
QTreeWidgetItem * browserTreeItem() const
Definition: TrackHandleBase.cxx:2026
AssociatedObjectHandleBase
Definition: AssociatedObjectHandleBase.h:35
TrackHandleBase::~TrackHandleBase
virtual ~TrackHandleBase()
Definition: TrackHandleBase.cxx:212
TrackHandleBase::customColouredTSOSParts
TrackCommonFlags::TSOSPartsFlags customColouredTSOSParts() const
Definition: TrackHandleBase.cxx:306
AssocObjAttachmentHandle::setPickableStateOfNodes
void setPickableStateOfNodes(SoNode *simple, SoNode *detailed, bool unpickable)
Will attach if not currently attached.
Definition: TrackHandleBase.cxx:1837
TrackHandleBase::touchedMuonChambers
const std::set< GeoPVConstLink > & touchedMuonChambers() const
Definition: TrackHandleBase.cxx:1275
TrackHandleBase::visibleStateChanged
virtual void visibleStateChanged()
override if need to take action in this case.
Definition: TrackHandleBase.cxx:2029
TrackCollHandleBase
Definition: TrackCollHandleBase.h:49
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition: GeoMuonHits.h:27
TrackHandleBase::isRun4EDM
virtual bool isRun4EDM() const
Definition: TrackHandleBase.h:105
TrackHandleBase::fillObjectBrowser
virtual void fillObjectBrowser(QList< QTreeWidgetItem * > &list)
Called in child classes.
Definition: TrackHandleBase.cxx:2009
TrackHandleBase::operator=
TrackHandleBase & operator=(const TrackHandleBase &)
TrackHandleBase::registerTouchedMuonChamber
void registerTouchedMuonChamber(const GeoPVConstLink &) const
If not earlier, touched muon chambers must me registered at latest when this method is invoked.
Definition: TrackHandleBase.cxx:1269
AssocObjAttachmentHandle::~AssocObjAttachmentHandle
~AssocObjAttachmentHandle()
Definition: TrackHandleBase.cxx:1713
TrackHandleBase::hasMass
bool hasMass() const
Definition: TrackHandleBase.h:100
TrackCommonFlags.h
TrackHandleBase::clearLine
void clearLine()
Definition: TrackHandleBase.cxx:640
TrackLODHandle
Definition: TrackLODManager.h:56
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
TrackHandleBase::currentMaterialChanged
virtual void currentMaterialChanged()
Definition: TrackHandleBase.h:160
TrackHandleBase::charge
double charge() const
Definition: TrackHandleBase.cxx:1508
TrackHandleBase::getNMuonPhiHits
virtual unsigned getNMuonPhiHits() const
The number of phi hits is part of hit counts below (i.e.
Definition: TrackHandleBase.h:111
TrackHandleBase::clicked
virtual QStringList clicked() const =0
Called when user selects the node (stringlist is displayed in messagebox).
TrackHandleBase::m_currentmaterial
SoMaterial * m_currentmaterial
Definition: TrackHandleBase.h:179
TrackHandleBase::Imp
Definition: TrackHandleBase.cxx:76
TrackHandleBase::getNTGCHits
virtual unsigned getNTGCHits() const
Definition: TrackHandleBase.h:114
TrackHandleBase::collHandle
TrackCollHandleBase * collHandle() const
Definition: TrackHandleBase.h:68
TrackHandleBase::getAllAscObjHandles
const QList< AssociatedObjectHandleBase * > & getAllAscObjHandles() const
override if need to take action in this case.
Definition: TrackHandleBase.cxx:1634
TrackHandleBase::updateShapes_TSOSWithMeasurements
void updateShapes_TSOSWithMeasurements()
Definition: TrackHandleBase.cxx:261
AssocObjAttachmentHandle::detachNodes
void detachNodes(SoNode *simple, SoNode *detailed)
Definition: TrackHandleBase.cxx:1920
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
TrackHandleBase::updateMuonProjections
void updateMuonProjections()
Definition: TrackHandleBase.cxx:542
AssocObjAttachmentHandle::AssocObjAttachmentHandle
AssocObjAttachmentHandle(TrackLODHandle *, TrackHandleBase *)
Definition: TrackHandleBase.cxx:1701
TrackHandleBase::getNSCTHits
virtual unsigned getNSCTHits() const
Definition: TrackHandleBase.h:108
AssocObjAttachmentHandle::trackMaterialChanged
void trackMaterialChanged()
Definition: TrackHandleBase.cxx:1741
TrackHandleBase::provide_pathInfoPoints
virtual const std::vector< Amg::Vector3D > * provide_pathInfoPoints()
Definition: TrackHandleBase.h:151
TrackHandleBase::TrackHandleBase
TrackHandleBase(const TrackHandleBase &)
TrackHandleBase::type
virtual QString type() const
return very short word with type (maybe link with collection type?)
Definition: TrackHandleBase.h:129
TrackHandleBase::getMuonReadoutElement
virtual const MuonGM::MuonReadoutElement * getMuonReadoutElement(const Trk::RIO_OnTrack &mb) const
Definition: TrackHandleBase.cxx:1966
MuonGM::MuonReadoutElement
Base class for the XxxReadoutElement, with Xxx = Mdt, Rpc, Tgc, Csc.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:40
TrackHandleBase::updateObjectBrowser
virtual void updateObjectBrowser()
Definition: TrackHandleBase.h:134
TrackHandleBase::hackGetPointsPropagated
std::vector< Amg::Vector3D > * hackGetPointsPropagated()
FIXME.
Definition: TrackHandleBase.cxx:1639
TrackHandleBase::getNsTGCHits
virtual unsigned getNsTGCHits() const
Definition: TrackHandleBase.h:117
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
TrackHandleBase::registerAssocObject
void registerAssocObject(AssociatedObjectHandleBase *)
Trackhandle assumes ownership.
Definition: TrackHandleBase.cxx:1449
AssocObjAttachmentHandle::AssocObjAttachmentHandle
AssocObjAttachmentHandle(const AssocObjAttachmentHandle &)
TrackHandleBase::calculateCharge
virtual double calculateCharge() const
Definition: TrackHandleBase.cxx:1481
GeoPrimitives.h
TrackHandleBase::endPoint
virtual std::optional< Amg::Vector3D > endPoint() const
returns 0 if can't find start point.
Definition: TrackHandleBase.cxx:1607
TrackHandleBase::ensureTouchedMuonChambersInitialised
virtual void ensureTouchedMuonChambersInitialised() const
Definition: TrackHandleBase.h:156
TrackHandleBase::getNTRTHits
virtual unsigned getNTRTHits() const
Definition: TrackHandleBase.h:109
TrackHandleBase::getFitQuality
virtual const Trk::FitQuality * getFitQuality() const
Definition: TrackHandleBase.h:119
TrackHandleBase::updateShapes_TSOSWithErrors
void updateShapes_TSOSWithErrors()
Definition: TrackHandleBase.cxx:274
AssocObjAttachmentHandle::Imp
Definition: TrackHandleBase.cxx:1646
TrackSysCommonData
Definition: TrackSysCommonData.h:50
TrackHandleBase::setCustomColouredTSOSParts
void setCustomColouredTSOSParts(TrackCommonFlags::TSOSPartsFlags f)
Definition: TrackHandleBase.cxx:356
TrackHandleBase::updateRandomColourTransparencyAndBrightness
void updateRandomColourTransparencyAndBrightness()
Definition: TrackHandleBase.cxx:1436
AssocObjAttachmentHandle::attachNodes
void attachNodes(SoNode *simple, SoNode *detailed, bool unpickable)
Definition: TrackHandleBase.cxx:1785
TrackHandleBase::hasSubSystemHitInfo
virtual bool hasSubSystemHitInfo() const
Definition: TrackHandleBase.h:104
TrackHandleBase::momentum
virtual Amg::Vector3D momentum() const
Definition: TrackHandleBase.h:83
TrackHandleBase::visible
bool visible() const
Definition: TrackHandleBase.h:67
TrackHandleBase::ensureInitTSOSs
virtual void ensureInitTSOSs(std::vector< AssociatedObjectHandleBase * > *&)
Ensure that the TSOSs are initialized.
Definition: TrackHandleBase.cxx:380
TrackHandleBase::getNRPCHits
virtual unsigned getNRPCHits() const
Definition: TrackHandleBase.h:113
TrackHandleBase::setShownTSOSParts
void setShownTSOSParts(TrackCommonFlags::TSOSPartsFlags f)
Definition: TrackHandleBase.cxx:312
TrackHandleBase::rerandomiseRandomMaterial
void rerandomiseRandomMaterial()
Definition: TrackHandleBase.cxx:1395
AssocObjAttachmentHandle
Definition: TrackHandleBase.h:202
TrackHandleBase::getNMuonHits
virtual unsigned getNMuonHits() const
Definition: TrackHandleBase.h:110
TrackHandleBase::currentMaterial
SoMaterial * currentMaterial() const
Definition: TrackHandleBase.h:76
TrackHandleBase::shortInfo
virtual QString shortInfo() const
returns mom and hit information about track
Definition: TrackHandleBase.h:128
hist_file_dump.f
f
Definition: hist_file_dump.py:141
AssocObjAttachmentHandle::m_d
Imp * m_d
Definition: TrackHandleBase.h:216
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
Trk::FitQuality
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
Definition: FitQuality.h:97
ParticleHypothesis.h
TrackHandleBase::pdgCode
virtual int pdgCode() const
0 means unknown
Definition: TrackHandleBase.h:86
TrackHandleBase::getNMDTHits
virtual unsigned getNMDTHits() const
Definition: TrackHandleBase.h:112
TrackHandleBase::registerTrack
void registerTrack()
Definition: TrackHandleBase.cxx:650
TrackHandleBase::getNMMHits
virtual unsigned getNMMHits() const
Definition: TrackHandleBase.h:116
TrackHandleBase::m_collhandle
TrackCollHandleBase * m_collhandle
Definition: TrackHandleBase.h:178
TrackHandleBase::common
TrackSysCommonData * common() const
Definition: TrackHandleBase.cxx:255
TrackHandleBase::TrackHandleBase
TrackHandleBase(TrackCollHandleBase *)
Definition: TrackHandleBase.cxx:204
TrackHandleBase::extrapolationParticleHypothesis
virtual Trk::ParticleHypothesis extrapolationParticleHypothesis() const
Default implementation of this next method bases hypothesis on pdgCode() and charge():
Definition: TrackHandleBase.cxx:1534
TrackHandleBase::updateMaterial
void updateMaterial()
Definition: TrackHandleBase.cxx:954
TrackHandleBase::getNPixelHits
virtual unsigned getNPixelHits() const
Definition: TrackHandleBase.h:107
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
TrackHandleBase::startPoint
virtual std::optional< Amg::Vector3D > startPoint() const
returns 0 if can't find start point.
Definition: TrackHandleBase.cxx:1587
AssocObjAttachmentHandle::operator=
AssocObjAttachmentHandle & operator=(const AssocObjAttachmentHandle &)
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::MeasurementBaseType::RIO_OnTrack
@ RIO_OnTrack
Definition: MeasurementBase.h:49
TrackHandleBase::isIDTrack
virtual bool isIDTrack() const
Definition: TrackHandleBase.cxx:1626
TrackHandleBase::updateShapes_TSOSWithMaterialEffects
void updateShapes_TSOSWithMaterialEffects()
Definition: TrackHandleBase.cxx:287
TrackHandleBase::m_d
Imp * m_d
Definition: TrackHandleBase.h:172
TrackHandleBase::getNCSCHits
virtual unsigned getNCSCHits() const
Definition: TrackHandleBase.h:115
TrackHandleBase::getVisibleMeasurements
QList< AssociatedObjectHandleBase * > getVisibleMeasurements() const
Definition: TrackHandleBase.cxx:1996
TrackHandleBase::updateInDetProjections
void updateInDetProjections()
Definition: TrackHandleBase.cxx:529
TrackHandleBase::getNMuonPrecisionHits
virtual unsigned getNMuonPrecisionHits() const
Definition: TrackHandleBase.h:118
TrackHandleBase::setVisible
void setVisible(bool)
use by the collection handle.
Definition: TrackHandleBase.cxx:434
TRT_PAI_physicsConstants::mb
const double mb
1mb to cm2
Definition: TRT_PAI_physicsConstants.h:15
AssocObjAttachmentHandle::trackVisibilityChanged
void trackVisibilityChanged()
Definition: TrackHandleBase.cxx:1689
TrackHandleBase::update3DObjects
void update3DObjects(bool invalidatePropagatedPoints=false, float maxR=0.0)
Definition: TrackHandleBase.cxx:505
TrackHandleBase::provide_pathInfoTrkTrack
virtual const Trk::Track * provide_pathInfoTrkTrack() const
Definition: TrackHandleBase.h:149
TrackHandleBase::containsDetElement
virtual bool containsDetElement(const QString &) const
Definition: TrackHandleBase.h:164
TrackHandleBase::shownTSOSParts
TrackCommonFlags::TSOSPartsFlags shownTSOSParts() const
Definition: TrackHandleBase.cxx:300
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
TrackHandleBase::getAttachmentHandle
AssocObjAttachmentHandle * getAttachmentHandle(int regionIndex, const double &crossoverval)
Definition: TrackHandleBase.cxx:1468
TrackHandleBase::baseInfo
QStringList baseInfo() const
Definition: TrackHandleBase.cxx:1551
TrackHandleBase::hasCharge
bool hasCharge() const
Definition: TrackHandleBase.h:99
TrackHandleBase::m_visible
bool m_visible
Definition: TrackHandleBase.h:177
TrackHandleBase::mass
virtual double mass() const
Definition: TrackHandleBase.cxx:1518
TrackHandleBase
Definition: TrackHandleBase.h:56
TrackHandleBase::numberOfInstances
static int numberOfInstances()
Definition: TrackHandleBase.cxx:249
TrackHandleBase::unknown
static double unknown()
Definition: TrackHandleBase.h:102
python.Dumpers.FitQuality
FitQuality
Definition: Dumpers.py:63