16 const std::string&
name,
29 return StatusCode::SUCCESS;
33 const std::vector<IdentifierHash>& idVect)
const {
42 const std::unordered_set<IdentifierHash> hashToSelect(idVect.begin(), idVect.end());
43 using RdoPairs = std::array<const xAOD::NRPCRDO*, 2>;
48 cabling.subDetector = rdo->subdetector();
49 cabling.tdcSector = rdo->tdcsector();
51 cabling.channelId = rdo->channel();
55 return StatusCode::FAILURE;
60 return StatusCode::FAILURE;
62 if (hashToSelect.size() && !hashToSelect.count(
m_idHelperSvc->moduleHash(offId))) {
67 const bool stripSide =
cabling.stripSide();
68 sortedRdos[offId][stripSide] = rdo;
72 ATH_CHECK(stripHandle.record(std::make_unique<xAOD::RpcStripContainer>(),
73 std::make_unique<xAOD::RpcStripAuxContainer>()));
78 ATH_CHECK(strip2DHandle.record(std::make_unique<xAOD::RpcStrip2DContainer>(),
79 std::make_unique<xAOD::RpcStrip2DAuxContainer>()));
90 outputMeas->setIdentifierHash(
m_idHelperSvc->detElementHash(offId));
91 outputMeas->setReadoutElement(reElement);
92 outputMeas->setIdentifier(offId.get_compact());
93 outputMeas->setDoubletPhi(idHelper.doubletPhi(offId));
94 outputMeas->setGasGap(idHelper.gasGap(offId));
95 outputMeas->setStripNumber(idHelper.channel(offId));
96 outputMeas->setTimeOverThreshold(rdo->timeoverthr());
98 outputMeas->setTime(rdo->time());
104 for (
const auto& [offId, rdoPairs] : sortedRdos) {
109 CheckVector2D stripPos = design.center(idHelper.channel(offId));
114 const double stripLocX = (*stripPos).x();
115 const double stripCovX =
std::pow(design.stripPitch(), 2) / std::sqrt(12.);
118 xAOD::RpcStrip2D* measurement = strip2DHandle->push_back(std::make_unique<xAOD::RpcStrip2D>());
125 lCov(0,0) = stripCovX;
130 setMeasValues(measurement, rdoPairs[0], offId);
135 xAOD::RpcStrip* strip = stripHandle->push_back(std::make_unique<xAOD::RpcStrip>());
139 lCov(0,0) = stripCovX;
141 strip->setMeasuresPhi(idHelper.measuresPhi(offId));
143 strip->setMeasurement<1>(0, lPos, lCov);
144 setMeasValues(strip, rdoPairs[0] ? rdoPairs[0] : rdoPairs[1], offId);
146 return StatusCode::SUCCESS;
150 const std::vector<uint32_t>& robIds)
const {
157 ATH_CHECK(stripHandle.record(std::make_unique<xAOD::RpcStripContainer>(),
158 std::make_unique<xAOD::RpcStripAuxContainer>()));
162 ATH_CHECK(strip2DHandle.record(std::make_unique<xAOD::RpcStrip2DContainer>(),
163 std::make_unique<xAOD::RpcStrip2DAuxContainer>()));
166 return StatusCode::SUCCESS;