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