ATLAS Offline Software
SegmentActsRefitAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "SegmentActsRefitAlg.h"
6 
12 
17 #include "GaudiKernel/PhysicalConstants.h"
19 #include "CLHEP/Random/RandGaussZiggurat.h"
23 
24 #include "Acts/Surfaces/PlaneSurface.hpp"
26 
27 using namespace Acts::UnitLiterals;
28 namespace{
29  constexpr double straightQoverP = 1. / (100._TeV);
30  constexpr double pseudoSurfDist = 5.*Gaudi::Units::cm;
32 }
33 
34 
35 namespace MuonR4{
36  using namespace SegmentFit;
37 
39  ATH_CHECK(m_readKey.initialize());
40  ATH_CHECK(m_writeKey.initialize());
41  ATH_CHECK(m_linkKey.initialize());
42  ATH_CHECK(m_localParsKey.initialize());
43  ATH_CHECK(m_seedParsKey.initialize());
44  ATH_CHECK(m_surfKey.initialize());
45  ATH_CHECK(m_auxMeasProv.initialize(m_writeKey.key()));
46 
47  ATH_CHECK(m_idHelperSvc.retrieve());
48  ATH_CHECK(m_trackFitTool.retrieve());
49  ATH_CHECK(m_trackingGeometryTool.retrieve());
50  ATH_CHECK(m_extrapolationTool.retrieve());
51  ATH_CHECK(m_segSelector.retrieve());
52  ATH_CHECK(detStore()->retrieve(m_detMgr));
53 
54  auto trkGeo = m_trackingGeometryTool->trackingGeometry();
55  trkGeo->visitSurfaces([this](const Acts::Surface* surf){
56  const auto detEl = surf->associatedDetectorElement();
57  if (!detEl) {
58  ATH_MSG_ALWAYS("Insensitive surface "<<surf->geometryId());
59  return;
60  }
61  const auto* det = static_cast<const ActsTrk::IDetectorElementBase*>(detEl);
62  if (!m_idHelperSvc->isMuon(det->identify())){
63  return;
64  }
65  ATH_MSG_ALWAYS("Sensitive muon surface "<<m_idHelperSvc->toString(det->identify())<<" -> geoId: "
66  <<surf->geometryId());
67 
68  });
69  return StatusCode::SUCCESS;
70  }
71  std::tuple<Amg::Vector3D, Amg::Vector3D>
72  SegmentActsRefitAlg::smearSegment(const ActsTrk::GeometryContext& gctx,
73  const MuonR4::Segment& segment,
74  CLHEP::HepRandomEngine* engine) const{
75  // return std::make_pair(segment.position(), segment.direction()* (segment.direction().z() < 0 ? -1. : 1.));
76  const auto segPars = localSegmentPars(gctx, segment);
77  auto smearedPars = segPars;
79  for (ParamDefs precPar : {ParamDefs::y0, ParamDefs::theta,
80  ParamDefs::x0, ParamDefs::phi}) {
81  if (precPar == ParamDefs::phi && !segment.summary().nPhiHits) {
82  break;
83  }
84  const unsigned idx = Acts::toUnderlying(precPar);
85  const double uncert = Amg::error(segment.covariance(), idx) * m_smearRange;
86  smearedPars[idx] = CLHEP::RandGaussZiggurat::shoot(engine, segPars[idx], uncert);
87  ATH_MSG_VERBOSE("Apply smearing to "<<SeedingAux::parName(precPar)
88  <<" parameter -- cov: "<<uncert
89  <<", original: "<<segPars[idx]<<", smeared: "<<smearedPars[idx]<<", deviation: "
90  <<(smearedPars[idx] - segPars[idx]) / uncert );
91 
92  }
93  auto [smearLocPos, smearLocDir] = makeLine(smearedPars);
94  const auto [locPos, locDir] = makeLine(segPars);
96  if (SeedingAux::strawSigns(locPos,locDir, segment.measurements()) !=
97  SeedingAux::strawSigns(smearLocPos, smearLocDir, segment.measurements())) {
98  ATH_MSG_ALWAYS("Parameter smearng from "<<toString(segPars)<<" -> "<<toString(smearedPars)
99  <<" changes the L/R ambiguity -> avoid for this test");
100  return smearSegment(gctx, segment, engine);
101  }
102 
103  const Amg::Transform3D& locToGlob{segment.msSector()->localToGlobalTrans(gctx)};
104  if (smearLocDir.z() < 0) {
105  smearLocDir = -smearLocDir;
106  }
107  return std::make_tuple(locToGlob * smearLocPos, locToGlob.linear() * smearLocDir);
108  }
109  StatusCode SegmentActsRefitAlg::execute(const EventContext& ctx) const {
110 
111  const xAOD::MuonSegmentContainer* segments{nullptr};
112  ATH_CHECK(SG::get(segments, m_readKey, ctx));
114  const ActsTrk::GeometryContext& gctx{m_trackingGeometryTool->getGeometryContext(ctx)};
115  const Acts::GeometryContext tgContext = gctx.context();
116  const Acts::MagneticFieldContext mfContext = m_extrapolationTool->getMagneticFieldContext(ctx);
117  const Acts::CalibrationContext calContext = ActsTrk::getCalibrationContext(ctx);
118 
120  ATHRNG::RNGWrapper* rngWrapper = m_rndmSvc->getEngine(this, name());
121  rngWrapper->setSeed(name(), ctx);
122  CLHEP::HepRandomEngine* randEngine = rngWrapper->getEngine(ctx);
123 
124  SG::WriteHandle outHandle{m_writeKey, ctx};
125  ATH_CHECK(outHandle.record(std::make_unique<xAOD::MuonSegmentContainer>(),
126  std::make_unique<xAOD::MuonSegmentAuxContainer>()));
127 
128  SG::WriteHandle surfaceHandle{m_surfKey, ctx};
129  ATH_CHECK(surfaceHandle.record(std::make_unique<xAOD::TrackSurfaceContainer>(),
130  std::make_unique<xAOD::TrackStateAuxContainer>()));
131 
133  auto auxMeasHandle = m_auxMeasProv.makeHandle(ctx, *surfaceHandle);
134 
138  xAOD::MeasVector<Acts::toUnderlying(ParamDefs::nPars)>>;
139 
140  ParDecor_t dec_locPars{m_localParsKey, ctx};
141  ParDecor_t dec_seedPars{m_seedParsKey, ctx};
143  for (const xAOD::MuonSegment* reFitMe: *segments){
144  const auto msSector = m_detMgr->getSectorEnvelope(reFitMe->chamberIndex(),
145  reFitMe->sector(),
146  reFitMe->etaIndex());
147  const Amg::Transform3D& sectorTrf{msSector->localToGlobalTrans(gctx)};
148 
150  const auto [seedPos, seedDir] = smearSegment(gctx, *MuonR4::detailedSegment(*reFitMe), randEngine);
152  {
153  auto invTrf = sectorTrf.inverse();
154  const Amg::Vector3D locSeedPos = invTrf * seedPos;
155  const Amg::Vector3D locSeedDir = invTrf.linear() * seedDir;
156  auto& seedPars = dec_seedPars(*reFitMe);
157  seedPars[Acts::toUnderlying(ParamDefs::x0)] = locSeedPos.x();
158  seedPars[Acts::toUnderlying(ParamDefs::y0)] = locSeedPos.y();
159  seedPars[Acts::toUnderlying(ParamDefs::theta)] = locSeedDir.theta();
160  seedPars[Acts::toUnderlying(ParamDefs::phi)] = locSeedDir.phi();
161  }
162 
163  const GeoTrf::CoordEulerAngles sectorAngles = GeoTrf::getCoordRotationAngles(sectorTrf);
165  std::vector<const xAOD::UncalibratedMeasurement*> startMeas = MuonR4::collectMeasurements(*reFitMe);
166 
167  const auto* refMeas = startMeas.front();
168 
169  const Amg::Vector3D firstSurfPos{surfAcc.get(refMeas)->transform(tgContext).translation()};
170 
171  if (reFitMe->nPhiLayers() < 1) {
172  ATH_MSG_VERBOSE("Skip phi layer free segment");
173  continue;
174  const Amg::Vector3D planeNormal = sectorTrf.linear().col(2);
175 
176  const Amg::Vector3D lastSurfPos = surfAcc.get(startMeas.back())->transform(tgContext).translation();
178 
179  const Amg::Transform3D trfBeneath = GeoTrf::GeoTransformRT{sectorAngles, firstSurfPos - pseudoSurfDist * planeNormal};
180  const Amg::Transform3D trfAbove = GeoTrf::GeoTransformRT{sectorAngles, lastSurfPos + pseudoSurfDist * planeNormal};
181 
182  auto surfBeneath = Acts::Surface::makeShared<Acts::PlaneSurface>(trfBeneath);
183  auto surfAbove = Acts::Surface::makeShared<Acts::PlaneSurface>(trfAbove);
184  const double covVal = std::pow(1.*Gaudi::Units::cm, 2);
185  startMeas.insert(startMeas.begin(), auxMeasHandle.newMeasurement<1>(surfBeneath, ProjectorType::e1DimNoTime, AmgSymMatrix(1){covVal}));
186  startMeas.insert(startMeas.end(), auxMeasHandle.newMeasurement<1>(surfAbove, ProjectorType::e1DimNoTime, AmgSymMatrix(1){covVal}));
187 
188  }
189  //else if (const auto& firstMeas = reFitMe->measurements().front(); firstMeas->type() == xAOD::UncalibMeasType::Other) {
190  // auto pseudoSurf = Acts::Surface::makeShared<Acts::PlaneSurface>(
191  // GeoTrf::GeoTransformRT{sectorAngles, Amg::Vector3D::Zero()});
192  // startMeas.insert(startMeas.begin(), auxMeasHandle.newMeasurement<2>(pseudoSurf, ProjectorType::e2DimNoTime, AmgSymMatrix(2)::Identity()));
193  //}
194 
196  const Amg::Vector3D trfZ = sectorTrf.linear().col(2);
197  const double extDist = Amg::intersect<3>(seedPos, seedDir, trfZ,
198  firstSurfPos.dot(trfZ) - 10.*Gaudi::Units::cm).value_or(0.);
199  // const double extDist = dir.dot(firstSurfPos - pos) - 5.*Gaudi::Units::cm;
201  const Amg::Vector3D refPos = seedPos + extDist * seedDir;
202  const Amg::Transform3D trf{GeoTrf::GeoTransformRT{sectorAngles, refPos}};
203  if (msgLvl(MSG::VERBOSE)) {
204  const auto [locPos, locDir] = makeLine(localSegmentPars(*reFitMe));
205 
206  std::stringstream sstr{};
207  sstr<<"pos: "<<Amg::toString(seedPos)<<", dir: "<<Amg::toString(seedDir)<<", chi2/nDoF: "
208  <<reFitMe->chiSquared() / reFitMe->numberDoF()<<", nDoF: "<<reFitMe->numberDoF()<<", "
209  <<reFitMe->nPrecisionHits()<<", "<<reFitMe->nPhiLayers()<<std::endl;
210  for (const auto& meas : MuonR4::detailedSegment(*reFitMe)->measurements()) {
211  sstr<<" **** "<<(*meas)<<", chi2: "<<SeedingAux::chi2Term(locPos, locDir, *meas)
212  <<", sign: "<<(meas->isStraw() ?
213  (SeedingAux::strawSign(locPos,locDir, *meas) == 1 ? "R" : "L") : "-")
214  <<", geoId: "<<(meas->spacePoint() ? surfAcc.get(meas->spacePoint()->primaryMeasurement())->geometryId()
215  : Acts::GeometryIdentifier{})<<std::endl;
216  }
217 
218  sstr<<" Target surf: "<<Amg::toString(trf)<<", firstSurf: "<< Amg::toString(trf.inverse()*firstSurfPos)
219  <<", refPoint: "<<Amg::toString(trf.inverse()*refPos)<<std::endl;
220  ATH_MSG_VERBOSE("Run G2F fit on "<<msSector->identString()<<std::endl<<sstr.str());
221  }
223  auto target = Acts::Surface::makeShared<Acts::PlaneSurface>(trf);
224 
225  auto fourPos{ActsTrk::convertPosToActs(refPos, refPos.mag() / Gaudi::Units::c_light)};
226  Acts::BoundMatrix initialCov{Acts::BoundMatrix::Identity()};
227 
228  auto initialPars = Acts::BoundTrackParameters::create(tgContext, target, fourPos, seedDir, straightQoverP,
229  initialCov, Acts::ParticleHypothesis::muon());
230  if (!initialPars.ok()) {
231  ATH_MSG_WARNING("Initial estimate of the parameters failed");
232  continue;
233  }
234  ATH_MSG_ALWAYS("Initial parameters "<<Amg::toString((*initialPars).parameters()));
235  auto fitTraject = m_trackFitTool->fit(startMeas, *initialPars,
236  tgContext, mfContext, calContext, target.get());
237  if (!fitTraject) {
238  ATH_MSG_WARNING("Track fit failed.");
239  // return StatusCode::FAILURE;
240  continue;
241  }
242 
243  auto track = fitTraject->getTrack(0);
244  ATH_MSG_DEBUG("Track fit succeeded. ");
245 
248  std::vector<const xAOD::UncalibratedMeasurement*> goodMeas{};
249  unsigned int itr{0};
250  fitTraject->trackStateContainer().visitBackwards(track.tipIndex(),[&](const auto& state){
251  if (!state.hasUncalibratedSourceLink()){
252  return;
253  }
254  goodMeas.insert(goodMeas.begin(),
255  ActsTrk::detail::xAODUncalibMeasCalibrator::unpack(state.getUncalibratedSourceLink()));
256  ATH_MSG_VERBOSE("Loop over track state: "<<(itr++)<<", "<<m_idHelperSvc->toString(xAOD::identify(goodMeas.front()))
257  <<", id: "<<surfAcc.get(goodMeas.front())->geometryId());
258 
259  const xAOD::UncalibratedMeasurement* m = goodMeas.front();
260  summary.nPrecHits += (m->type() == xAOD::UncalibMeasType::MdtDriftCircleType);
261  if (m->type() == xAOD::UncalibMeasType::Other) {
262  }
263  else if (m_idHelperSvc->measuresPhi(xAOD::identify(m))){
264  ++summary.nPhiHits;
265  } else {
266  summary.nEtaTrigHits += (m->type() != xAOD::UncalibMeasType::MdtDriftCircleType);
267  }
268  });
269 
270  Acts::BoundTrackParameters parameters = track.createParametersAtReference();
271 
273  const Amg::Vector3D globDir = parameters.direction();
275  const Amg::Transform3D globToLoc{sectorTrf.inverse()};
276  const Amg::Vector3D refitPos = globToLoc * parameters.position(tgContext);
277  const Amg::Vector3D refitDir = globToLoc.linear() * globDir;
279  const Amg::Vector3D refitSeg = refitPos + Amg::intersect<3>(refitPos, refitDir, Amg::Vector3D::UnitZ(), 0).value_or(0.) * refitDir;
280  const Amg::Vector3D globPos{msSector->localToGlobalTrans(gctx) * refitSeg};
281 
282  auto newSegment = outHandle->push_back(std::make_unique<xAOD::MuonSegment>());
283  dec_segLink(*newSegment) = Link_t{*segments, reFitMe->index(), ctx};
284 
285  newSegment->setDirection(globDir.x(), globDir.y(), globDir.z());
286  newSegment->setPosition(globPos.x(), globPos.y(), globPos.z());
287 
288  newSegment->setFitQuality(track.chi2(), track.nDoF());
289  newSegment->setNHits(summary.nPrecHits, summary.nPhiHits, summary.nEtaTrigHits);
290  auto& locFitPars = dec_locPars(*newSegment);
291  locFitPars[Acts::toUnderlying(ParamDefs::x0)] = refitSeg.x();
292  locFitPars[Acts::toUnderlying(ParamDefs::y0)] = refitSeg.y();
293  locFitPars[Acts::toUnderlying(ParamDefs::theta)] = refitDir.theta();
294  locFitPars[Acts::toUnderlying(ParamDefs::phi)] = refitDir.phi();
295  }
296  return StatusCode::SUCCESS;
297  }
298 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
MuonR4::collectMeasurements
std::vector< const xAOD::UncalibratedMeasurement * > collectMeasurements(const Segment &seg, bool skipOutlier=true)
Helper function to extract the measurements from the segment.
Definition: TrackingHelpers.cxx:25
ATHRNG::RNGWrapper::setSeed
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Definition: RNGWrapper.h:169
ActsTrk::getCalibrationContext
Acts::CalibrationContext getCalibrationContext(const EventContext &ctx)
The Acts::Calibration context is piped through the Acts fitters to (re)calibrate the Acts::SourceLink...
Definition: CalibrationContext.h:15
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:196
xAOD::identify
const Identifier & identify(const UncalibratedMeasurement *meas)
Returns the associated identifier from the muon measurement.
Definition: MuonSpectrometer/MuonPhaseII/Event/xAOD/xAODMuonPrepData/Root/UtilFunctions.cxx:95
MuonR4::Segment::summary
const HitSummary & summary() const
Returns the hit summary.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:74
TrackStateAuxContainer.h
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
SegmentActsRefitAlg.h
TRTCalib_Extractor.det
det
Definition: TRTCalib_Extractor.py:36
MuonGMR4::SpectrometerSector::localToGlobalTrans
const Amg::Transform3D & localToGlobalTrans(const ActsTrk::GeometryContext &gctx) const
Returns the local -> global tarnsformation from the sector.
Definition: SpectrometerSector.cxx:75
initialize
void initialize()
Definition: run_EoverP.cxx:894
MuonSegmentAuxContainer.h
EventPrimitivesHelpers.h
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:75
MuonR4::Segment
Placeholder for what will later be the muon segment EDM representation.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:19
MuonR4::Segment::measurements
const MeasVec & measurements() const
Returns the associated measurements.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:49
TrackSurfaceAuxContainer.h
xAOD::MuonSegment_v1
Class describing a MuonSegment.
Definition: MuonSegment_v1.h:33
MuonR4::SegmentFit::ParamDefs
SeedingAux::FitParIndex ParamDefs
Use the same parameter indices as used by the CompSpacePointAuxiliaries.
Definition: MuonHoughDefs.h:38
xAODUncalibMeasCalibrator.h
ActsTrk::convertPosToActs
Acts::Vector4 convertPosToActs(const Amg::Vector3D &athenaPos, const double athenaTime=0.)
Converts a position vector & time from Athena units into Acts units.
Definition: UnitConverters.h:74
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SpectrometerSector.h
MuonR4::SegmentFit::makeLine
std::pair< Amg::Vector3D, Amg::Vector3D > makeLine(const Parameters &pars)
Returns the parsed parameters into an Eigen line parametrization.
Definition: SegmentFitterEventData.cxx:35
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:50
ActsTrk::detail::xAODUncalibMeasCalibrator::unpack
static const xAOD::UncalibratedMeasurement * unpack(const Acts::SourceLink &sl)
Helper method to unpack an Acts source link to an uncalibrated measurement.
Definition: xAODUncalibMeasCalibrator.cxx:12
ActsTrk::detail::MeasurementCalibratorBase::ProjectorType
ProjectorType
Enum encoding the possible projectors used in ATLAS.
Definition: MeasurementCalibratorBase.h:29
MuonR4::detailedSegment
const Segment * detailedSegment(const xAOD::MuonSegment &seg)
Helper function to navigate from the xAOD::MuonSegment to the MuonR4::Segment.
Definition: TrackingHelpers.cxx:14
LArG4FSStartPointFilterLegacy.execute
execute
Definition: LArG4FSStartPointFilterLegacy.py:20
cm
const double cm
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/FCAL_ChannelMap.cxx:25
CalibrationContext.h
xAOD::UncalibratedMeasurement_v1
Definition: UncalibratedMeasurement_v1.h:13
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
ActsTrk::IDetectorElementBase
base class interface providing the bare minimal interface extension.
Definition: IDetectorElement.h:32
SG::get
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
Definition: ReadCondHandle.h:287
UnitConverters.h
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
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
WriteDecorHandle.h
Handle class for adding a decoration to an object.
beamspotnt.parName
list parName
Definition: bin/beamspotnt.py:1286
xAOD::Other
@ Other
ATH_MSG_ALWAYS
#define ATH_MSG_ALWAYS(x)
Definition: AthMsgStreamMacros.h:35
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ActsTrk::GeometryContext
Definition: GeometryContext.h:28
MuonR4::Segment::msSector
const MuonGMR4::SpectrometerSector * msSector() const
Returns the associated MS sector.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:39
DataVector
Derived DataVector<T>.
Definition: DataVector.h:795
xAOD::MuonSegmentContainer
MuonSegmentContainer_v1 MuonSegmentContainer
Definition of the current "MuonSegment container version".
Definition: MuonSegmentContainer.h:14
xAOD::MeasVector
Eigen::Matrix< float, N, 1 > MeasVector
Abrivation of the Matrix & Covariance definitions.
Definition: MeasurementDefs.h:53
TrackingHelpers.h
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ATHRNG::RNGWrapper
A wrapper class for event-slot-local random engines.
Definition: RNGWrapper.h:56
Amg::error
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
Definition: EventPrimitivesHelpers.h:40
python.PhysicalConstants.c_light
float c_light
Definition: PhysicalConstants.py:73
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
python.copyTCTOutput.locDir
locDir
Definition: copyTCTOutput.py:110
ATHRNG::RNGWrapper::getEngine
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition: RNGWrapper.h:134
RNGWrapper.h
xAODUncalibMeasSurfAcc.h
MuonR4
This header ties the generic definitions in this package.
Definition: HoughEventData.h:16
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
MuonR4::Segment::HitSummary
Helper struct to summarize the hit count
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:61
SegmentFitterEventData.h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
copySelective.target
string target
Definition: copySelective.py:36
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:567
GeoPrimitivesToStringConverter.h
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
MuonR4::SegmentFit::localSegmentPars
Parameters localSegmentPars(const xAOD::MuonSegment &seg)
Returns the localSegPars decoration from a xAODMuon::Segment.
Definition: SegmentFitterEventData.cxx:42
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
MuonR4::Segment::HitSummary::nPhiHits
unsigned nPhiHits
Number of good Rpc / Tgc / sTgc phi hits.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:67
ActsTrk::detail::xAODUncalibMeasSurfAcc
Helper class to access the Acts::surface associated with an Uncalibrated xAOD measurement.
Definition: xAODUncalibMeasSurfAcc.h:22
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:13
CaloLCW_tf.trf
trf
Definition: CaloLCW_tf.py:20
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
xAOD::UncalibMeasType::MdtDriftCircleType
@ MdtDriftCircleType
python.SystemOfUnits.m
float m
Definition: SystemOfUnits.py:106
MuonR4::Segment::covariance
const SegmentFit::Covariance & covariance() const
Returns the uncertainties of the defining parameters.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:53
ActsTrk::GeometryContext::context
Acts::GeometryContext context() const
Definition: GeometryContext.h:46
SCT_Monitoring::summary
@ summary
Definition: SCT_MonitoringNumbers.h:65