ATLAS Offline Software
EMBremCollectionBuilder.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3  */
4 
6 
8 #include "TrkTrack/LinkToTrack.h"
9 #include "TrkTrack/Track.h"
12 
20 
21 #include "StoreGate/ReadHandle.h"
22 #include "StoreGate/WriteHandle.h"
23 
24 // std includes
25 #include <algorithm>
26 #include <memory>
27 
29 
30 namespace {
31  void copySummaryValue(
32  const xAOD::TrackParticle &src,
34  const xAOD::SummaryType &information
35  ) {
36  uint8_t value = summaryValueInt(src, information, 0);
37  dest.setSummaryValue(value, information);
38  }
39 }
40 
42  ISvcLocator* pSvcLocator)
43  : AthReentrantAlgorithm(name, pSvcLocator)
44 {}
45 
48 {
49 
54 
55  /* retrieve the track refitter tool*/
56  ATH_CHECK(m_trkRefitTool.retrieve());
57  /* Get the particle creation tool */
58  ATH_CHECK(m_particleCreatorTool.retrieve());
59  /* Get the track slimming tool if needed */
60  if (m_doSlimTrkTracks) {
61  ATH_CHECK(m_slimTool.retrieve());
62  } else {
63  m_slimTool.disable();
64  }
65 
66  return StatusCode::SUCCESS;
67 }
68 
71 {
72  ATH_MSG_INFO("====> GSF fitting Statistics ============");
73  ATH_MSG_INFO("RefittedTracks: " << m_RefittedTracks);
74  ATH_MSG_INFO("Failed Fit Tracks: " << m_FailedFitTracks);
75  ATH_MSG_INFO("Not refitted due to selection: " << m_FailedSiliconRequirFit);
76  ATH_MSG_INFO("<========================================");
77  return StatusCode::SUCCESS;
78 }
79 
81 EMBremCollectionBuilder::execute(const EventContext& ctx) const
82 {
83  // Read the inputs
84  // The input track particles
87  ATH_CHECK(trackTES.isValid());
88 
89  // The input selected track particles (subset of "all" input
90  // read above).
91  SG::ReadHandle<xAOD::TrackParticleContainer> selectedTrackParticles(
93  ATH_CHECK(selectedTrackParticles.isValid());
94 
95  // Create the final containers to be written out
96  // 1. Track particles
99  ATH_CHECK(finalTrkPartContainer.record(
100  std::make_unique<xAOD::TrackParticleContainer>(),
101  std::make_unique<xAOD::TrackParticleAuxContainer>()));
102  xAOD::TrackParticleContainer* cPtrTrkPart = finalTrkPartContainer.ptr();
103 
104  // 2. Trk::Tracks
106  ATH_CHECK(finalTracks.record(std::make_unique<TrackCollection>()));
107  TrackCollection* cPtrTracks = finalTracks.ptr();
108 
109  // Loop over the selected track-particles
110  // Split TRT-alone from silicon ones.
111  // For the TRT we can get all the info
112  // already since we are not going to refit.
113  std::vector<const xAOD::TrackParticle*> siliconTrkTracks;
114  siliconTrkTracks.reserve(16);
115  std::vector<TrackWithIndex> trtAloneTrkTracks;
116  trtAloneTrkTracks.reserve(8);
117 
118  for (const xAOD::TrackParticle* trackParticle : *selectedTrackParticles) {
119  ATH_CHECK(trackParticle->trackLink().isValid());
120  const Trk::Track* trktrack = trackParticle->track();
121  int nSiliconHits_trk = summaryValueInt(*trackParticle, xAOD::numberOfSCTHits, 0);
122  nSiliconHits_trk += summaryValueInt(*trackParticle, xAOD::numberOfPixelHits, 0);
123  if (nSiliconHits_trk >= m_MinNoSiHits) {
124  siliconTrkTracks.push_back(trackParticle);
125  } else {
126  // copy Trk::Track
127  trtAloneTrkTracks.emplace_back(std::make_unique<Trk::Track>(*trktrack),
128  trackParticle->index());
129  }
130  }
131 
132  // Store the results of the GSF refit
133  std::vector<TrackWithIndex> refitted; // refit success
134  refitted.reserve(siliconTrkTracks.size());
135  std::vector<TrackWithIndex> failedfit; // refit failure
136 
137  // Do the GSF refit. Note that the output is two collections
138  // (for fit success or failure) of TrackWithIndex.
139  // TrackWithIndex means a Trk::::Track
140  // and the index to the original TrackParticle Collection .
141  // Note that altough the input is a xAOD::TrackParticle
142  // what we really refit is the corresponding Trk::Track.
143  ATH_CHECK(refitTracks(ctx, siliconTrkTracks, refitted, failedfit));
144 
145  const size_t refittedCount = refitted.size();
146  const size_t failedCount = failedfit.size();
147  const size_t trtCount = trtAloneTrkTracks.size();
148  const size_t totalCount = refittedCount + failedCount + trtCount;
149 
150  // reserve as we know how many we will create
151  cPtrTracks->reserve(totalCount);
152  cPtrTrkPart->reserve(totalCount);
153  // Fill the final collections
155  refitted,
156  failedfit,
157  trtAloneTrkTracks,
158  cPtrTracks,
159  cPtrTrkPart,
160  trackTES.ptr()));
161 
162  // Update counters
163  m_RefittedTracks.fetch_add(refittedCount, std::memory_order_relaxed);
164  m_FailedFitTracks.fetch_add(failedCount, std::memory_order_relaxed);
165  m_FailedSiliconRequirFit.fetch_add(trtCount, std::memory_order_relaxed);
166  return StatusCode::SUCCESS;
167 }
168 
171  const EventContext& ctx,
172  const std::vector<const xAOD::TrackParticle*>& input,
173  std::vector<TrackWithIndex>& refitted,
174  std::vector<TrackWithIndex>& failedfit) const
175 {
176  for (const xAOD::TrackParticle* in : input) {
177  const Trk::Track* track = in->track();
179  StatusCode status = m_trkRefitTool->refitTrack(ctx, track, cache);
180  if (status == StatusCode::SUCCESS) {
181  // this is new track
182  refitted.emplace_back(std::move(cache.refittedTrack), in->index());
183  } else {
184  // This is copy ctor
185  failedfit.emplace_back(std::make_unique<Trk::Track>(*track), in->index());
186  }
187  }
188  return StatusCode::SUCCESS;
189 }
190 
193  const EventContext& ctx,
194  std::vector<TrackWithIndex>& refitted,
195  std::vector<TrackWithIndex>& failedfit,
196  std::vector<TrackWithIndex>& trtAlone,
197  TrackCollection* finalTracks,
198  xAOD::TrackParticleContainer* finalTrkPartContainer,
199  const xAOD::TrackParticleContainer* inputTrkPartContainer) const
200 {
201  // Now we can create the final ouput
202  // 1. Add the refitted
203  for (auto& trk : refitted) {
204  ATH_CHECK(createNew(ctx,
205  trk,
206  finalTracks,
207  finalTrkPartContainer,
208  inputTrkPartContainer,
209  true));
210  }
211  // 2. Add the failed fit
212  for (auto& trk : failedfit) {
213  ATH_CHECK(createNew(ctx,
214  trk,
215  finalTracks,
216  finalTrkPartContainer,
217  inputTrkPartContainer,
218  false));
219  }
220  // 3. Add the TRT alone
221  for (auto& trk : trtAlone) {
222  ATH_CHECK(createNew(ctx,
223  trk,
224  finalTracks,
225  finalTrkPartContainer,
226  inputTrkPartContainer,
227  false));
228  }
229  return StatusCode::SUCCESS;
230 }
231 
234  const EventContext& ctx,
235  TrackWithIndex& trk_info,
236  TrackCollection* finalTracks,
237  xAOD::TrackParticleContainer* finalTrkPartContainer,
238  const xAOD::TrackParticleContainer* inputTrkPartContainer,
239  bool isRefitted) const
240 {
241 
242  // Create new TrackParticle owned by finalTrkPartContainer
243  xAOD::TrackParticle* aParticle = m_particleCreatorTool->createParticle(
244  ctx, *(trk_info.track), finalTrkPartContainer, nullptr, xAOD::electron);
245 
246  if (!aParticle) {
248  "Could not create TrackParticle!!! for Track: " << *(trk_info.track));
249  return StatusCode::SUCCESS;
250  }
251  size_t origIndex = trk_info.origIndex;
252  const xAOD::TrackParticle* original = inputTrkPartContainer->at(origIndex);
253 
254  // Add an element link back to original Track Particle collection
255  static const SG::AuxElement::Accessor<
257  tP("originalTrackParticle");
259  *inputTrkPartContainer, origIndex, ctx);
260  tP(*aParticle) = linkToOriginal;
261  // Add qoverP from the last measurement
262  float QoverPLast(0);
263  auto rtsos = trk_info.track->trackStateOnSurfaces()->rbegin();
264  for (; rtsos != trk_info.track->trackStateOnSurfaces()->rend(); ++rtsos) {
265  if ((*rtsos)->type(Trk::TrackStateOnSurface::Measurement) &&
266  (*rtsos)->trackParameters() != nullptr &&
267  (*rtsos)->measurementOnTrack() != nullptr &&
268  !(*rtsos)->measurementOnTrack()->type(
270  QoverPLast = (*rtsos)->trackParameters()->parameters()[Trk::qOverP];
271  break;
272  }
273  }
274  static const SG::AuxElement::Accessor<float> QoverPLM("QoverPLM");
275  QoverPLM(*aParticle) = QoverPLast;
276 
277  copyOverInfo(*aParticle, *original, isRefitted);
278  // Slim the Trk::Track, store to the new
279  // Trk::Track collection and make the Track
280  // Particle point to it
281  if (m_doSlimTrkTracks) {
282  m_slimTool->slimTrack(*(trk_info.track));
283  }
284  finalTracks->push_back(std::move(trk_info.track));
286  *finalTracks, finalTracks->size() - 1, ctx);
287  aParticle->setTrackLink(trackLink);
288  return StatusCode::SUCCESS;
289 }
290 
291 void
293  const xAOD::TrackParticle& original,
294  bool isRefitted) const
295 {
296  // Add Truth decorations. Copy from the original.
297  if (m_doTruth) {
298  static const SG::AuxElement::Accessor<
300  tPL("truthParticleLink");
301  if (tPL.isAvailable(original)) {
302  tPL(created) = tPL(original);
303  }
304  static const SG::AuxElement::Accessor<float> tMP("truthMatchProbability");
305  if (tMP.isAvailable(original)) {
306  tMP(created) = tMP(original);
307  }
308  static const SG::AuxElement::Accessor<int> tT("truthType");
309  if (tT.isAvailable(original)) {
310  tT(created) = tT(original);
311  }
312  static const SG::AuxElement::Accessor<int> tO("truthOrigin");
313  if (tO.isAvailable(original)) {
314  tO(created) = tO(original);
315  }
316  }
317 
318  copySummaryValue(original, created, xAOD::numberOfPixelSplitHits);
319  copySummaryValue(original, created, xAOD::numberOfInnermostPixelLayerSplitHits);
320  copySummaryValue(original, created, xAOD::numberOfNextToInnermostPixelLayerSplitHits);
321  copySummaryValue(original, created, xAOD::numberOfPixelSharedHits);
322  copySummaryValue(original, created, xAOD::numberOfInnermostPixelLayerSharedHits);
323  copySummaryValue(original, created, xAOD::numberOfNextToInnermostPixelLayerSharedHits);
324  copySummaryValue(original, created, xAOD::numberOfSCTSharedHits);
325  copySummaryValue(original, created, xAOD::numberOfTRTSharedHits);
326 
327  if (m_doHGTD) {
328  created.setHasValidTime(original.hasValidTime());
329  created.setTime(original.time());
330  }
331 
332  if (isRefitted) {
333  if (m_doPix) {
334  // copy over dead sensors
335  copySummaryValue(original, created, xAOD::numberOfPixelDeadSensors);
336 
337  // Figure the new number of holes
338  uint8_t nPixHolesRefitted =
343  + summaryValueInt(original, xAOD::numberOfPixelHoles, -1);
344 
345  created.setSummaryValue(nPixHolesRefitted, xAOD::numberOfPixelHoles);
346  }
347  if (m_doSCT) {
348  // Copy over dead and double holes
349  copySummaryValue(original, created, xAOD::numberOfSCTDeadSensors);
350  copySummaryValue(original, created, xAOD::numberOfSCTDoubleHoles);
351 
352  uint8_t nSCTHolesRefitted =
353  - summaryValueInt(created, xAOD::numberOfSCTHits, -1)
355  + summaryValueInt(original, xAOD::numberOfSCTHits, -1)
356  + summaryValueInt(original, xAOD::numberOfSCTHoles, -1)
358 
359  created.setSummaryValue(nSCTHolesRefitted, xAOD::numberOfSCTHoles);
360  }
361  if (m_doTRT) {
362  uint8_t nTRTHolesRefitted =
363  - summaryValueInt(created, xAOD::numberOfTRTHits, -1)
365  + summaryValueInt(original, xAOD::numberOfTRTHits, -1)
366  + summaryValueInt(original, xAOD::numberOfTRTHoles, -1)
368 
369  created.setSummaryValue(nTRTHolesRefitted, xAOD::numberOfTRTHoles);
370  }
371  }
372 }
373 
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
EMBremCollectionBuilder::createCollections
StatusCode createCollections(const EventContext &ctx, std::vector< TrackWithIndex > &refitted, std::vector< TrackWithIndex > &failedfit, std::vector< TrackWithIndex > &trtAlone, TrackCollection *finalTracks, xAOD::TrackParticleContainer *finalTrkPartContainer, const xAOD::TrackParticleContainer *inputTrkPartContainer) const
Definition: EMBremCollectionBuilder.cxx:192
LinkToTrack.h
EMBremCollectionBuilder::m_trackParticleContainerKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerKey
Definition: EMBremCollectionBuilder.h:177
xAOD::numberOfPixelHoles
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
Definition: TrackingPrimitives.h:261
EstimatedBremOnTrack.h
xAOD::numberOfInnermostPixelLayerSplitHits
@ numberOfInnermostPixelLayerSplitHits
number of Pixel 0th layer barrel hits split by cluster splitting
Definition: TrackingPrimitives.h:240
EMBremCollectionBuilder::TrackWithIndex::origIndex
size_t origIndex
Definition: EMBremCollectionBuilder.h:99
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:50
EMBremCollectionBuilder::m_doSlimTrkTracks
Gaudi::Property< bool > m_doSlimTrkTracks
Option to slim the Trk::Tracks.
Definition: EMBremCollectionBuilder.h:142
EMBremCollectionBuilder::m_selectedTrackParticleContainerKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_selectedTrackParticleContainerKey
Names of input output collections.
Definition: EMBremCollectionBuilder.h:186
xAOD::numberOfSCTSharedHits
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:272
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
xAOD::electron
@ electron
Definition: TrackingPrimitives.h:194
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:68
WriteCellNoiseToCool.src
src
Definition: WriteCellNoiseToCool.py:513
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
xAOD::numberOfNextToInnermostPixelLayerSplitHits
@ numberOfNextToInnermostPixelLayerSplitHits
number of Pixel 1st layer barrel hits split by cluster splitting
Definition: TrackingPrimitives.h:251
TruthParticleContainer.h
xAOD::TrackParticle_v1::setTrackLink
void setTrackLink(const ElementLink< TrackCollection > &track)
Set the link to the original track.
Definition: TrackParticle_v1.cxx:795
EMBremCollectionBuilder::m_trkRefitTool
ToolHandle< IegammaTrkRefitterTool > m_trkRefitTool
The track refitter.
Definition: EMBremCollectionBuilder.h:158
EMBremCollectionBuilder::m_MinNoSiHits
Gaudi::Property< int > m_MinNoSiHits
@Cut on minimum silicon hits
Definition: EMBremCollectionBuilder.h:151
athena.value
value
Definition: athena.py:124
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
perfmonmt-printer.dest
dest
Definition: perfmonmt-printer.py:189
EMBremCollectionBuilder::EMBremCollectionBuilder
EMBremCollectionBuilder(const std::string &name, ISvcLocator *pSvcLocator)
Definition: EMBremCollectionBuilder.cxx:41
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
IegammaTrkRefitterTool::Cache
Struct Holding the result to return and intermediate objects Things are owned by the EDM or the uniqu...
Definition: IegammaTrkRefitterTool.h:39
EMBremCollectionBuilder::createNew
StatusCode createNew(const EventContext &ctx, TrackWithIndex &Info, TrackCollection *finalTracks, xAOD::TrackParticleContainer *finalTrkPartContainer, const xAOD::TrackParticleContainer *inputTrkPartContainer, bool isRefitted) const
Definition: EMBremCollectionBuilder.cxx:233
Track.h
EMBremCollectionBuilder::m_OutputTrkPartContainerKey
SG::WriteHandleKey< xAOD::TrackParticleContainer > m_OutputTrkPartContainerKey
Definition: EMBremCollectionBuilder.h:191
xAOD::numberOfTRTSharedHits
@ numberOfTRTSharedHits
number of TRT hits used by more than one track
Definition: TrackingPrimitives.h:285
EMBremCollectionBuilder::m_doHGTD
Gaudi::Property< bool > m_doHGTD
Option to copy HGTD time to new gsf tracks.
Definition: EMBremCollectionBuilder.h:148
EMBremCollectionBuilder::m_doSCT
Gaudi::Property< bool > m_doSCT
Option to copy SCT holes estimation.
Definition: EMBremCollectionBuilder.h:133
WriteHandle.h
Handle class for recording to StoreGate.
EMBremCollectionBuilder::initialize
virtual StatusCode initialize() override final
Definition: EMBremCollectionBuilder.cxx:47
xAOD::numberOfPixelSharedHits
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:262
EgammaxAODHelpers.h
xAOD::SummaryType
SummaryType
Enumerates the different types of information stored in Summary.
Definition: TrackingPrimitives.h:228
EMBremCollectionBuilder::m_slimTool
ToolHandle< Trk::ITrackSlimmingTool > m_slimTool
Tool to slim tracks
Definition: EMBremCollectionBuilder.h:172
TrackParticleAuxContainer.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::WriteHandle::ptr
pointer_type ptr()
Dereference the pointer.
EMBremCollectionBuilder::m_FailedSiliconRequirFit
std::atomic_uint m_FailedSiliconRequirFit
Definition: EMBremCollectionBuilder.h:208
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
PseudoMeasurementOnTrack.h
EMBremCollectionBuilder::m_OutputTrackContainerKey
SG::WriteHandleKey< TrackCollection > m_OutputTrackContainerKey
Definition: EMBremCollectionBuilder.h:198
xAOD::numberOfPixelOutliers
@ numberOfPixelOutliers
these are the pixel outliers, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:260
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TrackSummary.h
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
xAOD::numberOfPixelSplitHits
@ numberOfPixelSplitHits
number of Pixel all-layer hits split by cluster splitting [unit8_t].
Definition: TrackingPrimitives.h:263
xAOD::numberOfSCTHoles
@ numberOfSCTHoles
number of SCT holes [unit8_t].
Definition: TrackingPrimitives.h:270
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
EMBremCollectionBuilder::TrackWithIndex
Helper struct to store the Trk::Track corresponding to a TrackParticle and the index of the Track Par...
Definition: EMBremCollectionBuilder.h:85
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
xAOD::EgammaHelpers::summaryValueInt
int summaryValueInt(const xAOD::TrackParticle &tp, const xAOD::SummaryType &info, int deflt=-999)
return the summary value for a TrackParticle or default value (-999) (to be used mostly in python whe...
Definition: EgammaxAODHelpers.cxx:161
EMBremCollectionBuilder::m_doTRT
Gaudi::Property< bool > m_doTRT
Option to copy TRT holes estimation.
Definition: EMBremCollectionBuilder.h:139
EMBremCollectionBuilder::execute
virtual StatusCode execute(const EventContext &ctx) const override final
Definition: EMBremCollectionBuilder.cxx:81
EMBremCollectionBuilder::m_RefittedTracks
std::atomic_uint m_RefittedTracks
Definition: EMBremCollectionBuilder.h:207
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
xAOD::TrackParticle_v1::hasValidTime
uint8_t hasValidTime() const
Returns whether or not the track has a valid time.
errorcheck.h
Helpers for checking error return status codes and reporting errors.
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
EMBremCollectionBuilder::m_doTruth
Gaudi::Property< bool > m_doTruth
Option to do truth.
Definition: EMBremCollectionBuilder.h:130
xAOD::TrackParticle_v1::time
float time() const
Returns the time.
SG::ReadHandle::ptr
const_pointer_type ptr()
Dereference the pointer.
xAOD::numberOfTRTOutliers
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
Definition: TrackingPrimitives.h:276
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
xAOD::TrackParticle_v1::setSummaryValue
void setSummaryValue(uint8_t &value, const SummaryType &information)
Set method for TrackSummary values.
Definition: TrackParticle_v1.cxx:752
xAOD::TrackParticle_v1::setHasValidTime
void setHasValidTime(uint8_t hasValidTime)
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
xAOD::numberOfSCTOutliers
@ numberOfSCTOutliers
number of SCT outliers [unit8_t].
Definition: TrackingPrimitives.h:269
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:273
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:67
EMBremCollectionBuilder::TrackWithIndex::track
std::unique_ptr< Trk::Track > track
Definition: EMBremCollectionBuilder.h:98
xAOD::numberOfInnermostPixelLayerSharedHits
@ numberOfInnermostPixelLayerSharedHits
number of Pixel 0th layer barrel hits shared by several tracks.
Definition: TrackingPrimitives.h:239
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:268
Trk::MeasurementBaseType::PseudoMeasurementOnTrack
@ PseudoMeasurementOnTrack
Definition: MeasurementBase.h:51
SG::ConstAccessor< T, AuxAllocator_t< T > >::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
EMBremCollectionBuilder::m_FailedFitTracks
std::atomic_uint m_FailedFitTracks
Definition: EMBremCollectionBuilder.h:206
xAOD::TrackParticle_v1::setTime
void setTime(float time)
merge.status
status
Definition: merge.py:17
xAOD::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:266
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
DataVector::at
const T * at(size_type n) const
Access an element, as an rvalue.
EMBremCollectionBuilder::refitTracks
StatusCode refitTracks(const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &input, std::vector< TrackWithIndex > &refitted, std::vector< TrackWithIndex > &failedfit) const
Definition: EMBremCollectionBuilder.cxx:170
xAOD::numberOfSCTDoubleHoles
@ numberOfSCTDoubleHoles
number of Holes in both sides of a SCT module [unit8_t].
Definition: TrackingPrimitives.h:271
ReadHandle.h
Handle class for reading from StoreGate.
TruthParticle.h
xAOD::numberOfNextToInnermostPixelLayerSharedHits
@ numberOfNextToInnermostPixelLayerSharedHits
number of Pixel 1st layer barrel hits shared by several tracks.
Definition: TrackingPrimitives.h:250
EMBremCollectionBuilder::copyOverInfo
void copyOverInfo(xAOD::TrackParticle &created, const xAOD::TrackParticle &original, bool isRefitted) const
Definition: EMBremCollectionBuilder.cxx:292
xAOD::numberOfTRTHoles
@ numberOfTRTHoles
number of TRT holes [unit8_t].
Definition: TrackingPrimitives.h:277
EMBremCollectionBuilder::m_particleCreatorTool
ToolHandle< Trk::ITrackParticleCreatorTool > m_particleCreatorTool
Tool to create track particle.
Definition: EMBremCollectionBuilder.h:164
EMBremCollectionBuilder.h
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
TrackParticleContainer.h
Trk::TrackStateOnSurface::Measurement
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Definition: TrackStateOnSurface.h:101
EMBremCollectionBuilder::m_doPix
Gaudi::Property< bool > m_doPix
Option to copy pixel holes estimation.
Definition: EMBremCollectionBuilder.h:136