Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
MeasurementToTrackParticleDecorationAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
13 #include "Acts/Surfaces/AnnulusBounds.hpp"
14 #include "Acts/Utilities/TrackHelpers.hpp"
15 
16 using namespace Acts::UnitLiterals;
17 
18 
19 namespace ActsTrk {
20 
21  MeasurementToTrackParticleDecorationAlg::MeasurementToTrackParticleDecorationAlg(const std::string &name,
22  ISvcLocator *pSvcLocator) :
23  AthReentrantAlgorithm(name,pSvcLocator)
24  {}
25 
27  {
28  ATH_MSG_DEBUG("Initializing " << name() << " ...");
29 
31 
40 
47 
54 
55  // Decorations
76 
78 
79  return StatusCode::SUCCESS;
80  }
81 
83  {
84  ATH_MSG_DEBUG("Executing " << name() << " ...");
85 
86  auto tgContext = m_trackingGeometryTool->getGeometryContext(ctx).context();
87 
94 
97 
104 
111 
113  ATH_CHECK(trackParticlesHandle.isValid());
114  const xAOD::TrackParticleContainer *track_particles = trackParticlesHandle.cptr();
115 
116  static const SG::AuxElement::ConstAccessor<ElementLink<ActsTrk::TrackContainer> > actsTrackLink("actsTrack");
117 
118  for (const xAOD::TrackParticle *track_particle : *track_particles) {
119  ElementLink<ActsTrk::TrackContainer> link_to_track = actsTrackLink(*track_particle);
120  ATH_CHECK(link_to_track.isValid());
121 
122  // to ensure that the code does not suggest something stupid (i.e. creating an unnecessary copy)
124  std::optional<ActsTrk::TrackContainer::ConstTrackProxy> >::value);
125  std::optional<ActsTrk::TrackContainer::ConstTrackProxy> optional_track = *link_to_track;
126 
127  if ( not optional_track.has_value() ) {
128  ATH_MSG_WARNING("Invalid track link for particle " << track_particle->index() << ". Skipping track..");
129  continue;
130  }
131 
132  ATH_MSG_DEBUG("Track link found for track particle with index " << track_particle->index());
133  ActsTrk::TrackContainer::ConstTrackProxy track = optional_track.value();
134 
135  std::vector<int>& regions{measurementRegionHandle(*track_particle)};
136  regions.reserve(track.nMeasurements());
137  std::vector<int>& detectors{measurementDetectorHandle(*track_particle)};
138  detectors.reserve(track.nMeasurements());
139  std::vector<int>& layers{measurementLayerHandle(*track_particle)};
140  layers.reserve(track.nMeasurements());
141  std::vector<int>& types{measurementTypeHandle(*track_particle)};
142  types.reserve(track.nMeasurements());
143  std::vector<float>& predchi2s{chi2HitPredictedHandle(*track_particle)};
144  predchi2s.reserve(track.nMeasurements());
145  std::vector<float>& filtchi2s{chi2HitFilteredHandle(*track_particle)};
146  filtchi2s.reserve(track.nMeasurements());
147 
148  std::vector<int>& sizesPhi{measurementPhiWidthHandle(*track_particle)};
149  sizesPhi.reserve(track.nMeasurements());
150  std::vector<int>& sizesEta{measurementEtaWidthHandle(*track_particle)};
151  sizesEta.reserve(track.nMeasurements());
152  std::vector<float>& residualsLocX{residualLocXhandle(*track_particle)};
153  residualsLocX.reserve(track.nMeasurements());
154  std::vector<float>& pullsLocX{pullLocXhandle(*track_particle)};
155  pullsLocX.reserve(track.nMeasurements());
156  std::vector<float>& measurementsLocX{measurementLocXhandle(*track_particle)};
157  measurementsLocX.reserve(track.nMeasurements());
158  std::vector<float>& trackParametersLocX{trackParameterLocXhandle(*track_particle)};
159  trackParametersLocX.reserve(track.nMeasurements());
160  std::vector<float>& measurementsLocCovX{measurementLocCovXhandle(*track_particle)};
161  measurementsLocCovX.reserve(track.nMeasurements());
162  std::vector<float>& trackParametersLocCovX{trackParameterLocCovXhandle(*track_particle)};
163  trackParametersLocCovX.reserve(track.nMeasurements());
164  std::vector<float>& residualsLocY{residualLocYhandle(*track_particle)};
165  residualsLocY.reserve(track.nMeasurements());
166  std::vector<float>& pullsLocY{pullLocYhandle(*track_particle)};
167  pullsLocY.reserve(track.nMeasurements());
168  std::vector<float>& measurementsLocY{measurementLocYhandle(*track_particle)};
169  measurementsLocY.reserve(track.nMeasurements());
170  std::vector<float>& trackParametersLocY{trackParameterLocYhandle(*track_particle)};
171  trackParametersLocY.reserve(track.nMeasurements());
172  std::vector<float>& measurementsLocCovY{measurementLocCovYhandle(*track_particle)};
173  measurementsLocCovY.reserve(track.nMeasurements());
174  std::vector<float>& trackParametersLocCovY{trackParameterLocCovYhandle(*track_particle)};
175  trackParametersLocCovY.reserve(track.nMeasurements());
176 
177  for (const auto state : track.trackStatesReversed()) {
178 
179  auto flag = state.typeFlags();
180  // consider holes and measurements (also outliers)
181  bool anyHit = flag.test(Acts::TrackStateFlag::HoleFlag) or flag.test(Acts::TrackStateFlag::MeasurementFlag);
182  if (not anyHit) {
183  ATH_MSG_DEBUG("--- This is not a hit measurement, skipping...");
184  continue;
185  }
186 
187  // starting with invalid values and setting them where needed.
188 
189  int detector = -999;
190  int region = -999;
191  int layer = -999;
192  int type = -999;
193  float chi2_hit_predicted = -999.;
194  float chi2_hit_filtered = -999.;
195  int sizePhi = -999;
196  int sizeEta = -999;
197  float residualLocX = -999.;
198  float pullLocX = -999.;
199  float measurementLocX = -999.;
200  float trackParameterLocX = -999.;
201  float measurementLocCovX = -999.;
202  float trackParameterLocCovX = -999;
203  float residualLocY = -999.;
204  float pullLocY = -999.;
205  float measurementLocY = -999.;
206  float trackParameterLocY = -999.;
207  float measurementLocCovY = -999.;
208  float trackParameterLocCovY = -999.;
209  bool isAnnulusBound = false;
210 
211  // Get the measurement type
212  if (flag.test(Acts::TrackStateFlag::HoleFlag)) {
213  type = MeasurementType::HOLE;
214  ATH_MSG_DEBUG("--- This is a hole");
215  } else if (flag.test(Acts::TrackStateFlag::OutlierFlag)) {
216  type = MeasurementType::OUTLIER;
217  ATH_MSG_DEBUG("--- This is an outlier");
218  } else {
219  type = MeasurementType::HIT;
220  ATH_MSG_DEBUG("--- This is a hit");
221  }
222 
223  // Check the location of the state
224  if (state.hasReferenceSurface() and state.referenceSurface().associatedDetectorElement()) {
225  const ActsDetectorElement * detectorElement = dynamic_cast<const ActsDetectorElement *>(state.referenceSurface().associatedDetectorElement());
226  if (!detectorElement) {
227  ATH_MSG_WARNING("--- TrackState reference surface returned an invalid associated detector element");
228  continue;
229  }
230  const InDetDD::SiDetectorElement * siliconDetectorElement = dynamic_cast<const InDetDD::SiDetectorElement *>(detectorElement->upstreamDetectorElement());
231  if (!siliconDetectorElement) {
232  ATH_MSG_WARNING("--- TrackState associated detector element is not silicon");
233  continue;
234  }
235 
236  const Acts::AnnulusBounds* annulusBounds = dynamic_cast<const Acts::AnnulusBounds*>(&(state.referenceSurface().bounds()));
237  isAnnulusBound = annulusBounds ? true : false;
238 
239  if (siliconDetectorElement) {
240  Identifier detectorIdentifier = siliconDetectorElement->identify();
241  if (siliconDetectorElement->isPixel()) {
242  const PixelID* pixel_id = static_cast<const PixelID *>(siliconDetectorElement->getIdHelper());
243  int layer_disk = pixel_id->layer_disk(detectorIdentifier);
244  layer = layer_disk;
245  if (pixel_id->barrel_ec(detectorIdentifier) == 0) {
246  if (layer_disk == 0) {
247  detector = Subdetector::INNERMOST_PIXEL;
248  } else detector = Subdetector::PIXEL;
249  region = Region::BARREL;
250  } else {
252  region = Region::ENDCAP;
253  }
254  } else if (siliconDetectorElement->isSCT()) {
255  const SCT_ID* sct_id = static_cast<const SCT_ID *>(siliconDetectorElement->getIdHelper());
257  region = sct_id->barrel_ec(detectorIdentifier) == 0 ?
259  layer = sct_id->layer_disk(detectorIdentifier);;
260  } else ATH_MSG_WARNING("--- Unknown detector type - It is not pixel nor strip detecor element!");
261  } else ATH_MSG_WARNING("--- Missing silicon detector element!");
262  } else ATH_MSG_WARNING("--- Missing reference surface or associated detector element!");
263 
264 
265 
266  // If I have a measurement (hit or outlier) then proceed with computing the residuals / pulls
267 
268  if (type == MeasurementType::OUTLIER || type == MeasurementType::HIT) {
269 
270  //Get the Chi2 computation
271 
272  if (type == MeasurementType::HIT) {
273  chi2_hit_filtered = state.chi2();
274  }
275 
276  if (state.hasUncalibratedSourceLink()) {
277  chi2_hit_predicted = getChi2Contribution(state);
278  }
279 
280  // Skip all states without smoothed parameters or without projector
281  if (!state.hasSmoothed() || !state.hasProjector())
282  continue;
283 
284  // Calling effective Calibrated has some runtime overhead
285  const auto &calibratedParameters = state.effectiveCalibrated();
286  const auto &calibratedCovariance = state.effectiveCalibratedCovariance();
287 
288  // We evaluate the unbiased parameters for:
289  // - measurements added to the fit. For outliers, the measurement is not part of the fit, hence track parameters are already unbiased
290  // - if the filtered parameters and the projector exist.
291  bool evaluateUnbiased = (!flag.test(Acts::TrackStateFlag::OutlierFlag));
292 
293  if (evaluateUnbiased) {
294  ATH_MSG_DEBUG("--- Good for unbiased parameters evaluation!");
295  type = MeasurementType::UNBIASED;
296  // if unbiased, access the associated uncalibrated measurement and store the size
297  if (state.hasUncalibratedSourceLink()) {
298  ATLASUncalibSourceLink sourceLink = state.getUncalibratedSourceLink().template get<ATLASUncalibSourceLink>();
299  const xAOD::UncalibratedMeasurement &uncalibratedMeasurement = getUncalibratedMeasurement(sourceLink);
300  const xAOD::UncalibMeasType measurementType = uncalibratedMeasurement.type();
301  if (measurementType == xAOD::UncalibMeasType::PixelClusterType) {
302  auto pixelCluster = static_cast<const xAOD::PixelCluster *>(&uncalibratedMeasurement);
303  sizePhi = pixelCluster->channelsInPhi();
304  sizeEta = pixelCluster->channelsInEta();
305  } else if (measurementType == xAOD::UncalibMeasType::StripClusterType) {
306  auto stripCluster = static_cast<const xAOD::StripCluster *>(&uncalibratedMeasurement);
307  sizePhi = stripCluster->channelsInPhi();
308  } else {
309  ATH_MSG_DEBUG("xAOD::UncalibratedMeasurement is neither xAOD::PixelCluster nor xAOD::StripCluster");
310  }
311  }
312  }
313 
314  const auto& [unbiasedParameters, unbiasedCovariance] =
315  evaluateUnbiased ? Acts::calculateUnbiasedParametersCovariance(state) : std::make_pair(state.parameters(), state.covariance());
316 
317  measurementLocX = calibratedParameters[Acts::eBoundLoc0];
318  measurementLocCovX = calibratedCovariance(Acts::eBoundLoc0, Acts::eBoundLoc0);
319 
320  if (!isAnnulusBound) {
321 
322  trackParameterLocX = unbiasedParameters[Acts::eBoundLoc0];
323  residualLocX = (measurementLocX - trackParameterLocX) / 1_um; //in um
324  trackParameterLocCovX = unbiasedCovariance(Acts::eBoundLoc0, Acts::eBoundLoc0);
325  }
326  else {
327  // TODO:: use directly phi instead of r*phi in the future
328 
329  float locR = unbiasedParameters[Acts::eBoundLoc0];
330  float covR = unbiasedCovariance(Acts::eBoundLoc0,Acts::eBoundLoc0);
331  float locphi = unbiasedParameters[Acts::eBoundLoc1];
332  float covphi = unbiasedCovariance(Acts::eBoundLoc1,Acts::eBoundLoc1);
333  float covRphi = unbiasedCovariance(Acts::eBoundLoc0,Acts::eBoundLoc1);
334 
335  trackParameterLocX = locphi;
336  residualLocX = locR * (measurementLocX - trackParameterLocX) / 1_um;
337  // Compute the error on the local rphi
338  trackParameterLocCovX = locR*locR*covphi + locphi*locphi*covR + 2*locphi*locR*covRphi;
339 
340  // Rescale the error of the measurement to Rphi.
341  measurementLocCovX = locR*locR * measurementLocCovX;
342  }
343 
344  pullLocX = evaluatePull(residualLocX, measurementLocCovX,
345  trackParameterLocCovX, evaluateUnbiased);
346 
347  if (state.calibratedSize() == 2) {
348  measurementLocY = calibratedParameters[Acts::eBoundLoc1];
349  trackParameterLocY = unbiasedParameters[Acts::eBoundLoc1];
350  residualLocY = (measurementLocY - trackParameterLocY) / 1_um;
351  measurementLocCovY = calibratedCovariance(Acts::eBoundLoc1, Acts::eBoundLoc1);
352  trackParameterLocCovY = unbiasedCovariance(Acts::eBoundLoc1, Acts::eBoundLoc1);
353  pullLocY = evaluatePull(residualLocY, measurementLocCovY,
354  trackParameterLocCovY, evaluateUnbiased);
355  }
356 
357  } // hit or outliers
358 
359  else if (type == MeasurementType::HOLE) {
360 
361  // Get the predicted position on sensor
362  auto pred = state.predicted();
363  trackParameterLocX = pred[Acts::eBoundLoc0];
364  trackParameterLocY = pred[Acts::eBoundLoc1];
365  }
366 
367  // Always fill with this information
368 
369  regions.push_back(region);
370  detectors.push_back(detector);
371  layers.push_back(layer);
372  types.push_back(type);
373  predchi2s.push_back(chi2_hit_predicted);
374  filtchi2s.push_back(chi2_hit_filtered);
375  sizesPhi.push_back(sizePhi);
376  sizesEta.push_back(sizeEta);
377  residualsLocX.push_back(residualLocX);
378  pullsLocX.push_back(pullLocX);
379  measurementsLocX.push_back(measurementLocX);
380  trackParametersLocX.push_back(trackParameterLocX);
381  measurementsLocCovX.push_back(measurementLocCovX);
382  trackParametersLocCovX.push_back(trackParameterLocCovX);
383  residualsLocY.push_back(residualLocY);
384  pullsLocY.push_back(pullLocY);
385  measurementsLocY.push_back(measurementLocY);
386  trackParametersLocY.push_back(trackParameterLocY);
387  measurementsLocCovY.push_back(measurementLocCovY);
388  trackParametersLocCovY.push_back(trackParameterLocCovY);
389 
390 
391  } // loop on states
392 
393  } // loop on tracks
394 
395  return StatusCode::SUCCESS;
396  }
397 
398  float MeasurementToTrackParticleDecorationAlg::getChi2Contribution(const typename ActsTrk::TrackStateBackend::ConstTrackStateProxy &state) const {
399 
400  auto pred = state.predicted();
401  auto predC = state.predictedCovariance();
402 
403  return Acts::visit_measurement(
404  state.calibratedSize(),
405  [&]<std::size_t measdim>(std::integral_constant<std::size_t, measdim>) {
406  Acts::FixedBoundSubspaceHelper<measdim> subspaceHelper =
407  state.template projectorSubspaceHelper<measdim>();
408 
409  // TODO use subspace helper for projection instead
410  auto H = subspaceHelper.projector();
411 
412  const auto calibrated = state.template calibrated<measdim>();
413  const auto calibratedCov = state.template calibratedCovariance<measdim>();
414 
415  auto residual = (H * pred - calibrated).eval();
416  auto rescov = (H * predC * H.transpose() + calibratedCov).eval();
417 
418  return ((residual.transpose() * rescov.inverse() * residual).eval())(0,0);
419  });
420 
421 
422 
423  }
424 
425 
427  const float measurementCovariance,
428  const float trackParameterCovariance,
429  const bool evaluateUnbiased) const {
430  float correlation = evaluateUnbiased ? 1. : -1.;
431  float residualCovariance = measurementCovariance + correlation*trackParameterCovariance;
432  if (residualCovariance<=0.) {
433  // If the total covariance is non-positive return 0
434  ATH_MSG_DEBUG("--- Total covariance for pull evaluation is non-positive! Returning pulls = 0!");
435  return 0.;
436  }
437  return 0.001 * residual/std::sqrt(residualCovariance);
438  }
439 
440 } // namespace
441 
MeasurementToTrackParticleDecorationAlg.h
ActsTrk::MeasurementToTrackParticleDecorationAlg::initialize
virtual StatusCode initialize() override
Definition: MeasurementToTrackParticleDecorationAlg.cxx:26
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_residualLocXkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_residualLocXkey
Definition: MeasurementToTrackParticleDecorationAlg.h:94
StripCluster.h
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLayerKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementLayerKey
Definition: MeasurementToTrackParticleDecorationAlg.h:74
ClusterSeg::residual
@ residual
Definition: ClusterNtuple.h:20
PixelID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: PixelID.h:619
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
ActsTrk::MeasurementToTrackParticleDecorationAlg::evaluatePull
float evaluatePull(const float residual, const float measurementCovariance, const float trackParameterCovariance, const bool evaluateUnbiased) const
Definition: MeasurementToTrackParticleDecorationAlg.cxx:426
xAOD::UncalibMeasType::StripClusterType
@ StripClusterType
TRTCalib_cfilter.detector
detector
Definition: TRTCalib_cfilter.py:241
module_driven_slicing.layers
layers
Definition: module_driven_slicing.py:114
ActsDetectorElement::upstreamDetectorElement
const GeoVDetectorElement * upstreamDetectorElement() const
Returns the underllying GeoModel detectorelement that this one is based on.
Definition: ActsDetectorElement.cxx:284
athena.value
value
Definition: athena.py:124
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementDetectorKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementDetectorKey
Definition: MeasurementToTrackParticleDecorationAlg.h:71
RunPrintSiDetElements.detectors
detectors
Definition: RunPrintSiDetElements.py:95
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParameterLocXkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_trackParameterLocXkey
Definition: MeasurementToTrackParticleDecorationAlg.h:103
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
Trk::locR
@ locR
Definition: ParamDefs.h:44
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_chi2HitFilteredKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_chi2HitFilteredKey
Definition: MeasurementToTrackParticleDecorationAlg.h:80
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_residualLocYkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_residualLocYkey
Definition: MeasurementToTrackParticleDecorationAlg.h:113
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
InDetDD::SolidStateDetectorElementBase::getIdHelper
const AtlasDetectorID * getIdHelper() const
Returns the id helper (inline)
Trk::stripCluster
@ stripCluster
Definition: MeasurementType.h:23
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:274
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParameterLocCovYkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_trackParameterLocCovYkey
Definition: MeasurementToTrackParticleDecorationAlg.h:128
ENDCAP
@ ENDCAP
Definition: TRTRadiatorParameters.h:10
xAOD::UncalibratedMeasurement_v1
Definition: UncalibratedMeasurement_v1.h:13
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLocXkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementLocXkey
Definition: MeasurementToTrackParticleDecorationAlg.h:100
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackingGeometryTool
ToolHandle< IActsTrackingGeometryTool > m_trackingGeometryTool
Definition: MeasurementToTrackParticleDecorationAlg.h:63
xAOD::UncalibratedMeasurement_v1::type
virtual xAOD::UncalibMeasType type() const =0
Returns the type of the measurement type as a simple enumeration.
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_pullLocYkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_pullLocYkey
Definition: MeasurementToTrackParticleDecorationAlg.h:116
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
master.flag
bool flag
Definition: master.py:29
UncalibratedMeasurementContainer.h
PixelCluster.h
xAOD::StripCluster_v1
Definition: StripCluster_v1.h:17
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ActsTrk::MeasurementToTrackParticleDecorationAlg::getChi2Contribution
float getChi2Contribution(const typename ActsTrk::TrackStateBackend::ConstTrackStateProxy &state) const
Definition: MeasurementToTrackParticleDecorationAlg.cxx:398
ActsDetectorElement
Definition: ActsDetectorElement.h:42
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
ActsDetectorElement.h
MeasurementDefs.h
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
InDetDD::SiDetectorElement::isPixel
bool isPixel() const
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementEtaWidthKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementEtaWidthKey
Definition: MeasurementToTrackParticleDecorationAlg.h:89
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementRegionKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementRegionKey
Definition: MeasurementToTrackParticleDecorationAlg.h:68
PixelID::layer_disk
int layer_disk(const Identifier &id) const
Definition: PixelID.h:626
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_pullLocXkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_pullLocXkey
Definition: MeasurementToTrackParticleDecorationAlg.h:97
ActsTrk::getUncalibratedMeasurement
const xAOD::UncalibratedMeasurement & getUncalibratedMeasurement(const ATLASUncalibSourceLink &source_link)
Definition: ATLASSourceLink.h:26
SCT_ID::layer_disk
int layer_disk(const Identifier &id) const
Definition: SCT_ID.h:734
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParameterLocCovXkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_trackParameterLocCovXkey
Definition: MeasurementToTrackParticleDecorationAlg.h:109
SiDetectorElementCollection.h
ActsTrk::MeasurementToTrackParticleDecorationAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition: MeasurementToTrackParticleDecorationAlg.cxx:82
Trk::pixelCluster
@ pixelCluster
Definition: MeasurementType.h:22
xAOD::PixelCluster_v1
Definition: PixelCluster_v1.h:17
SG::WriteDecorHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
SCT_ID
Definition: SCT_ID.h:68
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLocCovXkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementLocCovXkey
Definition: MeasurementToTrackParticleDecorationAlg.h:106
LVL1TGCTrigger::STRIP
@ STRIP
Definition: TGCNumbering.h:52
xAOD::UncalibMeasType
UncalibMeasType
Define the type of the uncalibrated measurement.
Definition: MeasurementDefs.h:25
BARREL
@ BARREL
Definition: TRTRadiatorParameters.h:10
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLocYkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementLocYkey
Definition: MeasurementToTrackParticleDecorationAlg.h:119
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementPhiWidthKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementPhiWidthKey
Definition: MeasurementToTrackParticleDecorationAlg.h:86
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParticlesKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticlesKey
Definition: MeasurementToTrackParticleDecorationAlg.h:65
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MuonDetectorBuilderTool.cxx:55
InDetDD::SiDetectorElement::isSCT
bool isSCT() const
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParameterLocYkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_trackParameterLocYkey
Definition: MeasurementToTrackParticleDecorationAlg.h:122
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_chi2HitPredictedKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_chi2HitPredictedKey
Definition: MeasurementToTrackParticleDecorationAlg.h:77
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementTypeKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementTypeKey
Definition: MeasurementToTrackParticleDecorationAlg.h:83
PixelID
Definition: PixelID.h:67
InDetDD::SolidStateDetectorElementBase::identify
virtual Identifier identify() const override final
identifier of this detector element (inline)
xAOD::UncalibMeasType::PixelClusterType
@ PixelClusterType
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLocCovYkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementLocCovYkey
Definition: MeasurementToTrackParticleDecorationAlg.h:125
PIXEL
@ PIXEL
Definition: RegSelEnums.h:24
Identifier
Definition: IdentifierFieldParser.cxx:14