Back to home page

sPhenix code displayed by LXR

 
 

    


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& /*unused*/,
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 }