ATLAS Offline Software
TrackHandle_xAODTrackParticle.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
7 // //
8 // Implementation of class TrackHandle_xAODTrackParticle //
9 // //
10 // Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
11 // Initial version: May 2008 //
12 // //
14 
17 #include "VP1Base/VP1Msg.h"
21 
22 //____________________________________________________________________
24 public:
25 
26  const Trk::Track * createTrack(Trk::TrackStates* trackStateOnSurfaces) const
27  {
28  if (!trackStateOnSurfaces) {
29  VP1Msg::messageDebug("TrackHandle_xAODTrackParticle WARNING: Could not create track due to null TSOS vector");
30  return nullptr;
31  }
32  if (trackStateOnSurfaces->empty()) {
33  VP1Msg::messageDebug("TrackHandle_xAODTrackParticle WARNING: Could not create track due to empty TSOS vector");
34  delete trackStateOnSurfaces;
35  return nullptr;
36  }
38  std::unique_ptr<Trk::TrackStates> sink(trackStateOnSurfaces);
39  const Trk::Track* trk =
40  new Trk::Track(ti,
41  std::move(sink),
42  nullptr /*fitquality*/);
43  if (VP1Msg::verbose())
44  VP1Msg::messageVerbose("TrackHandle_xAODTrackParticle created track with "
45  +QString::number(trackStateOnSurfaces->size())+" parameters");
46  return trk;
47  }
49 
54 
55 };
56 
57 //____________________________________________________________________
59  : TrackHandleBase(ch), m_d(new Imp)
60 {
61  m_d->theclass = this;
62  m_d->trackparticle = tp;
63  m_d->trkTrack = nullptr;
64  m_d->trkTrackInit = false;
65 
66 }
67 
68 //____________________________________________________________________
70 {
71  delete m_d;
72 }
73 
74 //____________________________________________________________________
76 {
77  QStringList l;
78  l << "xAODTrackParticle:";
80  return l;
81 }
82 
83 //____________________________________________________________________
85 {
87  if (!common()->trackSanityHelper()->isSafe(&p))
88  return Amg::Vector3D(0,0,0);//fixme: warn?
89  return p.momentum();
90 }
91 
92 //____________________________________________________________________
94 {
95 
96  return m_d->trackparticle->charge();
97 }
98 
99 //____________________________________________________________________
101 {
102  if (m_d->trkTrackInit)
103  return m_d->trkTrack;
104  m_d->trkTrackInit = true;
105  std::vector<const Trk::TrackParameters*> trackpars;
106  Trk::TrackStates* trackStateOnSurfaces = new Trk::TrackStates;
107 
108  const Trk::Perigee* peri = &(m_d->trackparticle->perigeeParameters());
109 
110  trackpars.push_back(peri);
111 
112 
113  //NB: We only ever created this handle if charge()!=0.0:
114  for (unsigned i = 0; i < trackpars.size(); ++i) {
115  const Trk::TrackParameters* p = (trackpars.at(i));
116  if (!p)
117  continue;
118  if (!common()->trackSanityHelper()->isSafe(p))
119  continue;
120  trackStateOnSurfaces->push_back(new Trk::TrackStateOnSurface(nullptr,p->uniqueClone(),nullptr));
121  }
122  // }
123 
124  m_d->trkTrack = m_d->createTrack(trackStateOnSurfaces);
125  return m_d->trkTrack;
126 }
127 
128 //____________________________________________________________________
130 {
131 }
132 
133 //____________________________________________________________________
135 {
138  return numberOfPixelHits;
139  return 0;
140 }
141 
142 //____________________________________________________________________
144 {
147  return numberOfSCTHits;
148  return 0;
149 }
150 
151 //____________________________________________________________________
153 {
156  return numberOfTRTHits;
157  return 0;
158 }
159 
160 //____________________________________________________________________
162 {
163  return 0;
164 }
165 //____________________________________________________________________
167 {
168  return 0;
169 }
170 //____________________________________________________________________
172 {
173  return 0;
174 }//____________________________________________________________________
176 {
177  return 0;
178 }
179 //____________________________________________________________________
181 {
182  return 0;
183 }
TrackHandle_xAODTrackParticle::Imp::trkTrackInit
bool trkTrackInit
Definition: TrackHandle_xAODTrackParticle.cxx:53
TrackHandle_xAODTrackParticle::calculateCharge
double calculateCharge() const
Definition: TrackHandle_xAODTrackParticle.cxx:93
TrackCollHandleBase.h
Trk::TrackInfo
Contains information about the 'fitter' of this track.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:32
TrackCollHandleBase
Definition: TrackCollHandleBase.h:49
sendEI_SPB.ch
ch
Definition: sendEI_SPB.py:35
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
TrackParameters.h
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
xAOD::TrackParticle_v1::charge
float charge() const
Returns the charge.
Definition: TrackParticle_v1.cxx:150
VP1Msg.h
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
VP1TrackSanity::isSafe
static bool isSafe(const Trk::TrackStateOnSurface *)
Definition: VP1TrackSanity.cxx:46
xAOD::TrackParticle_v1::summaryValue
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
Definition: TrackParticle_v1.cxx:736
xAOD::JetInput::Track
@ Track
Definition: JetContainerInfo.h:61
CSV_InDetExporter.new
new
Definition: CSV_InDetExporter.py:145
ParticleTest.tp
tp
Definition: ParticleTest.py:25
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:259
xAOD::numberOfTRTHits
@ numberOfTRTHits
number of TRT hits [unit8_t].
Definition: TrackingPrimitives.h:275
TrackHandle_xAODTrackParticle::provide_pathInfoTrkTrack
const Trk::Track * provide_pathInfoTrkTrack() const
Definition: TrackHandle_xAODTrackParticle.cxx:100
TrackHandle_xAODTrackParticle.h
TrackHandle_xAODTrackParticle::momentum
virtual Amg::Vector3D momentum() const
Definition: TrackHandle_xAODTrackParticle.cxx:84
TrackHandle_xAODTrackParticle::getNCSCHits
virtual unsigned getNCSCHits() const
Definition: TrackHandle_xAODTrackParticle.cxx:180
VP1TrackSanity.h
TrackHandle_xAODTrackParticle::Imp::theclass
TrackHandle_xAODTrackParticle * theclass
Definition: TrackHandle_xAODTrackParticle.cxx:50
TrackHandle_xAODTrackParticle::Imp::createTrack
const Trk::Track * createTrack(Trk::TrackStates *trackStateOnSurfaces) const
Definition: TrackHandle_xAODTrackParticle.cxx:26
TrackHandle_xAODTrackParticle::getNTRTHits
virtual unsigned getNTRTHits() const
Definition: TrackHandle_xAODTrackParticle.cxx:152
xAOD::TrackParticle_v1::perigeeParameters
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
Definition: TrackParticle_v1.cxx:485
Trk::TrackStates
DataVector< const Trk::TrackStateOnSurface > TrackStates
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:30
TrackHandle_xAODTrackParticle
Definition: TrackHandle_xAODTrackParticle.h:28
lumiFormat.i
int i
Definition: lumiFormat.py:92
TrackHandle_xAODTrackParticle::ensureTouchedMuonChambersInitialised
void ensureTouchedMuonChambersInitialised() const
Definition: TrackHandle_xAODTrackParticle.cxx:129
TrackHandle_xAODTrackParticle::getNSCTHits
virtual unsigned getNSCTHits() const
Definition: TrackHandle_xAODTrackParticle.cxx:143
TrackSummary.h
Trk::ParametersBase
Definition: ParametersBase.h:55
TrackHandle_xAODTrackParticle::Imp::trkTrack
const Trk::Track * trkTrack
Definition: TrackHandle_xAODTrackParticle.cxx:52
DataVector< const Trk::TrackStateOnSurface >
TrackHandle_xAODTrackParticle::m_d
Imp * m_d
Definition: TrackHandle_xAODTrackParticle.h:58
TrackHandle_xAODTrackParticle::getNPixelHits
virtual unsigned getNPixelHits() const
Definition: TrackHandle_xAODTrackParticle.cxx:134
TrackHandleBase::common
TrackSysCommonData * common() const
Definition: TrackHandleBase.cxx:255
TrackHandleBase::extrapolationParticleHypothesis
virtual Trk::ParticleHypothesis extrapolationParticleHypothesis() const
Default implementation of this next method bases hypothesis on pdgCode() and charge():
Definition: TrackHandleBase.cxx:1517
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
python.selection.number
number
Definition: selection.py:20
VP1Msg::messageVerbose
static void messageVerbose(const QString &)
Definition: VP1Msg.cxx:84
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
TrackHandle_xAODTrackParticle::~TrackHandle_xAODTrackParticle
virtual ~TrackHandle_xAODTrackParticle()
Definition: TrackHandle_xAODTrackParticle.cxx:69
TrackHandle_xAODTrackParticle::clicked
virtual QStringList clicked() const
Called when user selects the node (stringlist is displayed in messagebox).
Definition: TrackHandle_xAODTrackParticle.cxx:75
TrackHandle_xAODTrackParticle::getNTGCHits
virtual unsigned getNTGCHits() const
Definition: TrackHandle_xAODTrackParticle.cxx:175
TrackHandle_xAODTrackParticle::TrackHandle_xAODTrackParticle
TrackHandle_xAODTrackParticle(TrackCollHandleBase *, const xAOD::TrackParticle *)
Definition: TrackHandle_xAODTrackParticle.cxx:58
VP1Msg::messageDebug
static void messageDebug(const QString &)
Definition: VP1Msg.cxx:39
TrackHandle_xAODTrackParticle::Imp
Definition: TrackHandle_xAODTrackParticle.cxx:23
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:268
TrackHandle_xAODTrackParticle::getNRPCHits
virtual unsigned getNRPCHits() const
Definition: TrackHandle_xAODTrackParticle.cxx:171
TrackHandleBase::baseInfo
QStringList baseInfo() const
Definition: TrackHandleBase.cxx:1534
VP1Msg::verbose
static bool verbose()
Definition: VP1Msg.h:31
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
TrackHandle_xAODTrackParticle::getNMuonPhiHits
virtual unsigned getNMuonPhiHits() const
The number of phi hits is part of hit counts below (i.e.
Definition: TrackHandle_xAODTrackParticle.cxx:161
TrackHandleBase
Definition: TrackHandleBase.h:56
TrackHandle_xAODTrackParticle::Imp::trackparticle
const xAOD::TrackParticle * trackparticle
Definition: TrackHandle_xAODTrackParticle.cxx:51
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
TrackSysCommonData::trackSanityHelper
VP1TrackSanity * trackSanityHelper() const
Definition: TrackSysCommonData.h:126
TrackHandle_xAODTrackParticle::getNMDTHits
virtual unsigned getNMDTHits() const
Definition: TrackHandle_xAODTrackParticle.cxx:166
Trk::TrackInfo::Unknown
@ Unknown
Track fitter not defined.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:41