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"
24 
25 #include "Acts/Surfaces/PlaneSurface.hpp"
26 namespace{
27  constexpr double straightQoverP = 1. / (100. *Gaudi::Units::TeV);
28  constexpr double pseudoSurfDist = 5.*Gaudi::Units::cm;
30 }
31 
32 
33 namespace MuonR4{
34  using namespace SegmentFit;
35 
37  ATH_CHECK(m_readKey.initialize());
38  ATH_CHECK(m_writeKey.initialize());
39  ATH_CHECK(m_linkKey.initialize());
40  ATH_CHECK(m_localParsKey.initialize());
41  ATH_CHECK(m_seedParsKey.initialize());
42  ATH_CHECK(m_surfKey.initialize());
43  ATH_CHECK(m_auxMeasProv.initialize(m_writeKey.key()));
44 
45  ATH_CHECK(m_idHelperSvc.retrieve());
46  ATH_CHECK(m_trackFitTool.retrieve());
47  ATH_CHECK(m_trackingGeometryTool.retrieve());
48  ATH_CHECK(m_extrapolationTool.retrieve());
49  ATH_CHECK(m_segSelector.retrieve());
50 
51  return StatusCode::SUCCESS;
52  }
53  std::tuple<Amg::Vector3D, Amg::Vector3D>
55  const MuonR4::Segment& segment,
56  CLHEP::HepRandomEngine* engine) const{
57  auto segPars = localSegmentPars(gctx, segment);
59  for (ParamDefs precPar : {ParamDefs::y0, ParamDefs::theta,
60  ParamDefs::x0, ParamDefs::phi}) {
61  if (precPar == ParamDefs::x0 && !segment.summary().nPhiHits) {
62  break;
63  }
64  const unsigned idx = Acts::toUnderlying(precPar);
65  segPars[idx] = CLHEP::RandGaussZiggurat::shoot(engine, segPars[idx],
66  m_smearRange*Amg::error(segment.covariance(), idx));
67  }
68  const auto [locPos, locDir] = makeLine(segPars);
69  const Amg::Transform3D& locToGlob{segment.msSector()->localToGlobalTrans(gctx)};
70  return std::make_tuple(locToGlob*locPos, locToGlob.linear() * locDir);
71  }
72  StatusCode SegmentActsRefitAlg::execute(const EventContext& ctx) const {
73 
74  const xAOD::MuonSegmentContainer* segments{nullptr};
75  ATH_CHECK(SG::get(segments, m_readKey, ctx));
77  const ActsGeometryContext& gctx{m_trackingGeometryTool->getGeometryContext(ctx)};
78  const Acts::GeometryContext tgContext = gctx.context();
79  const Acts::MagneticFieldContext mfContext = m_extrapolationTool->getMagneticFieldContext(ctx);
80  const Acts::CalibrationContext calContext = ActsTrk::getCalibrationContext(ctx);
81 
83  ATHRNG::RNGWrapper* rngWrapper = m_rndmSvc->getEngine(this, name());
84  rngWrapper->setSeed(name(), ctx);
85  CLHEP::HepRandomEngine* randEngine = rngWrapper->getEngine(ctx);
86 
87  SG::WriteHandle outHandle{m_writeKey, ctx};
88  ATH_CHECK(outHandle.record(std::make_unique<xAOD::MuonSegmentContainer>(),
89  std::make_unique<xAOD::MuonSegmentAuxContainer>()));
90 
91  SG::WriteHandle surfaceHandle{m_surfKey, ctx};
92  ATH_CHECK(surfaceHandle.record(std::make_unique<xAOD::TrackSurfaceContainer>(),
93  std::make_unique<xAOD::TrackStateAuxContainer>()));
94 
96  auto auxMeasHandle = m_auxMeasProv.makeHandle(ctx, *surfaceHandle);
97 
101  xAOD::MeasVector<Acts::toUnderlying(ParamDefs::nPars)>>;
102 
103  ParDecor_t dec_locPars{m_localParsKey, ctx};
104  ParDecor_t dec_seedPars{m_seedParsKey, ctx};
106  for (const xAOD::MuonSegment* seg: *segments){
107  const MuonR4::Segment* reFitMe = MuonR4::detailedSegment(*seg);
108  const Amg::Transform3D& sectorTrf{reFitMe->msSector()->localToGlobalTrans(gctx)};
109  const GeoTrf::CoordEulerAngles sectorAngles = GeoTrf::getCoordRotationAngles(sectorTrf);
111  std::vector<const xAOD::UncalibratedMeasurement*> startMeas = MuonR4::collectMeasurements(*reFitMe);
112 
113  const auto* refMeas = startMeas.front();
114 
115  const Amg::Vector3D firstSurfPos{surfAcc.get(refMeas)->transform(tgContext).translation()};
116  if (!reFitMe->summary().nPhiHits) {
117  const Amg::Vector3D planeNormal = sectorTrf.linear().col(2);
118 
119  const Amg::Vector3D lastSurfPos = surfAcc.get(startMeas.back())->transform(tgContext).translation();
121 
122  const Amg::Transform3D trfBeneath = GeoTrf::GeoTransformRT{sectorAngles, firstSurfPos - pseudoSurfDist * planeNormal};
123  const Amg::Transform3D trfAbove = GeoTrf::GeoTransformRT{sectorAngles, lastSurfPos + pseudoSurfDist * planeNormal};
124 
125  auto surfBeneath = Acts::Surface::makeShared<Acts::PlaneSurface>(trfBeneath);
126  auto surfAbove = Acts::Surface::makeShared<Acts::PlaneSurface>(trfAbove);
127  const double covVal = std::pow(1.*Gaudi::Units::cm, 2);
128  startMeas.insert(startMeas.begin(), auxMeasHandle.newMeasurement<1>(surfBeneath, ProjectorType::e1DimNoTime, AmgSymMatrix(1){covVal}));
129  startMeas.insert(startMeas.end(), auxMeasHandle.newMeasurement<1>(surfAbove, ProjectorType::e1DimNoTime, AmgSymMatrix(1){covVal}));
130 
131  } else if (const auto& firstMeas = reFitMe->measurements().front(); firstMeas->type() == xAOD::UncalibMeasType::Other) {
132  auto pseudoSurf = Acts::Surface::makeShared<Acts::PlaneSurface>(
133  GeoTrf::GeoTransformRT{sectorAngles, Amg::Vector3D::Zero()});
134  startMeas.insert(startMeas.begin(), auxMeasHandle.newMeasurement<2>(pseudoSurf, ProjectorType::e2DimNoTime, AmgSymMatrix(2)::Identity()));
135  }
137  if (startMeas.size() < 5){
138  continue;
139  }
141  const auto [pos, dir] = smearSegment(gctx,*reFitMe, randEngine);
143 
145  const double extDist = dir.dot(firstSurfPos - pos) - 5.*Gaudi::Units::cm;
147  const Amg::Vector3D refPos = pos + extDist * dir;
148  const Amg::Transform3D trf{GeoTrf::GeoTransformRT{sectorAngles, refPos}};
149  if (msgLvl(MSG::VERBOSE)) {
150  const auto [locPos, locDir] = makeLine(localSegmentPars(gctx, *reFitMe));
151 
152  std::stringstream sstr{};
153  sstr<<"pos: "<<Amg::toString(pos)<<", dir: "<<Amg::toString(dir)<<", chi2/nDoF: "
154  <<reFitMe->chi2() / reFitMe->nDoF()<<", nDoF: "<<reFitMe->nDoF()<<", "
155  <<reFitMe->summary().nPrecHits<<", "<<reFitMe->summary().nPhiHits<<std::endl;
156  for (const xAOD::UncalibratedMeasurement* meas : startMeas) {
157  const auto calib_sp = std::ranges::find_if(reFitMe->measurements(), [meas](const auto& sp) {
158  if (!sp->spacePoint()) return false;
159  return sp->spacePoint()->primaryMeasurement() == meas ||
160  sp->spacePoint()->secondaryMeasurement() == meas;
161  });
162  sstr<<" **** "<<m_idHelperSvc->toString(xAOD::identify(meas))<<" @ "
163  <<Amg::toString(surfAcc.get(meas)->transform(tgContext).translation())
164  <<", "<<surfAcc.get(meas)->geometryId()<<", "
165  <<(calib_sp != reFitMe->measurements().end() ?
166  SeedingAux::chi2Term(locPos, locDir,**calib_sp) : 0.)
167  <<std::endl;
168  }
169  sstr<<" Target surf: "<<Amg::toString(trf)<<", firstSurf: "<< Amg::toString(trf.inverse()*firstSurfPos)
170  <<", refPoint: "<<Amg::toString(trf.inverse()*refPos)<<std::endl;
171  ATH_MSG_VERBOSE("Run G2F fit on "<<reFitMe->msSector()->identString()<<std::endl<<sstr.str());
172  }
174  auto target = Acts::Surface::makeShared<Acts::PlaneSurface>(trf);
175 
176  Acts::ActsVector<4> fourPos{};
177  fourPos.block<3,1>(Acts::ePos0, 0) = refPos;
178  fourPos[Acts::eTime] = refPos.mag() / Gaudi::Units::c_light;
179  Acts::BoundMatrix initialCov{Acts::BoundMatrix::Identity()};
180 
181  auto initialPars = Acts::BoundTrackParameters::create(tgContext, target, fourPos, dir, straightQoverP,
182  initialCov, Acts::ParticleHypothesis::muon());
183  if (!initialPars.ok()) {
184  ATH_MSG_WARNING("Initial estimate of the parameters failed");
185  continue;
186  }
187  auto fitTraject = m_trackFitTool->fit(startMeas, *initialPars, tgContext, mfContext, calContext, target.get());
188  if (!fitTraject) {
189  ATH_MSG_WARNING("Track fit failed.");
190  continue;
191  }
192  auto track = fitTraject->getTrack(0);
193  ATH_MSG_DEBUG("Track fit succeeded. ");
194 
197  std::vector<const xAOD::UncalibratedMeasurement*> goodMeas{};
198  unsigned int itr{0};
199  fitTraject->trackStateContainer().visitBackwards(track.tipIndex(),[&](const auto& state){
200  if (!state.hasUncalibratedSourceLink()){
201  return;
202  }
203  goodMeas.insert(goodMeas.begin(),
204  ActsTrk::detail::xAODUncalibMeasCalibrator::unpack(state.getUncalibratedSourceLink()));
205  ATH_MSG_VERBOSE("Loop over track state: "<<(itr++)<<", "<<m_idHelperSvc->toString(xAOD::identify(goodMeas.front()))
206  <<", id: "<<surfAcc.get(goodMeas.front())->geometryId());
207 
208  summary.nPrecHits += (goodMeas.front()->type() == xAOD::UncalibMeasType::MdtDriftCircleType);
209  if (m_idHelperSvc->measuresPhi(xAOD::identify(goodMeas.front()))){
210  ++summary.nPhiHits;
211  } else {
212  summary.nEtaTrigHits += (goodMeas.front()->type() != xAOD::UncalibMeasType::MdtDriftCircleType);
213  }
214  });
215 
216  Acts::BoundTrackParameters parameters = track.createParametersAtReference();
217 
219  const Amg::Vector3D globDir = parameters.direction();
221  const Amg::Transform3D globToLoc{reFitMe->msSector()->globalToLocalTrans(gctx)};
222  const Amg::Vector3D refitPos = globToLoc * parameters.position(tgContext);
223  const Amg::Vector3D refitDir = globToLoc.linear() * globDir;
225  const Amg::Vector3D refitSeg = refitPos + Amg::intersect<3>(refitPos, refitDir, Amg::Vector3D::UnitZ(), 0).value_or(0.) * refitDir;
226  const Amg::Vector3D globPos{reFitMe->msSector()->localToGlobalTrans(gctx) * refitSeg};
227 
228  auto newSegment = outHandle->push_back(std::make_unique<xAOD::MuonSegment>());
229  dec_segLink(*newSegment) = Link_t{*segments, seg->index(), ctx};
230 
231  newSegment->setDirection(globDir.x(), globDir.y(), globDir.z());
232  newSegment->setPosition(globPos.x(), globPos.y(), globPos.z());
233 
234  newSegment->setFitQuality(track.chi2(), track.nDoF());
235  newSegment->setNHits(summary.nPrecHits, summary.nPhiHits, summary.nEtaTrigHits);
236  dec_locPars(*newSegment)[Acts::toUnderlying(ParamDefs::x0)] = refitSeg.x();
237  dec_locPars(*newSegment)[Acts::toUnderlying(ParamDefs::y0)] = refitSeg.y();
238  dec_locPars(*newSegment)[Acts::toUnderlying(ParamDefs::theta)] = refitDir.theta();
239  dec_locPars(*newSegment)[Acts::toUnderlying(ParamDefs::phi)] = refitDir.phi();
241  const Amg::Vector3D locSeedPos = globToLoc * pos;
242  const Amg::Vector3D locSeedDir = globToLoc.linear() * dir;
243  dec_seedPars(*newSegment)[Acts::toUnderlying(ParamDefs::x0)] = locSeedPos.x();
244  dec_seedPars(*newSegment)[Acts::toUnderlying(ParamDefs::y0)] = locSeedPos.y();
245  dec_seedPars(*newSegment)[Acts::toUnderlying(ParamDefs::theta)] = locSeedDir.theta();
246  dec_seedPars(*newSegment)[Acts::toUnderlying(ParamDefs::phi)] = locSeedDir.phi();
247 
248  }
249  return StatusCode::SUCCESS;
250  }
251 }
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:18
MuonR4::SegmentActsRefitAlg::initialize
virtual StatusCode initialize() override final
Definition: SegmentActsRefitAlg.cxx:36
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:82
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
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::Segment::chi2
double chi2() const
Returns the chi2 of the segment fit.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:45
MuonR4::SegmentFit::ParamDefs
SeedingAux::FitParIndex ParamDefs
Use the same parameter indices as used by the CompSpacePointAuxiliaries.
Definition: MuonHoughDefs.h:37
xAODUncalibMeasCalibrator.h
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:27
MuonGMR4::SpectrometerSector::identString
std::string identString() const
Returns a string encoding the chamber index & the sector of the MS sector.
Definition: SpectrometerSector.cxx:66
python.SystemOfUnits.TeV
float TeV
Definition: SystemOfUnits.py:176
MuonR4::Segment::nDoF
unsigned int nDoF() const
Returns the number of degrees of freedom.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:47
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:7
ActsGeometryContext::context
Acts::GeometryContext context() const
Definition: ActsGeometryContext.h:45
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
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
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
SegmentFitHelperFunctions.h
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.
xAOD::Other
@ Other
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MuonR4::SegmentActsRefitAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override final
Definition: SegmentActsRefitAlg.cxx:72
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:794
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
xAOD::MuonSegmentContainer
MuonSegmentContainer_v1 MuonSegmentContainer
Definition of the current "MuonSegment container version".
Definition: MuonSegmentContainer.h:14
beamspotman.dir
string dir
Definition: beamspotman.py:619
xAOD::MeasVector
Eigen::Matrix< float, N, 1 > MeasVector
Abrivation of the Matrix & Covariance definitions.
Definition: MeasurementDefs.h:53
MuonR4::Segment::HitSummary::nPrecHits
unsigned nPrecHits
Number of good Mdt / Mm / sTgc eta hits.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:63
TrackingHelpers.h
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
CalibDbCompareRT.calib_sp
calib_sp
Definition: CalibDbCompareRT.py:63
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
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
xAODUncalibMeasSurfAcc.h
MuonR4::SegmentActsRefitAlg::smearSegment
std::tuple< Amg::Vector3D, Amg::Vector3D > smearSegment(const ActsGeometryContext &gctx, const MuonR4::Segment &segment, CLHEP::HepRandomEngine *engine) const
Smear the segment's position and direction by one sigma defined by the segment's covariance.
Definition: SegmentActsRefitAlg.cxx:54
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
MuonGMR4::SpectrometerSector::localToGlobalTrans
const Amg::Transform3D & localToGlobalTrans(const ActsGeometryContext &gctx) const
Returns the local -> global tarnsformation from the sector.
Definition: SpectrometerSector.cxx:75
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:33
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
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
NSWL1::PadTriggerAdapter::segment
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
Definition: PadTriggerAdapter.cxx:5
SCT_Monitoring::summary
@ summary
Definition: SCT_MonitoringNumbers.h:65