File indexing completed on 2025-08-06 08:18:07
0001 #include "Calibrator.h"
0002
0003 void Calibrator::calibrate(const Calibrator::MeasurementContainer& measurements,
0004 const Acts::GeometryContext& gctx,
0005 const Acts::CalibrationContext& ,
0006 const Acts::SourceLink& sourceLink,
0007 Acts::VectorMultiTrajectory::TrackStateProxy& trackState) const
0008 {
0009 trackState.setUncalibratedSourceLink(sourceLink);
0010 const ActsSourceLink sl = sourceLink.get<ActsSourceLink>();
0011 const ActsSourceLink::Index index = sl.index();
0012 std::visit(
0013 [&](const auto& uncalibmeas)
0014 {
0015 std::array<Acts::BoundIndices, 2> indices{};
0016 indices[0] = Acts::BoundIndices::eBoundLoc0;
0017 indices[1] = Acts::BoundIndices::eBoundLoc1;
0018
0019 Acts::ActsVector<2> loc;
0020 loc(0) = uncalibmeas.parameters()[Acts::eBoundLoc0];
0021 loc(1) = uncalibmeas.parameters()[Acts::eBoundLoc1];
0022
0023 auto cov = uncalibmeas.covariance();
0024 const TrkrDefs::cluskey cluskey = sl.cluskey();
0025 const uint8_t layer = TrkrDefs::getLayer(cluskey);
0026 const double misalignmentFactor = gctx.get<alignmentTransformationContainer*>()->getMisalignmentFactor(layer);
0027
0028 Acts::ActsSquareMatrix<2> expandedCov = Acts::ActsSquareMatrix<2>::Zero();
0029
0030 for (int i = 0; i < cov.rows(); i++)
0031 {
0032 for (int j = 0; j < cov.cols(); j++)
0033 {
0034 expandedCov(i, j) = cov(i, j) * misalignmentFactor;
0035 }
0036 }
0037
0038 Acts::Measurement<Acts::BoundIndices, 2> meas(sourceLink,
0039 indices,
0040 loc, expandedCov);
0041
0042 trackState.allocateCalibrated(meas.size());
0043 trackState.setCalibrated(meas);
0044 },
0045 (measurements)[index]);
0046 }
0047
0048 void CalibratorAdapter::calibrate(
0049 const Acts::GeometryContext& gctx,
0050 const Acts::CalibrationContext& cctx,
0051 const Acts::SourceLink& sourceLink,
0052 Acts::VectorMultiTrajectory::TrackStateProxy trackState) const
0053 {
0054 return m_calibrator.calibrate(m_measurements,
0055 gctx,
0056 cctx,
0057 sourceLink,
0058 trackState);
0059 }