ATLAS Offline Software
xAODSimHitToRpcMeasCnvAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
9 
12 
13 #include <StoreGate/ReadHandle.h>
15 #include <StoreGate/WriteHandle.h>
16 #include <CLHEP/Random/RandGaussZiggurat.h>
17 #include <CLHEP/Random/RandFlat.h>
18 #include <GaudiKernel/PhysicalConstants.h>
19 // Random Numbers
21 
22 namespace {
23  constexpr double invC = 1./ Gaudi::Units::c_light;
24  constexpr double percentage( unsigned int numerator, unsigned int denom) {
25  return 100. * numerator / std::max(denom, 1u);
26  }
27 
28  using CheckVector2D = MuonGMR4::CheckVector2D;
29 
30 }
31 
33  ISvcLocator* pSvcLocator):
34  AthReentrantAlgorithm{name, pSvcLocator} {}
35 
38  ATH_CHECK(m_readKey.initialize());
39  ATH_CHECK(m_writeKey.initialize());
40  ATH_CHECK(m_writeKeyBI.initialize(!m_writeKeyBI.empty()));
41 
42  ATH_CHECK(m_idHelperSvc.retrieve());
43  m_stIdxBIL = m_idHelperSvc->rpcIdHelper().stationNameIndex("BIL");
45  return StatusCode::SUCCESS;
46 }
47 
49  ATH_MSG_INFO("Tried to convert "<<m_allHits[0]<<" | "<<m_allHits[1]<<" hits. In, "
50  <<percentage(m_acceptedHits[0], m_allHits[0]) <<" | "
51  <<percentage(m_acceptedHits[1], m_allHits[1]) <<" cases, the conversion was successful");
52  return StatusCode::SUCCESS;
53 }
54 
56  const double locPosOnStrip,
57  const MuonGMR4::StripDesignPtr& designPtr,
58  const Identifier& gasGapId,
59  const bool measuresPhi,
60  xAOD::RpcStripContainer& prdContainer,
61  CLHEP::HepRandomEngine* rndEngine) const {
62 
64  if (!designPtr){
65  return;
66  }
67  const MuonGMR4::StripDesign& design{*designPtr};
68 
69  const double uncert = design.stripPitch() / std::sqrt(12.);
70  const double smearedX = CLHEP::RandGaussZiggurat::shoot(rndEngine, locPosOnStrip, uncert);
71  const Amg::Vector2D locHitPos{smearedX * Amg::Vector2D::UnitX()};
72  ++(m_allHits[measuresPhi]);
73  if (!design.insideTrapezoid(locHitPos)) {
74  ATH_MSG_VERBOSE("The hit "<<Amg::toString(locHitPos)<<" is outside of the trapezoid bounds for "
75  <<m_idHelperSvc->toStringGasGap(gasGapId)<<", measuresPhi: "<<(measuresPhi ? "yay" : "nay"));
76  return;
77  }
78  const int strip = stripNumber(design, locHitPos);
79  if (strip < 0) {
80  ATH_MSG_VERBOSE("Hit " << Amg::toString(locHitPos) << " cannot trigger any signal in a strip for "
81  << m_idHelperSvc->toStringGasGap(gasGapId) <<", measuresPhi: "<<(measuresPhi ? "yay" : "nay"));
82  return;
83  }
84 
85  const RpcIdHelper& id_helper{m_idHelperSvc->rpcIdHelper()};
86 
87  bool isValid{false};
88  const Identifier prdId{id_helper.channelID(gasGapId,
89  id_helper.doubletZ(gasGapId),
90  id_helper.doubletPhi(gasGapId),
91  id_helper.gasGap(gasGapId),
92  measuresPhi, strip, isValid)};
93 
94  if (!isValid) {
95  ATH_MSG_WARNING("Invalid hit identifier obtained for "<<m_idHelperSvc->toStringGasGap(gasGapId)
96  <<", eta strip "<<strip<<" & hit "<<Amg::toString(locHitPos,2 )
97  <<" /// "<<design);
98  return;
99  }
100  ++(m_acceptedHits[measuresPhi]);
101 
102  xAOD::RpcStrip* prd = new xAOD::RpcStrip();
103  prdContainer.push_back(prd);
104 
105  prd->setIdentifier(prdId.get_compact());
106  xAOD::MeasVector<1> lPos{smearedX};
107  xAOD::MeasMatrix<1> cov{uncert * uncert};
108  prd->setMeasurement<1>(m_idHelperSvc->detElementHash(prdId),
109  std::move(lPos), std::move(cov));
110  const MuonGMR4::RpcReadoutElement* readOutEle = m_DetMgr->getRpcReadoutElement(prdId);
111  prd->setReadoutElement(readOutEle);
112  prd->setStripNumber(strip);
113  prd->setGasGap(id_helper.gasGap(prdId));
114  prd->setDoubletPhi(id_helper.doubletPhi(prdId));
115  prd->setMeasuresPhi(id_helper.measuresPhi(prdId));
116  prd->setTime(hitTime);
117  prd->setAmbiguityFlag(0);
118 }
119 
121  const Amg::Vector2D& locPosOnStrip,
122  const MuonGMR4::StripDesignPtr& designPtr,
123  const Identifier& gasGapId,
124  xAOD::RpcStrip2DContainer& prdContainer,
125  CLHEP::HepRandomEngine* rndEngine) const{
126 
128  if (!designPtr){
129  return;
130  }
131  const MuonGMR4::StripDesign& design{*designPtr};
132  ++(m_allHits[false]);
133 
134  // Smear the Eta coordinate
135  const double uncertX = design.stripPitch() / std::sqrt(12.);
136  const double smearedX = CLHEP::RandGaussZiggurat::shoot(rndEngine, locPosOnStrip.x(), uncertX);
137 
138  // Smear the Phi Coordinate
139  const double propagationVelocity = 0.5 * Gaudi::Units::c_light; // in mm/ns
140  const double stripTimeResolution = 0.6; // in nanoseconds
141  const double stripLength = design.lenLeftEdge(); // in mm, assuming lenLeftEdge() == lenRightEdge() i.e. rectangular strip
142 
143  // Distance in mm along strip to y=-stripLength/2 (L) and y=stripLength/2 (R)
144  const double stripLeft = -(stripLength / 2);
145  const double stripRight = (stripLength / 2);
146  double distToL = std::abs( stripLeft - locPosOnStrip.y() );
147  double distToR = std::abs( stripRight - locPosOnStrip.y() );
148 
149  // True propagation time in nanoseconds along strip to y=-stripLength/2 (L) and y=stripLength/2 (R)
150  double propagationTimeL = distToL / propagationVelocity;
151  double propagationTimeR = distToR / propagationVelocity;
152 
153  // Smeared propagation time in nanoseconds along strip to y=-stripLength/2 (L) and y=stripLength/2 (R)
154  const double smearedTimeL = CLHEP::RandGaussZiggurat::shoot(rndEngine, propagationTimeL, stripTimeResolution);
155  const double smearedTimeR = CLHEP::RandGaussZiggurat::shoot(rndEngine, propagationTimeR, stripTimeResolution);
156  const double smearedDeltaT = smearedTimeR - smearedTimeL;
157 
158  /*
159  |--- d1, t1 ---||--- d1, t1 ---||-- d --| For t2 > t1:
160  ||||||||||||||||X|||||||||||||||||||||||| <- RPC strip, deltaT = t2 - t1, d1 = v_prop * t1 (likewise for d2),
161  |-------- d2, t2 -------| X is a hit l = d1 + d2, d = d2 - d1 -> d = l - 2d1 = v_prop * deltaT
162  |----------------- l -------------------|
163  Hence, d1 = 0.5 * (l - d) = 0.5 * (l - v_prop * deltaT)
164 
165  Then converting to coordinate system where 0 -> -0.5*l to match strip local coordinates
166  d1 -> d1 = -0.5*l + 0.5* (l-d) = -0.5*d = -0.5 * v_pro*deltaT
167  */
168 
169  const double uncertY = 0.5 * propagationVelocity * sqrt(2)*stripTimeResolution; //in mm
170  const double smearedY = -0.5 * propagationVelocity * smearedDeltaT; //in mm
171  //If smearedDeltaT == 0 position is in the centre of the strip (0).
172 
173  const Amg::Vector2D locHitPos{smearedX, smearedY};
174  if (!design.insideTrapezoid(locHitPos)) {
175  ATH_MSG_VERBOSE("The 2D hit "<<Amg::toString(locHitPos)<<" is outside of the trapezoid bounds for "
176  <<m_idHelperSvc->toStringGasGap(gasGapId));
177  return;
178  }
179  const int strip = stripNumber(design, locHitPos);
180  if (strip < 0) {
181  ATH_MSG_VERBOSE("Hit " << Amg::toString(locHitPos) << " cannot trigger any signal in a strip for "
182  << m_idHelperSvc->toStringGasGap(gasGapId));
183  return;
184  }
185 
186  const RpcIdHelper& id_helper{m_idHelperSvc->rpcIdHelper()};
187 
188  bool isValid{false};
189  const Identifier prdId{id_helper.channelID(gasGapId,
190  id_helper.doubletZ(gasGapId),
191  id_helper.doubletPhi(gasGapId),
192  id_helper.gasGap(gasGapId),
193  false, strip, isValid)};
194 
195  if (!isValid) {
196  ATH_MSG_WARNING("Invalid hit identifier obtained for "<<m_idHelperSvc->toStringGasGap(gasGapId)
197  <<", eta strip "<<strip<<" & hit "<<Amg::toString(locHitPos,2 )
198  <<" /// "<<design);
199  return;
200  }
201  ++(m_acceptedHits[false]);
202 
203  xAOD::RpcStrip2D* prd = new xAOD::RpcStrip2D();
204  prdContainer.push_back(prd);
205 
206  prd->setIdentifier(prdId.get_compact());
207  xAOD::MeasVector<2> lPos{};
209  cov(0,0) = uncertX * uncertX;
210  cov(1,1) = uncertY * uncertY;
211  prd->setMeasurement<2>(m_idHelperSvc->detElementHash(prdId),
212  xAOD::toStorage(locHitPos), std::move(cov));
213  const MuonGMR4::RpcReadoutElement* readOutEle = m_DetMgr->getRpcReadoutElement(prdId);
214  prd->setReadoutElement(readOutEle);
215  prd->setStripNumber(strip);
216  prd->setGasGap(id_helper.gasGap(prdId));
217  prd->setDoubletPhi(id_helper.doubletPhi(prdId));
218  prd->setTime(hitTime);
219  prd->setAmbiguityFlag(0);
220 }
221 
223  const Amg::Vector2D& locHitPos) const {
224 
225  int strip = design.stripNumber(locHitPos);
226  if (strip > 0) return strip;
227 
228  const CheckVector2D firstStrip = design.center(1);
229  const CheckVector2D lastStrip = design.center(design.numStrips());
230  if (!firstStrip || !lastStrip) {
231  return -1;
232  }
233  if ( (*firstStrip).x() - 0.5 *design.stripPitch() < locHitPos.x()) {
234  return 1;
235  } else if ( (*lastStrip).x() + 0.5 * design.stripPitch() > locHitPos.x()) {
236  return design.numStrips();
237  }
238  return -1;
239 }
240 
241 StatusCode xAODSimHitToRpcMeasCnvAlg::execute(const EventContext& ctx) const {
243  if (!simHitContainer.isPresent()){
244  ATH_MSG_FATAL("Failed to retrieve "<<m_readKey.fullKey());
245  return StatusCode::FAILURE;
246  }
247 
249  ATH_CHECK(gctxHandle.isPresent());
250  const ActsGeometryContext& gctx{*gctxHandle};
251 
253  ATH_CHECK(prdContainer.record(std::make_unique<xAOD::RpcStripContainer>(),
254  std::make_unique<xAOD::RpcStripAuxContainer>()));
255 
257  if (!m_writeKeyBI.empty()) {
259  ATH_CHECK(prd2DContainer.record(std::make_unique<xAOD::RpcStrip2DContainer>(),
260  std::make_unique<xAOD::RpcStrip2DAuxContainer>()));
261 
262  }
263 
264  CLHEP::HepRandomEngine* rndEngine = getRandomEngine(ctx);
265 
266  for (const xAOD::MuonSimHit* simHit : *simHitContainer) {
267  const Identifier hitId = simHit->identify();
268  // ignore radiation for now
269  if (std::abs(simHit->pdgId()) != 13) continue;
270  const MuonGMR4::RpcReadoutElement* readOutEle = m_DetMgr->getRpcReadoutElement(hitId);
271  const Amg::Vector3D locSimHitPos{xAOD::toEigen(simHit->localPosition())};
272  const double hitTime = simHit->globalTime() - invC *(readOutEle->localToGlobalTrans(gctx, hitId) * locSimHitPos).mag();
273 
274  if (m_idHelperSvc->stationName(hitId) != m_stIdxBIL) {
275  digitizeHit(hitTime, locSimHitPos.x(), readOutEle->getParameters().etaDesign, hitId, false, *prdContainer, rndEngine);
276  digitizeHit(hitTime, locSimHitPos.y(), readOutEle->getParameters().phiDesign, hitId, true, *prdContainer, rndEngine);
277  } else if (!m_writeKeyBI.empty()) {
278  digitizeHit(hitTime, locSimHitPos.block<2,1>(0,0), readOutEle->getParameters().etaDesign, hitId,
279  *prd2DContainer, rndEngine);
280  }
281  }
282 
283  return StatusCode::SUCCESS;
284 }
285 
286 CLHEP::HepRandomEngine* xAODSimHitToRpcMeasCnvAlg::getRandomEngine(const EventContext& ctx) const {
287  ATHRNG::RNGWrapper* rngWrapper = m_rndmSvc->getEngine(this, m_streamName);
288  std::string rngName = name() + m_streamName;
289  rngWrapper->setSeed(rngName, ctx);
290  return rngWrapper->getEngine(ctx);
291 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
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
RpcStrip2DAuxContainer.h
xAOD::MuonSimHit_v1
Definition: MuonSimHit_v1.h:18
GeoModel::TransientConstSharedPtr< StripDesign >
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonGMR4::StripDesign::stripNumber
virtual int stripNumber(const Amg::Vector2D &pos) const
Calculates the number of the strip whose center is closest to the given point.
MuonGMR4::StripDesign
Definition: StripDesign.h:30
xAODSimHitToRpcMeasCnvAlg::stripNumber
int stripNumber(const MuonGMR4::StripDesign &design, const Amg::Vector2D &locHitPosOnPlane) const
Returns the number of the strip that's closest to the hit position on the strip plane -1 is returned ...
Definition: xAODSimHitToRpcMeasCnvAlg.cxx:222
SiliconTech::strip
@ strip
max
#define max(a, b)
Definition: cfImp.cxx:41
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
xAOD::RpcMeasurement_v1::setStripNumber
void setStripNumber(uint16_t strip)
Sets the associated strip number identifier field.
MuonGMR4::StripDesign::numStrips
virtual int numStrips() const
Number of strips on the panel.
xAOD::RpcMeasurement_v1::setDoubletPhi
void setDoubletPhi(uint8_t doubPhi)
Sets the doubletPhi identifier field.
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
xAOD::toStorage
MeasVector< N > toStorage(const AmgVector(N)&amgVec)
Converts the double precision of the AmgVector into the floating point storage precision of the MeasV...
Definition: MeasurementDefs.h:68
xAOD::RpcMeasurement_v1::setAmbiguityFlag
void setAmbiguityFlag(uint8_t ambi)
Sets the ADC counts.
MuonGMR4::RpcReadoutElement::parameterBook::etaDesign
StripDesignPtr etaDesign
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:40
xAODSimHitToRpcMeasCnvAlg::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: xAODSimHitToRpcMeasCnvAlg.h:83
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
isValid
bool isValid(const T &p)
Definition: AtlasPID.h:214
xAOD::RpcStrip_v1
Definition: RpcStrip_v1.h:11
MuonGMR4::RpcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:18
RpcIdHelper
Definition: RpcIdHelper.h:51
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
ReadCondHandle.h
MuonGMR4::RpcReadoutElement::getParameters
const parameterBook & getParameters() const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/RpcReadoutElement.cxx:34
SCT_CalibAlgs::lastStrip
@ lastStrip
Definition: SCT_CalibNumbers.h:10
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
xAODSimHitToRpcMeasCnvAlg::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Definition: xAODSimHitToRpcMeasCnvAlg.h:85
xAODSimHitToRpcMeasCnvAlg::digitizeHit
void digitizeHit(const double hitTime, const double locPosOnStrip, const MuonGMR4::StripDesignPtr &designPtr, const Identifier &gasGapId, const bool measuresPhi, xAOD::RpcStripContainer &prdContainer, CLHEP::HepRandomEngine *engine) const
Smears the local simHit position orthogonal to the strip and writes a 1D rpc strip measurement.
Definition: xAODSimHitToRpcMeasCnvAlg.cxx:55
WriteHandle.h
Handle class for recording to StoreGate.
xAOD::UncalibratedMeasurement_v1::setIdentifier
void setIdentifier(const DetectorIdentType measId)
Sets the full Identifier of the measurement.
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
xAODSimHitToRpcMeasCnvAlg::initialize
StatusCode initialize() override
Definition: xAODSimHitToRpcMeasCnvAlg.cxx:36
xAODSimHitToRpcMeasCnvAlg::m_geoCtxKey
SG::ReadHandleKey< ActsGeometryContext > m_geoCtxKey
Definition: xAODSimHitToRpcMeasCnvAlg.h:70
MuonGMR4::RpcReadoutElement::parameterBook::phiDesign
StripDesignPtr phiDesign
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:39
xAODSimHitToRpcMeasCnvAlg::getRandomEngine
CLHEP::HepRandomEngine * getRandomEngine(const EventContext &ctx) const
Definition: xAODSimHitToRpcMeasCnvAlg.cxx:286
xAOD::RpcStrip2D_v1
Definition: RpcStrip2D_v1.h:11
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
xAOD::RpcMeasurement_v1::setGasGap
void setGasGap(uint8_t gap)
Sets the associated gasGap identifier field.
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
xAOD::RpcStrip_v1::setMeasuresPhi
void setMeasuresPhi(uint8_t measPhi)
sets the measuresPhi value
xAODSimHitToRpcMeasCnvAlg::m_writeKeyBI
SG::WriteHandleKey< xAOD::RpcStrip2DContainer > m_writeKeyBI
Definition: xAODSimHitToRpcMeasCnvAlg.h:78
MuonChamber.h
xAOD::RpcMeasurement_v1::setReadoutElement
void setReadoutElement(const MuonGMR4::RpcReadoutElement *readoutEle)
set the pointer to the ReadoutElement
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
xAODSimHitToRpcMeasCnvAlg::finalize
StatusCode finalize() override
Definition: xAODSimHitToRpcMeasCnvAlg.cxx:48
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
compute_lumi.denom
denom
Definition: compute_lumi.py:76
xAODSimHitToRpcMeasCnvAlg::m_streamName
Gaudi::Property< std::string > m_streamName
Definition: xAODSimHitToRpcMeasCnvAlg.h:86
xAOD::MeasVector
Eigen::Matrix< float, N, 1 > MeasVector
Abrivation of the Matrix & Covariance definitions.
Definition: MeasurementDefs.h:52
MuonGMR4::StripDesign::center
CheckVector2D center(int stripNumb) const
Returns the bisector of the strip (Global numbering scheme)
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ATHRNG::RNGWrapper
A wrapper class for event-slot-local random engines.
Definition: RNGWrapper.h:56
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
python.PhysicalConstants.c_light
float c_light
Definition: PhysicalConstants.py:63
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
xAOD::RpcMeasurement_v1::setTime
void setTime(float time)
Sets the the triger time of the hit.
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
xAODSimHitToRpcMeasCnvAlg::xAODSimHitToRpcMeasCnvAlg
xAODSimHitToRpcMeasCnvAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: xAODSimHitToRpcMeasCnvAlg.cxx:32
xAODSimHitToRpcMeasCnvAlg::m_stIdxBIL
int m_stIdxBIL
Definition: xAODSimHitToRpcMeasCnvAlg.h:91
xAODSimHitToRpcMeasCnvAlg::execute
StatusCode execute(const EventContext &ctx) const override
Definition: xAODSimHitToRpcMeasCnvAlg.cxx:241
RpcReadoutElement.h
xAOD::RpcStrip2D
RpcStrip2D_v1 RpcStrip2D
Defined the version of the RpcStrip.
Definition: RpcStrip2D.h:12
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
xAOD::UncalibratedMeasurement_v1::setMeasurement
void setMeasurement(const DetectorIDHashType idHash, MeasVector< N > locPos, MeasMatrix< N > locCov)
Sets IdentifierHash, local position and local covariance of the measurement.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAODSimHitToRpcMeasCnvAlg::m_writeKey
SG::WriteHandleKey< xAOD::RpcStripContainer > m_writeKey
Definition: xAODSimHitToRpcMeasCnvAlg.h:75
MuonGMR4::MuonReadoutElement::localToGlobalTrans
const Amg::Transform3D & localToGlobalTrans(const ActsGeometryContext &ctx) const
Returns the local to global transformation into the ATLAS coordinate system.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:81
xAODSimHitToRpcMeasCnvAlg.h
SCT_CalibAlgs::firstStrip
@ firstStrip
Definition: SCT_CalibNumbers.h:10
xAOD::MeasMatrix
Eigen::Matrix< float, N, N > MeasMatrix
Definition: MeasurementDefs.h:54
MuonGMR4::StripDesign::stripPitch
double stripPitch() const
Distance between two adjacent strips.
ReadHandle.h
Handle class for reading from StoreGate.
hitTime
float hitTime(const AFP_SIDSimHit &hit)
Definition: AFP_SIDSimHit.h:39
RpcStripAuxContainer.h
xAODSimHitToRpcMeasCnvAlg::m_DetMgr
const MuonGMR4::MuonDetectorManager * m_DetMgr
Access to the new readout geometry.
Definition: xAODSimHitToRpcMeasCnvAlg.h:81
mag
Scalar mag() const
mag method
Definition: AmgMatrixBasePlugin.h:25
xAOD::RpcStrip
RpcStrip_v1 RpcStrip
Defined the version of the RpcStrip.
Definition: RpcStrip.h:12
xAODSimHitToRpcMeasCnvAlg::m_readKey
SG::ReadHandleKey< xAOD::MuonSimHitContainer > m_readKey
Definition: xAODSimHitToRpcMeasCnvAlg.h:72