 |
ATLAS Offline Software
|
Go to the documentation of this file.
31 return StatusCode::SUCCESS;
36 auto translatedSegments = std::make_unique<Trk::SegmentCollection>();
45 ATH_MSG_VERBOSE(
"Translated in total "<<translatedSegments->size()<<
" segments.");
48 ATH_CHECK(writeHandle.record(std::move(translatedSegments)));
49 return StatusCode::SUCCESS;
51 template <
class PrdType>
55 ATH_MSG_ERROR(
"Cannot fetch a prep data object as the container given for "<<
64 for (
const PrdType* prd : *coll) {
65 if (prd->identify() == prdId){
73 template <
class PrdType>
77 std::vector<std::unique_ptr<Trk::RIO_OnTrack>>& convMeasVec)
const {
82 if (!uncalib)
continue;
88 return StatusCode::FAILURE;
90 const Trk::Surface& surf{prd->detectorElement()->surface(prd->identify())};
93 std::unique_ptr<Trk::RIO_OnTrack> rot{};
94 if constexpr(std::is_same_v<PrdType, Muon::MdtPrepData>) {
95 rot = std::unique_ptr<Trk::RIO_OnTrack>{
m_mdtCreator->createRIO_OnTrack(*prd,
99 rot = std::unique_ptr<Trk::RIO_OnTrack>{
m_clusterCreator->createRIO_OnTrack(*prd,
105 return StatusCode::FAILURE;
108 convMeasVec.push_back(std::move(rot));
112 return StatusCode::FAILURE;
114 return StatusCode::SUCCESS;
136 std::vector<std::unique_ptr<Trk::RIO_OnTrack>> rots{};
137 unsigned int nPrec{0};
143 switch (spacePoint->type()) {
175 auto makeCompetingROT = [
this, &measurements](
RotVec& rots) {
179 std::list<const Trk::PrepRawData*> prds{};
180 for (
const std::unique_ptr<Trk::RIO_OnTrack>& rot : rots) {
187 RotVec etaPrds{}, phiPrds{};
188 for (std::unique_ptr<Trk::RIO_OnTrack>& rot : rots) {
191 std::vector<std::unique_ptr<Trk::RIO_OnTrack>>& pushMe{
m_idHelperSvc->measuresPhi(rot->identify())? phiPrds : etaPrds};
192 if (pushMe.size() && pushMe.back()->detectorElement() != rot->detectorElement()){
193 makeCompetingROT(pushMe);
195 pushMe.push_back(std::move(rot));
199 makeCompetingROT(etaPrds);
200 makeCompetingROT(phiPrds);
201 measurements.push_back(std::move(rot));
204 makeCompetingROT(etaPrds);
205 makeCompetingROT(phiPrds);
208 <<
". Do not convert segment due to potential puff.");
209 return StatusCode::SUCCESS;
211 ATH_MSG_DEBUG(
"Fetched in total "<<measurements.size()<<
" measurements. "<<std::endl<<
212 m_printer->print(measurements.stdcont()));
217 segSurf->globalToLocalDirection(
segment.direction(), segDir);
218 std::vector<Identifier>
holes{};
220 static_cast<double>(
segment.nDoF()),
232 auto legacySeg = std::make_unique<Muon::MuonSegment>(
Amg::Vector2D::Zero(), std::move(segDir),
234 std::move(measurements),
fitQuality.release());
237 <<
Amg::toString(legacySeg->globalDirection())<<std::endl<<
m_printer->print(legacySeg->containedMeasurements()));
238 outContainer.
push_back(std::move(legacySeg));
239 return StatusCode::SUCCESS;
Template for Muon PRD containers (which are basically collections of MuonPrepDataCollections).
const Identifier & identify(const UncalibratedMeasurement *meas)
Returns the associated identifier from the muon measurement.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
ToolHandle< Muon::IMuonClusterOnTrackCreator > m_clusterCreator
SG::ReadHandleKey< Muon::MMPrepDataContainer > m_keyMM
Placeholder for what will later be the muon segment EDM representation.
SG::WriteHandleKey< Trk::SegmentCollection > m_writeKey
const xAOD::UncalibratedMeasurement * secondaryMeasurement() const
PublicToolHandle< Muon::MuonEDMPrinterTool > m_printer
#define ATH_MSG_VERBOSE(x)
Property holding a SG store/key/clid from which a ReadHandle is made.
Amg::Transform3D getTransformFromRotTransl(Amg::RotationMatrix3D rot, Amg::Vector3D transl_vec)
std::unique_ptr< CalibratedSpacePoint > MeasType
Calibrated space point type.
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
::StatusCode StatusCode
StatusCode definition for legacy code.
const PrdType * fetchPrd(const Identifier &prdId, const Muon::MuonPrepDataContainerT< PrdType > *prdContainer) const
virtual bool type(PrepRawDataType type) const
Interface method checking the type.
StatusCode initialize() override final
Eigen::Affine3d Transform3D
SG::ReadHandleKey< Muon::sTgcPrepDataContainer > m_keysTgc
std::vector< std::unique_ptr< Trk::RIO_OnTrack > > RotVec
SG::ReadHandleKey< ActsGeometryContext > m_geoCtxKey
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Template to hold collections of MuonPrepRawData objects.
represents the three-dimensional global direction with respect to a planar surface frame.
SG::ReadHandleKey< Muon::TgcPrepDataContainer > m_keyTgc
Prep data container keys.
Include the GeoPrimitives which need to be put first.
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
constexpr int toInt(const ParamDefs p)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode convert(const EventContext &ctx, const MuonR4::Segment &segment, Trk::SegmentCollection &outContainer) const
Convert the R4 segment and fill the converted segment into the SegmentCollection.
FitQualityOnSurface fitQuality(const MultiComponentState &, const MeasurementBase &)
Method for determining the chi2 of the multi-component state and the number of degrees of freedom.
This header ties the generic definitions in this package.
virtual const T * indexFindPtr(IdentifierHash hashId) const override final
return pointer on the found entry or null if out of range using hashed index - fast version,...
SG::ReadHandleKeyArray< SegmentContainer > m_readKeys
#define ATH_MSG_WARNING(x)
The calibrated Space point is created during the calibration process.
SG::ReadHandleKey< Muon::MdtPrepDataContainer > m_keyMdt
StatusCode execute(const EventContext &ctx) const override final
ToolHandle< Muon::IMdtDriftCircleOnTrackCreator > m_mdtCreator
const SpacePoint * spacePoint() const
The pointer to the space point out of which this space point has been built.
SG::ReadHandleKey< Muon::RpcPrepDataContainer > m_keyRpc
StatusCode convertMeasurement(const MuonR4::Segment &segment, const CalibratedSpacePoint &spacePoint, const Muon::MuonPrepDataContainerT< PrdType > *prdContainer, RotVec &convMeasVec) const
const Identifier & identify() const
: Identifier of the primary measurement
ToolHandle< Muon::IMuonCompetingClustersOnTrackCreator > m_compClusterCreator
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)