ATLAS Offline Software
Loading...
Searching...
No Matches
MuonR4::PatternCnvAlg Class Reference

The MuonPatternCnvAlg converts the SegmentSeeds produced by the R4 pattern recognition chain into the segment seeds that can be consumed by the legacy muon segment maker. More...

#include <PatternCnvAlg.h>

Inheritance diagram for MuonR4::PatternCnvAlg:
Collaboration diagram for MuonR4::PatternCnvAlg:

Public Member Functions

StatusCode initialize () override final
StatusCode execute (const EventContext &ctx) const override final
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
virtual void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

template<class PrdType>
const PrdType * fetchPrd (const Identifier &prdId, const Muon::MuonPrepDataContainerT< PrdType > *prdContainer) const
StatusCode convertSeed (const EventContext &ctx, const SegmentSeedContainer &seedContainer, ::MuonPatternCombinationCollection &patternContainer, Muon::HoughDataPerSectorVec &houghDataSec) const
 Converts each segment seed first into a PatternCombination - serving as input for the legacy segment builder chain - and then to an entry of the hough data per sector.
void convertMaximum (const Muon::MuonPatternChamberIntersect &intersect, Muon::HoughDataPerSectorVec &houghDataSec) const
 : Converts the maximum back into the HoughDataPersector
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc
SG::ReadHandleKey< Muon::TgcPrepDataContainerm_keyTgc {this, "TgcKey", "TGC_MeasurementsAllBCs"}
 Prep data container keys.
SG::ReadHandleKey< Muon::RpcPrepDataContainerm_keyRpc {this, "RpcKey", "RPC_Measurements"}
SG::ReadHandleKey< Muon::MdtPrepDataContainerm_keyMdt {this, "MdtKey", "MDT_DriftCircles"}
SG::ReadHandleKey< Muon::sTgcPrepDataContainerm_keysTgc {this, "sTgcKey", "STGC_Measurements"}
SG::ReadHandleKey< Muon::MMPrepDataContainerm_keyMM {this, "MmKey", "MM_Measurements"}
SG::ReadHandleKeyArray< SegmentSeedContainerm_readKeys {this, "Patterns", {"MuonHoughStationSegmentSeeds"}}
SG::ReadHandleKey< ActsTrk::GeometryContextm_geoCtxKey {this, "AlignmentKey", "ActsAlignment", "cond handle key"}
SG::WriteHandleKey<::MuonPatternCombinationCollectionm_combiKey {this, "PatternCombiKey", "MuonLayerHoughCombis"}
SG::WriteHandleKey< Muon::HoughDataPerSectorVecm_dataPerSecKey
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

The MuonPatternCnvAlg converts the SegmentSeeds produced by the R4 pattern recognition chain into the segment seeds that can be consumed by the legacy muon segment maker.

Definition at line 22 of file PatternCnvAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ convertMaximum()

void MuonR4::PatternCnvAlg::convertMaximum ( const Muon::MuonPatternChamberIntersect & intersect,
Muon::HoughDataPerSectorVec & houghDataSec ) const
private

: Converts the maximum back into the HoughDataPersector

Definition at line 132 of file PatternCnvAlg.cxx.

133 {
134
135 if (houghDataSec.vec.empty()) {
136 constexpr unsigned int nSectors = 16;
137 houghDataSec.vec.resize(nSectors);
138 for (unsigned int i = 0; i < nSectors; ++i) {
139 houghDataSec.vec[i].sector = i + 1;
140 }
141 }
142
143 const Identifier chId = intersect.prepRawDataVec()[0]->identify();
144 const DetIdx_t regionIndex = m_idHelperSvc->regionIndex(chId);
145 const LayIdx_t layerIndex = m_idHelperSvc->layerIndex(chId);
146 const unsigned int sectorLayerHash = Muon::MuonStationIndex::sectorLayerHash(regionIndex, layerIndex);
147 const int sector = m_idHelperSvc->sector(chId);
148 const bool barrel = !m_idHelperSvc->isEndcap(chId);
149
150 auto convertedMax = std::make_unique<LegacyMax>();
151 convertedMax->hough = &houghDataSec.detectorHoughTransforms.hough(sector, regionIndex, layerIndex);
152 convertedMax->theta = intersect.intersectDirection().theta();
153 for (const Trk::PrepRawData* prd : intersect.prepRawDataVec()) {
154 std::unique_ptr<MuonHough::Hit> hit{};
155 Amg::Vector3D gp{Amg::Vector3D::Zero()};
156 if (m_idHelperSvc->isMdt(prd->identify())){
157 gp = static_cast<const Muon::MdtPrepData*>(prd)->globalPosition();
158 } else {
159 gp = static_cast<const Muon::MuonCluster*>(prd)->globalPosition();
160 }
161
162 // TODO: Might need some fine-tuning if the hough hit information is needed downstream
163 hit = std::make_unique<MuonHough::Hit>(0, barrel ? gp.perp() : gp.z(),
164 barrel ? gp.z() : gp.perp(),
165 barrel ? gp.z() : gp.perp(),
166 1., nullptr, prd);
167 convertedMax->hits.emplace_back(std::move(hit));
168 }
169 houghDataSec.vec[sector-1].maxVec[sectorLayerHash].push_back(std::move(convertedMax));
170 }
MuonLayerHough & hough(int sector, DetRegIdx region, LayIdx layer)
access precision transform
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
std::optional< double > intersect(const AmgVector(N)&posA, const AmgVector(N)&dirA, const AmgVector(N)&posB, const AmgVector(N)&dirB)
Calculates the point B' along the line B that's closest to a second line A.
Eigen::Matrix< double, 3, 1 > Vector3D
unsigned int sectorLayerHash(DetectorRegionIndex detectorRegionIndex, LayerIndex layerIndex)
create a hash out of region and layer
std::vector< HoughDataPerSec > vec
MuonHough::MuonDetectorHough detectorHoughTransforms

◆ convertSeed()

StatusCode MuonR4::PatternCnvAlg::convertSeed ( const EventContext & ctx,
const SegmentSeedContainer & seedContainer,
::MuonPatternCombinationCollection & patternContainer,
Muon::HoughDataPerSectorVec & houghDataSec ) const
private

Converts each segment seed first into a PatternCombination - serving as input for the legacy segment builder chain - and then to an entry of the hough data per sector.

Parameters
ctxThe event context of the current event
seedContainerSegment seed container to convert
patternContainerOutput patternCombination collection container
houghDataSecHough input data per sector.

Definition at line 55 of file PatternCnvAlg.cxx.

58 {
59
60 const Muon::RpcPrepDataContainer* rpcPrds{nullptr};
61 const Muon::MdtPrepDataContainer* mdtPrds{nullptr};
62 const Muon::TgcPrepDataContainer* tgcPrds{nullptr};
63 const Muon::sTgcPrepDataContainer* stgcPrds{nullptr};
64 const Muon::MMPrepDataContainer* mmPrds{nullptr};
65 ATH_CHECK(SG::get(mdtPrds, m_keyMdt, ctx));
66 ATH_CHECK(SG::get(rpcPrds, m_keyRpc, ctx));
67 ATH_CHECK(SG::get(tgcPrds, m_keyTgc, ctx));
68 ATH_CHECK(SG::get(stgcPrds, m_keysTgc, ctx));
69 ATH_CHECK(SG::get(mmPrds, m_keyMM, ctx));
70
71 const ActsTrk::GeometryContext* gctx{nullptr};
72 ATH_CHECK(SG::get(gctx, m_geoCtxKey, ctx));
73
74
75
76 for (const SegmentSeed* seed: seedContainer) {
77 const Amg::Transform3D& localToGlobal = seed->msSector()->localToGlobalTrans(*gctx);
78
79 std::unordered_set<Identifier> channelsInMax{};
80 for (const HoughHitType& hit : seed->getHitsInMax()) {
81 channelsInMax.insert(hit->identify());
82 if (hit->secondaryMeasurement()) {
83 channelsInMax.insert(xAOD::identify(hit->secondaryMeasurement()));
84 }
85 }
86 std::vector<const Trk::PrepRawData*> trkHits{};
87 trkHits.reserve(channelsInMax.size());
89 for (const Identifier& chId : channelsInMax){
90 switch (m_idHelperSvc->technologyIndex(chId)){
91 case techIdx_t::MDT:
92 trkHits.push_back(fetchPrd(chId, mdtPrds));
93 break;
94 case techIdx_t::RPC:
95 trkHits.push_back(fetchPrd(chId, rpcPrds));
96 break;
97 case techIdx_t::TGC:
98 trkHits.push_back(fetchPrd(chId, tgcPrds));
99 break;
100 case techIdx_t::MM:
101 trkHits.push_back(fetchPrd(chId, mmPrds));
102 break;
103 case techIdx_t::STGC:
104 trkHits.push_back(fetchPrd(chId, stgcPrds));
105 break;
106 default:
107 ATH_MSG_WARNING("Cscs are not part of the new paradigms. Where are they now coming from? "
108 <<m_idHelperSvc->toString(chId));
109 };
110 }
111 if (std::find(trkHits.begin(), trkHits.end(), nullptr) != trkHits.end()){
112 ATH_MSG_ERROR("Errors during the Prd conversion occured");
113 return StatusCode::FAILURE;
114 }
115 const Amg::Vector3D maxPos{seed->localPosition()};
116 const Amg::Vector3D locDir{seed->localDirection()};
117
118 Trk::TrackSurfaceIntersection isect{localToGlobal * maxPos, localToGlobal.linear()*locDir,0.};
119 ATH_MSG_VERBOSE("Intersection at "<<m_idHelperSvc->toStringChamber(trkHits[0]->identify())<<" "<<Amg::toString(isect.position())<<" "<<Amg::toString(isect.direction())
120 <<Amg::angle(isect.position(), isect.direction()) / Gaudi::Units::deg );
121 Muon::MuonPatternChamberIntersect chamberIsect{std::move(isect), std::move(trkHits)};
122
123 convertMaximum(chamberIsect, houghDataSec);
124 std::vector<Muon::MuonPatternChamberIntersect> chamberData{std::move(chamberIsect)};
125
126 auto patternCombi = std::make_unique<Muon::MuonPatternCombination>(nullptr, std::move(chamberData));
127 patternContainer.push_back(std::move(patternCombi));
128 }
129
130 return StatusCode::SUCCESS;
131 }
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
const PrdType * fetchPrd(const Identifier &prdId, const Muon::MuonPrepDataContainerT< PrdType > *prdContainer) const
void convertMaximum(const Muon::MuonPatternChamberIntersect &intersect, Muon::HoughDataPerSectorVec &houghDataSec) const
: Converts the maximum back into the HoughDataPersector
SG::ReadHandleKey< Muon::sTgcPrepDataContainer > m_keysTgc
SG::ReadHandleKey< Muon::MdtPrepDataContainer > m_keyMdt
SG::ReadHandleKey< Muon::RpcPrepDataContainer > m_keyRpc
SG::ReadHandleKey< Muon::MMPrepDataContainer > m_keyMM
SG::ReadHandleKey< Muon::TgcPrepDataContainer > m_keyTgc
Prep data container keys.
SG::ReadHandleKey< ActsTrk::GeometryContext > m_geoCtxKey
const Amg::Vector3D & direction() const
Method to retrieve the direction at the Intersection.
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
double angle(const Amg::Vector3D &v1, const Amg::Vector3D &v2)
calculates the opening angle between two vectors
Eigen::Affine3d Transform3D
const SpacePoint * HoughHitType
TechnologyIndex
enum to classify the different layers in the muon spectrometer
MuonPrepDataContainerT< RpcPrepData > RpcPrepDataContainer
MuonPrepDataContainerT< TgcPrepData > TgcPrepDataContainer
MuonPrepDataContainerT< MdtPrepData > MdtPrepDataContainer
MuonPrepDataContainerT< sTgcPrepData > sTgcPrepDataContainer
MuonPrepDataContainerT< MMPrepData > MMPrepDataContainer
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
const Identifier & identify(const UncalibratedMeasurement *meas)
Returns the associated identifier from the muon measurement.

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode MuonR4::PatternCnvAlg::execute ( const EventContext & ctx) const
finaloverride

Definition at line 33 of file PatternCnvAlg.cxx.

33 {
34
35
36 auto translatedPatterns = std::make_unique<MuonPatternCombinationCollection>();
37 auto translatedHough = std::make_unique<Muon::HoughDataPerSectorVec>();
38
39 for (const SG::ReadHandleKey<SegmentSeedContainer>& key : m_readKeys) {
40 const SegmentSeedContainer* translateMe{nullptr};
41 ATH_CHECK(SG::get(translateMe, key, ctx));
42 ATH_CHECK(convertSeed(ctx, *translateMe, * translatedPatterns, *translatedHough));
43
44 }
45
46 SG::WriteHandle<MuonPatternCombinationCollection> patternHandle{m_combiKey, ctx};
47 ATH_CHECK(patternHandle.record(std::move(translatedPatterns)));
48
49 SG::WriteHandle<Muon::HoughDataPerSectorVec> houghDataHandle{m_dataPerSecKey, ctx};
50 ATH_CHECK(houghDataHandle.record(std::move(translatedHough)));
51
52
53 return StatusCode::SUCCESS;
54 }
SG::WriteHandleKey<::MuonPatternCombinationCollection > m_combiKey
SG::ReadHandleKeyArray< SegmentSeedContainer > m_readKeys
StatusCode convertSeed(const EventContext &ctx, const SegmentSeedContainer &seedContainer, ::MuonPatternCombinationCollection &patternContainer, Muon::HoughDataPerSectorVec &houghDataSec) const
Converts each segment seed first into a PatternCombination - serving as input for the legacy segment ...
SG::WriteHandleKey< Muon::HoughDataPerSectorVec > m_dataPerSecKey
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
DataVector< SegmentSeed > SegmentSeedContainer

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}
An algorithm that can be simultaneously executed in multiple threads.

◆ fetchPrd()

template<class PrdType>
const PrdType * MuonR4::PatternCnvAlg::fetchPrd ( const Identifier & prdId,
const Muon::MuonPrepDataContainerT< PrdType > * prdContainer ) const
private

Definition at line 174 of file PatternCnvAlg.cxx.

175 {
176 if (!prdContainer) {
177 ATH_MSG_ERROR("Cannot fetch a prep data object as the container given for "<<
178 m_idHelperSvc->toString(prdId)<<" is a nullptr");
179 return nullptr;
180 }
181 const Muon::MuonPrepDataCollection<PrdType>* coll = prdContainer->indexFindPtr(m_idHelperSvc->moduleHash(prdId));
182 if (!coll) {
183 ATH_MSG_ERROR("No prep data collection where "<<m_idHelperSvc->toString(prdId)<<" can reside in.");
184 return nullptr;
185 }
186 for (const PrdType* prd : *coll) {
187 if (prd->identify() == prdId){
188 return prd;
189 }
190 }
191 ATH_MSG_ERROR("There is no measurement "<<m_idHelperSvc->toString(prdId));
192 return nullptr;
193 }
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,...

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ initialize()

StatusCode MuonR4::PatternCnvAlg::initialize ( )
finaloverride

Definition at line 17 of file PatternCnvAlg.cxx.

17 {
18 ATH_CHECK(m_idHelperSvc.retrieve());
19
20 ATH_CHECK(m_keyTgc.initialize(!m_keyTgc.empty()));
21 ATH_CHECK(m_keyRpc.initialize(!m_keyRpc.empty()));
22 ATH_CHECK(m_keyMdt.initialize(!m_keyMdt.empty()));
23 ATH_CHECK(m_keysTgc.initialize(!m_keysTgc.empty()));
24 ATH_CHECK(m_keyMM.initialize(!m_keyMM.empty()));
25
26 ATH_CHECK(m_combiKey.initialize());
27 ATH_CHECK(m_dataPerSecKey.initialize());
28 ATH_CHECK(m_readKeys.initialize());
29 ATH_CHECK(m_geoCtxKey.initialize());
30 return StatusCode::SUCCESS;
31 }

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_combiKey

SG::WriteHandleKey<::MuonPatternCombinationCollection> MuonR4::PatternCnvAlg::m_combiKey {this, "PatternCombiKey", "MuonLayerHoughCombis"}
private

Definition at line 72 of file PatternCnvAlg.h.

72{this, "PatternCombiKey", "MuonLayerHoughCombis"};

◆ m_dataPerSecKey

SG::WriteHandleKey<Muon::HoughDataPerSectorVec> MuonR4::PatternCnvAlg::m_dataPerSecKey
private
Initial value:
{this, "HoughDataPerSecKey",
"HoughDataPerSectorVec", "HoughDataPerSectorVec key"}

Definition at line 73 of file PatternCnvAlg.h.

73 {this, "HoughDataPerSecKey",
74 "HoughDataPerSectorVec", "HoughDataPerSectorVec key"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_geoCtxKey

SG::ReadHandleKey<ActsTrk::GeometryContext> MuonR4::PatternCnvAlg::m_geoCtxKey {this, "AlignmentKey", "ActsAlignment", "cond handle key"}
private

Definition at line 70 of file PatternCnvAlg.h.

70{this, "AlignmentKey", "ActsAlignment", "cond handle key"};

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> MuonR4::PatternCnvAlg::m_idHelperSvc
private
Initial value:
{this, "MuonIdHelperSvc",
"Muon::MuonIdHelperSvc/MuonIdHelperSvc"}

Definition at line 60 of file PatternCnvAlg.h.

60 {this, "MuonIdHelperSvc",
61 "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};

◆ m_keyMdt

SG::ReadHandleKey<Muon::MdtPrepDataContainer> MuonR4::PatternCnvAlg::m_keyMdt {this, "MdtKey", "MDT_DriftCircles"}
private

Definition at line 65 of file PatternCnvAlg.h.

65{this, "MdtKey", "MDT_DriftCircles"};

◆ m_keyMM

SG::ReadHandleKey<Muon::MMPrepDataContainer> MuonR4::PatternCnvAlg::m_keyMM {this, "MmKey", "MM_Measurements"}
private

Definition at line 67 of file PatternCnvAlg.h.

67{this, "MmKey", "MM_Measurements"};

◆ m_keyRpc

SG::ReadHandleKey<Muon::RpcPrepDataContainer> MuonR4::PatternCnvAlg::m_keyRpc {this, "RpcKey", "RPC_Measurements"}
private

Definition at line 64 of file PatternCnvAlg.h.

64{this, "RpcKey", "RPC_Measurements"};

◆ m_keysTgc

SG::ReadHandleKey<Muon::sTgcPrepDataContainer> MuonR4::PatternCnvAlg::m_keysTgc {this, "sTgcKey", "STGC_Measurements"}
private

Definition at line 66 of file PatternCnvAlg.h.

66{this, "sTgcKey", "STGC_Measurements"};

◆ m_keyTgc

SG::ReadHandleKey<Muon::TgcPrepDataContainer> MuonR4::PatternCnvAlg::m_keyTgc {this, "TgcKey", "TGC_MeasurementsAllBCs"}
private

Prep data container keys.

Definition at line 63 of file PatternCnvAlg.h.

63{this, "TgcKey", "TGC_MeasurementsAllBCs"};

◆ m_readKeys

SG::ReadHandleKeyArray<SegmentSeedContainer> MuonR4::PatternCnvAlg::m_readKeys {this, "Patterns", {"MuonHoughStationSegmentSeeds"}}
private

Definition at line 69 of file PatternCnvAlg.h.

69{this, "Patterns", {"MuonHoughStationSegmentSeeds"}};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: