27#include "Acts/Utilities/MathHelpers.hpp"
28#include "Acts/Utilities/Enumerate.hpp"
32 constexpr double c_inv = 1./ Gaudi::Units::c_light;
36 inline Acts::BoundTrackParameters makeBoundPars(
const ActsTrk::MutableTrackContainer::TrackStateProxy& state) {
37 return Acts::BoundTrackParameters{state.referenceSurface().getSharedPtr(),
38 state.parameters(), state.covariance(),
39 Acts::ParticleHypothesis::muon()};
45 using namespace Acts::UnitLiterals;
57 return StatusCode::SUCCESS;
63 std::vector<int> signs = SeedingAux::strawSigns(trackPos, trackDir,
65 for (
const auto [spIdx,
sp]: Acts::enumerate(hitsToCalib)) {
66 sp->setDriftRadius(
sp->driftRadius() * signs[spIdx]);
73 const double timeDelay)
const {
78 calibSP = std::make_unique<CalibratedSpacePoint>(spacePoint);
80 if (spacePoint.
fitState() == State::Outlier) {
81 calibSP->setFitState(State::Outlier);
82 }
else if (spacePoint.
fitState() == State::Duplicate) {
83 calibSP->setFitState(State::Duplicate);
91 const double timeDelay,
94 const EventContext* ctx = cctx.get<
const EventContext*>();
95 newCalib.reserve(spacePoints.size());
97 newCalib.emplace_back(
calibrate(*ctx, *
sp, segPos, segDir, timeDelay));
106 const double timeDelay)
const {
118 : spPos +
Amg::intersect<3>(posInChamb, dirInChamb, spPos, chDir).value_or(0) * chDir;
123 switch (spacePoint->
type()) {
125 case MdtDriftCircleType: {
128 posInChamb, dirInChamb).value_or(0) * dirInChamb;
130 Amg::Vector3D closestApproach{locToGlob* locClosestApproach};
137 std::abs(dirInChamb.phi() - 90._degree) > 1.e-7 );
143 State fitState{State::Valid};
145 if (calibOutput.
status() != Muon::MdtDriftCircleStatus::MdtStatusDriftTime) {
147 <<std::endl<<calibInput<<std::endl<<calibOutput);
148 fitState = State::FailedCalib;
149 cov[Acts::toUnderlying(AxisDefs::etaCov)] = dc->readoutElement()->innerTubeRadius();
151 cov[Acts::toUnderlying(AxisDefs::etaCov)] = Acts::square(calibOutput.
driftRadiusUncert());
153 calibSP = std::make_unique<CalibratedSpacePoint>(spacePoint, std::move(calibSpPos), fitState);
154 calibSP->setCovariance(cov);
155 calibSP->setDriftRadius(calibOutput.
driftRadius());
157 double fastToF {(locToGlob * calibSP->localPosition()).norm() * c_inv};
161 <<
", ToF / fastToF: " << fastToF <<
" / " << closestApproach.mag() * c_inv
169 MdtCalibInput twinInput{dc->twinIdentify(), dc->twinAdc(), dc->twinTdc(), dc->readoutElement(), *gctx};
174 std::move(calibInput),
175 std::move(twinInput));
177 State fitState{State::Valid};
178 if (calibOutput.
primaryStatus() != Muon::MdtDriftCircleStatus::MdtStatusDriftTime) {
180 <<std::endl<<calibOutput);
181 cov[Acts::toUnderlying(AxisDefs::etaCov)] = Acts::square(dc->readoutElement()->innerTubeRadius());
182 cov[Acts::toUnderlying(AxisDefs::phiCov)] = Acts::square(0.5* dc->readoutElement()->activeTubeLength(dc->measurementHash()));
183 fitState = State::FailedCalib;
185 cov[Acts::toUnderlying(AxisDefs::etaCov)] = Acts::square(calibOutput.
uncertPrimaryR());
186 cov[Acts::toUnderlying(AxisDefs::phiCov)] = Acts::square(calibOutput.
sigmaZ());
188 calibSP = std::make_unique<CalibratedSpacePoint>(spacePoint, std::move(calibSpPos), fitState);
189 calibSP->setCovariance(cov);
192 double fastToF {(locToGlob * calibSP->localPosition()).norm() * c_inv};
193 double tubeT0 {
m_mdtCalibrationTool->getCalibConstants(ctx, dc->identify())->tubeCalib->getCalib(dc->identify())->t0};
206 calibSP = std::make_unique<CalibratedSpacePoint>(spacePoint, std::move(calibSpPos));
212 const double time1 =
strip->time()
213 -
strip->readoutElement()->distanceToEdge(
strip->layerHash(), lPos,
219 const double time2 = strip2->time() -
220 strip2->readoutElement()->distanceToEdge(strip2->layerHash(),lPos, EdgeSide::readOut)/
m_rpcSignalVelocity;
224 cov[Acts::toUnderlying(AxisDefs::timeCov)] += Acts::square(
ActsTrk::timeToActs(0.5*(time1 - time2)));
228 calibSP->setCovariance(cov);
230 <<
", at "<<
Amg::toString(calibSP->localPosition())<<
", uncalib time: "
232 <<
", time Uncert: "<<
ActsTrk::timeToAthena(std::sqrt(calibSP->covariance()[Acts::toUnderlying(AxisDefs::timeCov)])));
236 calibSP = std::make_unique<CalibratedSpacePoint>(spacePoint, std::move(calibSpPos));
241 const Amg::Vector3D lPos = toGasGap * calibSP->localPosition();
242 const auto& sensorPlane =
strip->readoutElement()->sensorLayout(
strip->layerHash());
243 const auto& radialDesign =
strip->readoutElement()->stripLayout(
strip->layerHash());
244 cov[Acts::toUnderlying(AxisDefs::phiCov)] = Acts::square(
245 radialDesign.stripPitch(
strip->channelNumber(), sensorPlane->to2D(lPos,
true))) / 12.;
247 calibSP->setCovariance(cov);
250 case MMClusterType: {
255 std::pair<double, double> calibPosCov {
calibrateMM(ctx, *gctx, *cluster, globalPos, globalDir)};
257 ATH_MSG_DEBUG(
"Calibrated pos and cov" << calibPosCov.first <<
" " << calibPosCov.second);
258 cov[Acts::toUnderlying(AxisDefs::etaCov)] = calibPosCov.second;
262 Amg::Vector3D calibSpPosInLayer = toChamberTrans.inverse() * calibSpPos;
264 calibSpPosInLayer.x() = calibPosCov.first;
266 calibSpPos = toChamberTrans * calibSpPosInLayer;
268 calibSP = std::make_unique<CalibratedSpacePoint>(spacePoint, std::move(calibSpPos));
269 calibSP->setCovariance(cov);
274 case sTgcStripType: {
280 calibSP = std::make_unique<CalibratedSpacePoint>(spacePoint, std::move(calibSpPos));
281 calibSP->setCovariance(cov);
285 std::optional<double> posAlongTheStrip{std::nullopt};
292 if (secMeas->numDimensions() == 2) {
293 posAlongTheStrip =
static_cast<double>(secMeas->localPosition<2>()[0]);
295 posAlongTheStrip =
static_cast<double>(secMeas->localPosition<1>()[0]);
305 const auto [calibPos, calibCov] =
calibratesTGC(ctx, *gctx, *stripClus, posAlongTheStrip, globalPos, globalDir);
307 ATH_MSG_DEBUG(
"Calibrated pos and cov" << calibPos <<
" " << calibCov);
308 cov[Acts::toUnderlying(AxisDefs::etaCov)] = calibCov;
309 Amg::Transform3D toChamberTrans{ locToGlob.inverse() * cluster->readoutElement()->localToGlobalTransform(*gctx, cluster->layerHash())};
312 cov[Acts::toUnderlying(AxisDefs::phiCov)] *=
317 Amg::Vector3D calibSpPosInLayer = toChamberTrans.inverse() * calibSpPos;
319 calibSpPosInLayer.x() = calibPos;
321 calibSpPos = toChamberTrans * calibSpPosInLayer;
323 calibSP = std::make_unique<CalibratedSpacePoint>(spacePoint, std::move(calibSpPos));
324 calibSP->setCovariance(cov);
325 ATH_MSG_DEBUG(
"calibrated sTGC cluster "<<
m_idHelperSvc->toString(cluster->identify()) <<
" loc x old " << cluster->localPosition<1>()[0] <<
" new loc x " << calibSP->localPosition()[1] <<
"cov " << calibSP->covariance());
336 const std::vector<const SpacePoint*>& spacePoints,
339 const double timeDelay)
const {
341 calibSpacePoints.reserve(spacePoints.size());
342 for(
const SpacePoint* spacePoint : spacePoints) {
345 calibSpacePoints.push_back(std::move(
hit));
348 return calibSpacePoints;
355 const std::optional<double> driftTime = calibConsts->
rtRelation->tr()->driftTime(spacePoint.
driftRadius());
364 const std::optional<double> driftTime = calibConsts->
rtRelation->tr()->driftTime(spacePoint.
driftRadius());
375 std::vector<NSWCalib::CalibratedStrip> calibClus;
376 StatusCode
sc =
m_nswCalibTool->calibrateClus(ctx, gctx, cluster, globalPos, calibClus);
379 return std::make_pair(0., 0.);
386 calibCov.resize(1,1);
388 ATH_MSG_DEBUG(
"old loc pos " << locPos[0] <<
" old cov" << calibCov(0,0) );
391 if(rotAuthor == Muon::IMMClusterBuilderTool::RIO_Author::unKnownAuthor){
394 ATH_MSG_DEBUG(
"new loc pos " << locPos[0] <<
" new cov" << calibCov(0,0) );
395 return std::make_pair(locPos[0], Acts::square(
m_mmStripErrorScale.value()) * calibCov(0,0));
401 std::optional<double> posAlongTheStrip,
406 if(!posAlongTheStrip) {
408 posAlongTheStrip = extPosLocal[1];
417 ActsTrk::MutableTrackContainer::TrackStateProxy state)
const {
445 const Acts::BoundTrackParameters trackPars{makeBoundPars(state)};
446 std::pair<double, double> calibPosCov{
calibratesTGC(ctx, gctx, *primStripMeas, cmbPos[1] ,
447 trackPars.position(gctx.
context()),
448 trackPars.direction())};
449 cmbPos[0] = calibPosCov.first;
450 cmbCov(0,0) = calibPosCov.second;
463 const Acts::CalibrationContext& cctx,
464 const Acts::SourceLink& link,
465 ActsTrk::MutableTrackContainer::TrackStateProxy trackState)
const {
468 const Acts::BoundTrackParameters trackPars{makeBoundPars(trackState)};
473 const EventContext* ctx = cctx.get<
const EventContext*>();
475 <<
", smoothened: "<<trackState.hasSmoothed()<<
", filtered: "<<trackState.hasFiltered()
476 <<
", predicted: "<<trackState.hasPredicted()
477 <<
" @\n"<<trackPars);
479 if (muonMeas->numDimensions() == 0u) {
488 switch (muonMeas->type()){
490 case MdtDriftCircleType: {
497 static_cast<double>(dec_trackSign(*dc)) :
498 Acts::copySign(1.,trackPars.parameters()[Acts::eBoundLoc0]);
501 if (muonMeas->numDimensions() == 1) [[
likely]] {
507 if (calibOutput.
status() != Muon::MdtDriftCircleStatus::MdtStatusDriftTime) {
509 <<std::endl<<calibInput<<std::endl<<calibOutput);
510 cov(Acts::eBoundLoc0,Acts::eBoundLoc0) = std::pow(dc->readoutElement()->innerTubeRadius(), 2);
512 pos[Acts::eBoundLoc0] = driftSign*calibOutput.
driftRadius();
513 cov(Acts::eBoundLoc0, Acts::eBoundLoc0) = std::pow(calibOutput.
driftRadiusUncert(), 2);
520 MdtCalibInput twinInput{twinDC->twinIdentify(), twinDC->twinAdc(), twinDC->twinTdc(), twinDC->readoutElement(), *gctx};
525 std::move(calibInput),
526 std::move(twinInput));
529 if (calibOutput.
primaryStatus() != Muon::MdtDriftCircleStatus::MdtStatusDriftTime) {
531 <<std::endl<<calibOutput);
532 locCov(Acts::eBoundLoc0, Acts::eBoundLoc0) = std::pow(dc->readoutElement()->innerTubeRadius(), 2);
533 locCov(Acts::eBoundLoc1, Acts::eBoundLoc1) = std::pow(0.5* dc->readoutElement()->activeTubeLength(dc->measurementHash()), 2);
535 locCov(Acts::eBoundLoc0, Acts::eBoundLoc0) = std::pow(calibOutput.
uncertPrimaryR(), 2);
536 locCov(Acts::eBoundLoc1, Acts::eBoundLoc1) = std::pow(calibOutput.
sigmaZ(), 2);
537 locPos[Acts::eBoundLoc0] = driftSign*calibOutput.
primaryDriftR();
538 locPos[Acts::eBoundLoc1] = calibOutput.
locZ();
543 }
case RpcStripType: {
546 if (rpcClust->numDimensions() == 1) [[
likely]] {
552 rpcClust->localCovariance<1>(), link, trackState);
556 measPars[0] = rpcClust->localPosition<1>()[0];
557 measCov(0,0) = rpcClust->localCovariance<1>()(0, 0);
558 ATH_MSG_WARNING(__FILE__<<
":"<<__LINE__<<
"Please fix me using the ActsInterops package");
562 setState<2>(proj, measPars, measCov, link, trackState);
569 rpcClust->localPosition<2>(),
570 rpcClust->localCovariance<2>(), link, trackState);
574 measPars.block<2,1>(0,0) = xAOD::toEigen(rpcClust->localPosition<2>());
575 measCov.block<2,2>(0,0) = xAOD::toEigen(rpcClust->localCovariance<2>());
576 ATH_MSG_WARNING(__FILE__<<
":"<<__LINE__<<
"Please fix me using the ActsInterops package");
582 }
case TgcStripType: {
583 const auto* tgcClust =
static_cast<const xAOD::TgcStrip*
>(muonMeas);
585 if (!tgcClust->measuresPhi()) {
587 tgcClust->localPosition<1>(),
588 tgcClust->localCovariance<1>(),
601 case MMClusterType: {
603 std::pair<double, double> calibPosCov{
calibrateMM(*ctx,* gctx, *mmClust, trackPos, trackDir)};
609 }
case sTgcStripType: {
614 muonMeas->localPosition<1>(),
615 muonMeas->localCovariance<1>(), link, trackState);
618 stgcClust->localPosition<2>(),
619 stgcClust->localCovariance<2>(), link, trackState);
622 std::pair<double, double> calibPosCov{
calibratesTGC(*ctx, *gctx, *stgCluster, std::nullopt, trackPos, trackDir)};
631 pos[0] = calibPosCov.first;
632 pos[1] = stgCluster->time();
633 cov(0,0) = calibPosCov.second;
634 ATH_MSG_WARNING(__FILE__<<
":"<<__LINE__<<
"Please fix me using the ActsInterops package");
635 cov(1,1) = std::pow(25 , 2);
643 auxCalibrator.
calibrate(geoctx, cctx, link, trackState);
646 THROW_EXCEPTION(
"The parsed measurement is not a muon measurement. Please check.");
655 dec_trackSign(*meas->spacePoint()->primaryMeasurement()) =
656 SeedingAux::strawSign(segPos, segLine, *meas);
663 const double timeDelay)
const {
674 const double timeDelay)
const {
684 const double timeDelay)
const {
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_WARNING(x,...)
#define ATH_MSG_VERBOSE(x,...)
#define AmgSymMatrix(dim)
Acts::GeometryContext context() const
static Acts::SourceLink pack(const Ptr_t &measurement)
Pack the measurement type pointer to an Acts::SourceLink including the intermediate conversion into a...
@ e2DimWithTime
Project out the locY & time coordinate - (Applies to Rpc, Tgc, sTgc).
@ e2DimNoTime
Project out solely the locY - Complementary projector if the strip plane is rotated (Applies to Itk e...
@ e1DimWithTime
Project out the two spatial coordinates - (Applies to ITk pixel, BI-Rpc, sTgc pad).
@ e1DimRotNoTime
Project out solely the locX (Applies to Itk strips, Rpc, Tgc, sTgc, Mm).
@ e1DimRotWithTime
Project out the locX & time coordinate - (Applies to Rpc, Tgc, Mm, sTgc).
void setState(const ProjectorType projector, const pos_t &locpos, const cov_t &cov, Acts::SourceLink link, proxy_t &trackState) const
Copy the local position & covariance into the Acts track state proxy.
Source link calibrator implementation for xAOD::Uncalibrated measurements.
void calibrate(const Acts::GeometryContext &gctx, const Acts::CalibrationContext &cctx, const Acts::SourceLink &sl, const MutableTrackStateBackend::TrackStateProxy trackState) const
: Interface method for the Acts fitter to calibrate the trajectory track states from the source link ...
static const xAOD::UncalibratedMeasurement * unpack(const Acts::SourceLink &sl)
Helper method to unpack an Acts source link to an uncalibrated measurement.
double driftRadiusUncert() const
Returns the uncertainty on the drift radius.
double driftRadius() const
Returns the drift radius of the calibrated object.
MdtDriftCircleStatus status() const
Status of the calibration.
double signalPropagationTime() const
Returns the signal propagation time.
double tubeT0() const
Returns the point in time where the muon typically enters the chamber.
MdtDriftCircleStatus primaryStatus() const
double primaryDriftR() const
double uncertPrimaryR() const
Amg::Transform3D globalToLocalTransform(const ActsTrk::GeometryContext &ctx) const
Returns the transformation from the global ATLAS coordinate system into the local coordinate system o...
const Amg::Transform3D & localToGlobalTransform(const ActsTrk::GeometryContext &ctx) const override final
Returns the transformation from the local coordinate system of the readout element into the global AT...
const Amg::Transform3D & localToGlobalTransform(const ActsTrk::GeometryContext &gctx) const
Returns the local -> global tarnsformation from the sector.
The calibrated Space point is created during the calibration process.
double driftRadius() const
: Returns the size of the drift radius
double time() const
Returns the measurement's recorded time.
const SpacePoint * spacePoint() const
The pointer to the space point out of which this space point has been built.
xAOD::UncalibMeasType type() const
Returns the space point type.
State
State flag to distinguish different space point states.
State fitState() const
Returns the state of the calibrated space point.
Acts::CloneablePtr< CalibratedSpacePoint > CalibSpacePointPtr
std::vector< CalibSpacePointPtr > CalibSpacePointVec
Placeholder for what will later be the muon segment EDM representation.
const MeasVec & measurements() const
Returns the associated measurements.
Gaudi::Property< bool > m_useRpcTime
Load the Rpc time on the track states for the track fit.
void calibrateCombinedPrd(const EventContext &ctx, const ActsTrk::GeometryContext &gctx, const xAOD::CombinedMuonStrip *combinedPrd, ActsTrk::MutableTrackContainer::TrackStateProxy state) const
Calibrates the track states from a combined muon strip.
ToolHandle< Muon::IMMClusterBuilderTool > m_clusterBuilderToolMM
void calibrateSourceLink(const Acts::GeometryContext &geoctx, const Acts::CalibrationContext &cctx, const Acts::SourceLink &link, ActsTrk::MutableTrackContainer::TrackStateProxy state) const override final
double driftRadius(const Acts::CalibrationContext &cctx, const CalibratedSpacePoint &spacePoint, const double timeDelay) const override final
ToolHandle< Muon::INSWCalibTool > m_nswCalibTool
std::pair< double, double > calibratesTGC(const EventContext &ctx, const ActsTrk::GeometryContext &gctx, const xAOD::sTgcStripCluster &cluster, std::optional< double > posAlongTheStrip, const Amg::Vector3D &globalPos, const Amg::Vector3D &globalDir) const
Calibrates the position and covariance of an sTGC (small-strip Thin Gap Chamber) cluster.
double driftVelocity(const Acts::CalibrationContext &ctx, const CalibratedSpacePoint &spacePoint) const override final
ToolHandle< IMdtCalibrationTool > m_mdtCalibrationTool
CalibSpacePointPtr calibrate(const EventContext &ctx, const SpacePoint *spacePoint, const Amg::Vector3D &seedPosInChamb, const Amg::Vector3D &seedDirInChamb, const double timeDelay) const override final
Gaudi::Property< double > m_rpcSignalVelocity
How fast does an electron signal travel along an rpc strip.
void updateSigns(const Amg::Vector3D &trackPos, const Amg::Vector3D &trackDir, CalibSpacePointVec &hitsToCalib) const override final
StatusCode initialize() override final
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
const MuonGMR4::MuonDetectorManager * m_detMgr
Gaudi::Property< bool > m_MdtSignFromSegment
Gaudi::Property< bool > m_useTgcTime
Load the Tgc bunch crossing ID on the track states.
Gaudi::Property< bool > m_usesTgcTime
double driftAcceleration(const Acts::CalibrationContext &ctx, const CalibratedSpacePoint &spacePoint) const override final
ActsTrk::GeoContextReadKey_t m_geoCtxKey
access to the ACTS geometry context
Gaudi::Property< double > m_rpcTimeResolution
std::pair< double, double > calibrateMM(const EventContext &ctx, const ActsTrk::GeometryContext &gctx, const xAOD::MMCluster &cluster, const Amg::Vector3D &globalPos, const Amg::Vector3D &globalDir) const
Calibrates the position and covariance of a MicroMegas (MM) cluster.
void stampSignsOnMeasurements(const xAOD::MuonSegment &segment) const override final
Gaudi::Property< double > m_sTgcPrecCoordErrorScale
Scale factor applied to the sTGC strip measurement uncertainty.
Gaudi::Property< double > m_sTgcNonPrecCoordErrorScale
Scale factor applied to the sTGC non-precise coordinate measurement uncertainty.
Gaudi::Property< double > m_mmStripErrorScale
Scale factor applied to the MM strip measurement uncertainty.
The muon space point is the combination of two uncalibrated measurements one of them measures the eta...
const Amg::Vector3D & sensorDirection() const
const Cov_t & covariance() const
Returns the covariance array.
const Identifier & identify() const
: Identifier of the primary measurement
unsigned dimension() const
Is the space point a 1D or combined 2D measurement.
xAOD::UncalibMeasType type() const
const MuonGMR4::SpectrometerSector * msSector() const
const xAOD::MuonMeasurement * secondaryMeasurement() const
const xAOD::MuonMeasurement * primaryMeasurement() const
std::array< double, 3 > Cov_t
Abrivation of the covariance type.
const Amg::Vector3D & localPosition() const
const xAOD::MuonMeasurement * primaryStrip() const
Returns the primary associated measurement.
virtual xAOD::UncalibMeasType type() const override final
Returns the type of the measurement type as a simple enumeration.
const MuonGMR4::MmReadoutElement * readoutElement() const override final
Retrieve the associated MmReadoutElement.
IdentifierHash layerHash() const override final
Returns the hash of the associated layer (Needed for surface retrieval).
virtual std::uint8_t measuresPhi() const =0
Returns whether the phi coordinate is measured.
const Identifier & identify() const
Returns the Athena identifier of the measurement.
ConstMatrixMap< N > localCovariance() const
Returns the local covariance of the measurement.
ConstVectorMap< N > localPosition() const
Returns the local position of the measurement.
IdentifierHash layerHash() const override final
Returns the hash of the associated gasGap layer.
const MuonGMR4::sTgcReadoutElement * readoutElement() const override final
Retrieve the associated sTgcReadoutElement.
constexpr double velocityToActs(const double athenaV)
Converts a velocity from Athena to Acts units.
constexpr double accelerationToActs(const double athenaA)
Converts an acceleration from Athena to Acts units.
constexpr double timeToAthena(T actsT)
Converts a time unit from Acts to Athena units.
constexpr auto timeToActs(T athenaT)
Converts a time unit from Athena to Acts units.
std::optional< double > intersect(const AmgVector(N)&posA, const AmgVector(N)&dirA, const AmgVector(N)&posB, const AmgVector(N)&dirB)
Calculates the point B' along the line B that's closest to a second line A.
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
Parameters localSegmentPars(const xAOD::MuonSegment &seg)
Returns the localSegPars decoration from a xAODMuon::Segment.
std::pair< Amg::Vector3D, Amg::Vector3D > makeLine(const Parameters &pars)
Returns the parsed parameters into an Eigen line parametrization.
This header ties the generic definitions in this package.
ISpacePointCalibrator::CalibSpacePointVec CalibSpacePointVec
CalibratedSpacePoint::State State
ISpacePointCalibrator::CalibSpacePointPtr CalibSpacePointPtr
const Segment * detailedSegment(const xAOD::MuonSegment &seg)
Helper function to navigate from the xAOD::MuonSegment to the MuonR4::Segment.
Amg::Vector3D toLocal(const Amg::Transform3D &toLocalTrans, const Amg::Vector3D &dir)
Rotates a direction vector into a local frame: x-axis : Parallell to the radial direction of the dete...
SG::Decorator< T, ALLOC > Decorator
Helper class to provide type-safe access to aux data, specialized for JaggedVecElt.
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
MdtDriftCircle_v1 MdtDriftCircle
MdtTwinDriftCircle_v1 MdtTwinDriftCircle
sTgcStripCluster_v1 sTgcStripCluster
UncalibMeasType
Define the type of the uncalibrated measurement.
const Identifier & identify(const UncalibratedMeasurement *meas)
Returns the associated identifier from the muon measurement.
RpcMeasurement_v1 RpcMeasurement
std::pair< Amg::Vector2D, AmgSymMatrix(2)> positionAndCovariance(const MuonMeasurement *oneDimMeas)
Returns the 1D position of the uncalibrated measurement expressed in the coordinate system of the mea...
sTgcMeasurement_v1 sTgcMeasurement
MuonSegment_v1 MuonSegment
Reference the current persistent version:
CombinedMuonStrip_v1 CombinedMuonStrip
class which holds the full set of calibration constants for a given tube
#define THROW_EXCEPTION(MESSAGE)