ATLAS Offline Software
Loading...
Searching...
No Matches
MDT_RegSelCondAlg Class Reference

#include <MDT_RegSelCondAlg.h>

Inheritance diagram for MDT_RegSelCondAlg:
Collaboration diagram for MDT_RegSelCondAlg:

Public Member Functions

 MDT_RegSelCondAlg (const std::string &name, ISvcLocator *pSvcLocator)
std::unique_ptr< RegSelSiLUTcreateTable (const EventContext &ctx, EventIDRange &id_range) const override
virtual StatusCode initialize () override
virtual StatusCode execute (const EventContext &ctx) const override
virtual bool isReEntrant () 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

Public Attributes

SG::ReadCondHandleKey< MuonMDT_CablingMapm_cablingKey { this, "Cabling", "MuonMDT_CablingMap", "Key of output MDT cabling map" }
SG::ReadCondHandleKey< MdtCondDbDatam_condKey

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.

Protected Attributes

SG::ReadCondHandleKey< MuonGM::MuonDetectorManagerm_detMgrKey
 MuonDetectorManager from the conditions store.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

Gaudi::Property< bool > m_printTable {this, "PrintTable", false}
Gaudi::Property< std::string > m_mangerName {this, "ManagerName", "", "Property no where used"}
SG::WriteCondHandleKey< IRegSelLUTCondDatam_tableKey { this, "RegSelLUT", "RegSelLUTCondData", "Region Selector lookup table" }
 Output conditions object.
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

Definition at line 18 of file MDT_RegSelCondAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ MDT_RegSelCondAlg()

MDT_RegSelCondAlg::MDT_RegSelCondAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 29 of file MDT_RegSelCondAlg.cxx.

29 :
30 MuonRegSelCondAlg( name, pSvcLocator )
31{
32 ATH_MSG_DEBUG( "MDT_RegSelCondAlg::MDT_RegSelCondAlg() " << name );
33}
#define ATH_MSG_DEBUG(x)
MuonRegSelCondAlg(const std::string &name, ISvcLocator *pSvcLocator)

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}

◆ createTable()

std::unique_ptr< RegSelSiLUT > MDT_RegSelCondAlg::createTable ( const EventContext & ctx,
EventIDRange & id_range ) const
overridevirtual

create the new lookup table

ne wlookup table

what is this loop over? This is awful code, this i parameter hides the "i" from loop over the iterators, or it did until I changed it

Implements MuonRegSelCondAlg.

Definition at line 48 of file MDT_RegSelCondAlg.cxx.

48 {
49
50 SG::ReadCondHandle<MuonMDT_CablingMap> cabling( m_cablingKey, ctx );
51
52 if( !cabling.range( id_range ) ) {
53 ATH_MSG_ERROR("Failed to retrieve validity range for " << cabling.key());
54 return {nullptr};
55 }
56
57 SG::ReadCondHandle<MuonGM::MuonDetectorManager> manager( m_detMgrKey, ctx );
58
59 if( !manager.range( id_range ) ) {
60 ATH_MSG_ERROR("Failed to retrieve validity range for " << manager.key());
61 return {nullptr};
62 }
63
64
65 const MdtCondDbData* conditions_ptr = nullptr;
66
67 if (!m_condKey.empty()){
68 SG::ReadCondHandle<MdtCondDbData> conditions(m_condKey, ctx);
69 if( !conditions.range( id_range ) ) {
70 ATH_MSG_ERROR("Failed to retrieve validity range for " << conditions.key());
71 return {nullptr};
72 }
73 conditions_ptr = conditions.cptr();
74 }
76
77
78
79 const MdtIdHelper* helper = manager->mdtIdHelper();
80
82 std::unique_ptr<RegSelSiLUT> lut = std::make_unique<RegSelSiLUT>();
83
84
85 IdContext ModuleContext = helper->module_context();
86
87 std::vector<Identifier>::const_iterator itr = helper->module_begin();
88 std::vector<Identifier>::const_iterator idlast = helper->module_end();
89
90 for ( ; itr!=idlast; ++itr ) {
91
92 Identifier Id = *itr;
93 IdentifierHash Idhash;
94
95 helper->get_hash(Id, Idhash, &ModuleContext);
96
97 ExpandedIdentifier exp_id;
98 if (helper->get_expanded_id( Id, exp_id, &ModuleContext)) {
99 ATH_MSG_DEBUG("Failed retrieving ExpandedIdentifier for PRD Identifier = " << Id.getString() << ". Skipping to the next PRD.");
100 continue;
101 }
102 if (conditions_ptr && !conditions_ptr->isGood(Id)) {
103 ATH_MSG_DEBUG("Channel is marked as dead");
104 continue;
105 }
106 int detid = ( exp_id[2]<0 ? -1 : 1 );
107 int layerid = exp_id[1]+1;
108
109 IdContext mdtChannelContext = helper->channel_context();
110
111 // get the element corresponding to multilayer = 1
112 const MuonGM::MdtReadoutElement* mdt1 = manager->getMdtReadoutElement(Id);
113 if (mdt1 == nullptr) {
114 continue;
115 }
116
117 Identifier Id2 = helper->channelID(Id, 2, 1, 1);
118
119 // get the element corresponding to multilayer = 2
120 const MuonGM::MdtReadoutElement* mdt2 = manager->getMdtReadoutElement(Id2);
121
122 double tubePitch = mdt1->tubePitch();
123
124 int ntlay = mdt1->getNLayers();
125 int ntubesl1 = mdt1->getNtubesperlayer();
126 int ntubesl2 = 0;
127
128 if (mdt2 != nullptr) ntubesl2 = mdt2->getNtubesperlayer();
129
130 Identifier Idv[4];
131 Idv[0] = helper->channelID(Id, 1, 1, 1);
132 Idv[1] = helper->channelID(Id, 1, 1, ntubesl1);
133 Idv[2] = helper->channelID(Id, 2, ntlay, 1);
134 Idv[3] = helper->channelID(Id, 2, ntlay, ntubesl2);
135
136 // std::cout<<" Number of tube layers "<<ntlay;
137 // std::cout<<" Number of tubes / layer (1 ,2) "<<ntubesl1<<", "<<ntubesl2;
138
139 double rmin = 99999999.;
140 double rmax = -99999999.;
141 double zmin = 99999999.;
142 double zmax = -99999999.;
143 double emin = 99999999.;
144 double emax = -99999999.;
145 double phimin = 999999.;
146 double phimax = -999999.;
147
148 double zpos21 = 0.;
149 Identifier Idsl = helper->channelID(Id, 1, 2, 1);
150 if (mdt1->barrel()) {
151 zpos21 = (mdt1->tubePos(Idsl)).z()-(mdt1->tubePos(Idv[0])).z();
152 }
153 else {
154 zpos21 = (mdt1->tubePos(Idsl)).perp()-(mdt1->tubePos(Idv[0])).perp();
155 }
156
159 // to a more sensibly named "itr"
160 for (int i=0; i<4; i++) {
161
162 const MuonGM::MdtReadoutElement* mdt = nullptr;
163
164 if ( i<2 ) mdt = mdt1;
165 else mdt = mdt2;
166 if (mdt == nullptr) {
167 // std::cout<<" element not found for index i = "<<i<<" --------- "<<std::endl;
168 if (i==2) {
169 Idv[2] = helper->channelID(Id, 1, ntlay, 1);
170 mdt = manager->getMdtReadoutElement(Idv[2]);
171 }
172 else if (i==3) {
173 Idv[3] = helper->channelID(Id, 1, ntlay, ntubesl1);
174 mdt = manager->getMdtReadoutElement(Idv[3]);
175 }
176 else {
177 // std::cout<<" Skipping element; i = "<<i<<" ----- "<<std::endl;
178 continue;
179 }
180
181 }
182
183 Amg::Vector3D mdtPos = mdt->tubePos(Idv[i]);
184
185 Amg::Vector3D mdtPos1 = mdtPos;
186 Amg::Vector3D mdtPos2 = mdtPos;
187
188 double scaleMin = (mdtPos.perp()-tubePitch/2.)/mdtPos.perp();
189 double scalePlus = (mdtPos.perp()+tubePitch/2.)/mdtPos.perp();
190
191 if (mdt->barrel()) {
192
193 // these are z ranges of the first or last tube layer
194 // mdtPos1.setZ(mdtPos.z()-tubePitch/2.);
195 // mdtPos2.setZ(mdtPos.z()+tubePitch/2.);
196 mdtPos1[2] = mdtPos.z()-tubePitch/2.;
197 mdtPos2[2] = mdtPos.z()+tubePitch/2.;
198
199 // correct the z ranges of the first or last tube layer to account for tube staggering
200 if (zpos21 > 1.) {
201 // mdtPos2.setZ(mdtPos2.z()+tubePitch/2.);
202 mdtPos2[2] = mdtPos2.z()+tubePitch/2.;
203 }
204 else if (zpos21 < -1.) {
205 //mdtPos1.setZ(mdtPos1.z()-tubePitch/2.);
206 mdtPos1[2] = mdtPos1.z()-tubePitch/2.;
207 }
208
209 if (i<2) {
210 mdtPos1[0] *= scaleMin;
211 mdtPos1[1] *= scaleMin;
212 mdtPos2[0] *= scaleMin;
213 mdtPos2[1] *= scaleMin;
214 // mdtPos1.setPerp(mdtPos.perp()-tubePitch/2.);
215 // mdtPos2.setPerp(mdtPos.perp()-tubePitch/2.);
216 }
217 else {
218 mdtPos1[0] *= scalePlus;
219 mdtPos1[1] *= scalePlus;
220 mdtPos2[0] *= scalePlus;
221 mdtPos2[1] *= scalePlus;
222 // mdtPos1.setPerp(mdtPos.perp()+tubePitch/2.);
223 // mdtPos2.setPerp(mdtPos.perp()+tubePitch/2.);
224 }
225 }
226 else {
227
228 // these are z ranges of the first or last tube layer
229 mdtPos1[0] *= scaleMin;
230 mdtPos1[1] *= scaleMin;
231 mdtPos2[0] *= scalePlus;
232 mdtPos2[1] *= scalePlus;
233 // mdtPos1.setPerp(mdtPos.perp()-tubePitch/2.);
234 // mdtPos2.setPerp(mdtPos.perp()+tubePitch/2.);
235 // correct the z ranges of the first or last tube layer to account for tube staggering
236 if (zpos21 > 1.) {
237 scalePlus = (mdtPos2.perp()+tubePitch/2.)/mdtPos2.perp();
238 mdtPos2[0] *= scalePlus;
239 mdtPos2[1] *= scalePlus;
240 // mdtPos2.setPerp(mdtPos2.perp()+tubePitch/2.);
241 }
242 else if (zpos21 < -1.) {
243 scaleMin = (mdtPos1.perp()-tubePitch/2.)/mdtPos1.perp();
244 mdtPos1[0] *= scaleMin;
245 mdtPos1[1] *= scaleMin;
246 // mdtPos1.setPerp(mdtPos1.perp()-tubePitch/2.);
247 }
248 if (i<2) {
249 if (mdt->sideA()){
250 // mdtPos1.setZ(mdtPos.z()-tubePitch/2.);
251 // mdtPos2.setZ(mdtPos.z()-tubePitch/2.);
252 mdtPos1[2] = mdtPos.z()-tubePitch/2.;
253 mdtPos2[2] = mdtPos.z()-tubePitch/2.;
254 }
255 else {
256 // mdtPos1.setZ(mdtPos.z()+tubePitch/2.);
257 // mdtPos2.setZ(mdtPos.z()+tubePitch/2.);
258 mdtPos1[2] = mdtPos.z()+tubePitch/2.;
259 mdtPos2[2] = mdtPos.z()+tubePitch/2.;
260 }
261 }
262 else {
263 if (mdt->sideA()) {
264 // mdtPos1.setZ(mdtPos.z()+tubePitch/2.);
265 // mdtPos2.setZ(mdtPos.z()+tubePitch/2.);
266 mdtPos1[2] = mdtPos.z()+tubePitch/2.;
267 mdtPos2[2] = mdtPos.z()+tubePitch/2.;
268 }
269 else {
270 // mdtPos1.setZ(mdtPos.z()-tubePitch/2.);
271 // mdtPos2.setZ(mdtPos.z()-tubePitch/2.);
272 mdtPos1[2] = mdtPos.z()-tubePitch/2.;
273 mdtPos2[2] = mdtPos.z()-tubePitch/2.;
274 }
275 }
276 }
277
278 double eminMod = 0.;
279 double emaxMod = 0.;
280 double zminMod = 0.;
281 double zmaxMod = 0.;
282 double rminMod = 0.;
283 double rmaxMod = 0.;
284 double dphi = 0.;
285
286 if (mdt->barrel()) {
287 eminMod = mdtPos1.eta();
288 emaxMod = mdtPos2.eta();
289
290 zminMod = mdtPos1.z();
291 zmaxMod = mdtPos2.z();
292
293 rminMod = mdtPos1.perp();
294 rmaxMod = mdtPos2.perp();
295
296 dphi = atan2(mdt->getSsize()/2., (mdtPos.perp()-tubePitch/2.));
297 }
298 else {
299 if (mdt->sideA()) {
300 eminMod = mdtPos2.eta();
301 emaxMod = mdtPos1.eta();
302
303 zminMod = mdtPos2.z();
304 zmaxMod = mdtPos1.z();
305
306 rminMod = mdtPos1.perp();
307 rmaxMod = mdtPos2.perp();
308 }
309 else {
310 eminMod = mdtPos1.eta();
311 emaxMod = mdtPos2.eta();
312
313 zminMod = mdtPos1.z();
314 zmaxMod = mdtPos2.z();
315
316 rminMod = mdtPos1.perp();
317 rmaxMod = mdtPos2.perp();
318 }
319
320 dphi = atan2(mdt->tubeLength(Idv[i])/2., (mdtPos.perp()-tubePitch/2.));
321 }
322
323 double pminMod = mdtPos.phi() - dphi;
324 double pmaxMod = mdtPos.phi() + dphi;
325
326 if (zminMod < zmin) {
327 zmin = zminMod;
328 }
329
330 if (zmaxMod > zmax) {
331 zmax = zmaxMod;
332 }
333
334 if (pminMod < phimin) phimin = pminMod;
335 if (pmaxMod > phimax) phimax = pmaxMod;
336 if (eminMod < emin) emin = eminMod;
337 if (emaxMod > emax) emax = emaxMod;
338 if (rminMod < rmin) rmin = rminMod;
339 if (rmaxMod > rmax) rmax = rmaxMod;
340 // std::cout<<" Module emin - emax "<<emin<<" "<<emax<<" phimin - phimax "<<phimin<<" "<<phimax<<std::endl;
341
342 }
343
344 // here define the eta and phi(0-2*pi) ranges
345 if (phimin<0) phimin = phimin + 2*M_PI;
346 if (phimax<0) phimax = phimax + 2*M_PI;
347
348 // calculate 4 sub detectors for the mdt, fore and aft barrel,
349 // and fore and aft endcaps
350
351 if ( mdt1->barrel() ) {
352 if ( mdt1->sideA() ) detid = 1;
353 else if ( mdt1->sideC() ) detid = -1;
354 }
355 else {
356 if ( mdt1->sideA() ) detid = 2;
357 else if ( mdt1->sideC() ) detid = -2;
358 }
359
360
361 // std::cout << "detid " << detid;
362
363 // if ( mdt1->barrel() ) detid = 0;
364 // if ( mdt1->sideA() ) detid = 1;
365 // if ( mdt1->sideC() ) detid = -1;
366
367 // std::cout << " -> " << detid << std::endl;
368
369 uint32_t RobId = cabling->getROBId(Idhash, msgStream());
370
371 RegSelModule m( zmin, zmax, rmin, rmax, phimin, phimax, layerid, detid, RobId, Idhash );
372
373 lut->addModule( m );
374
375 }
376
377
378 lut->initialise();
379
380 return lut;
381
382}
#define M_PI
#define ATH_MSG_ERROR(x)
std::string getString() const
Provide a string form of the identifier - hexadecimal.
SG::ReadCondHandleKey< MdtCondDbData > m_condKey
SG::ReadCondHandleKey< MuonMDT_CablingMap > m_cablingKey
bool isGood(const Identifier &Id) const
Returns if the identifier (tube/multiLayer/chamber) is masked in the conditions database.
Amg::Vector3D tubePos(const Identifier &id) const
Returns the global position of the given tube.
int getNLayers() const
Returns the number of tube layers inside the multilayer.
int getNtubesperlayer() const
Returns the number of tubes in each tube layer.
double tubePitch() const
Returns the distance between 2 tubes in a tube layer.
bool barrel() const
Returns whether the chamber is in the barrel (Assement on first later in stationName)
double tubeLength(const int tubeLayer, const int tube) const
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_detMgrKey
MuonDetectorManager from the conditions store.
Eigen::Matrix< double, 3, 1 > Vector3D
constexpr auto lut(Generator &&f)
setEventNumber uint32_t

◆ 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 MuonRegSelCondAlg::execute ( const EventContext & ctx) const
overridevirtualinherited

do stuff here ...

inpractice, this should never be called, although in serial athena,
because the implementation of the conditions behaviour is flawed in
the framework, this routine will be called every event (!) regardless
of whether it should be called or not so we need this check to
prevent unecessary code execution on out our side

create the new lookup table

create the conditions data for storage

leave this commented here since this is where it should really be, but we had to move it up in the code to handle the flawed conditions handling in the serial athena use case SG::WriteCondHandle<IRegSelLUTCondData> lutCondData( m_tableKey, ctx );

Definition at line 46 of file MuonRegSelCondAlg.cxx.

46 {
47 ATH_MSG_DEBUG("MuonRegSelCondAlg::execute() -- enter -- ");
48
50 ATH_MSG_DEBUG( "Creating region selector table " << m_tableKey );
51
52
53 SG::WriteCondHandle<IRegSelLUTCondData> lutCondData( m_tableKey, ctx );
54 if (lutCondData.isValid()) {
60 ATH_MSG_DEBUG("CondHandle " << lutCondData.fullKey() << " is already valid." );
61 return StatusCode::SUCCESS;
62 }
63
65
66 EventIDRange id_range;
67
68 std::unique_ptr<IRegSelLUT> rd = createTable( ctx, id_range );
69
70 if ( !rd ) return StatusCode::FAILURE;
71
72 ATH_MSG_DEBUG( "Initialising new map " );;
73
74 // write out new new LUT to a file if need be
75
76 if ( m_printTable ) {
77 if (const auto *lut = dynamic_cast<const RegSelSiLUT*>(rd.get())) {
78 lut->write( name()+".map" );
79 }
80 }
81
83
84 IRegSelLUTCondData* rcd = new IRegSelLUTCondData( std::move(rd) );
85
86 try {
91 if( lutCondData.record( id_range, rcd ).isFailure() ) {
92 ATH_MSG_ERROR( "Could not record " << m_tableKey
93 << " " << lutCondData.key()
94 << " with range " << id_range );
95 return StatusCode::FAILURE;
96 }
97 ATH_MSG_INFO( "RegSelCondAlg LUT recorded: " << m_tableKey);
98 }
99 catch (...) {
100 ATH_MSG_ERROR("MuonRegSelCondAlg::execute() failed to record table: " << m_tableKey);
101 return StatusCode::FAILURE;
102 }
103
104
105 ATH_MSG_DEBUG("MuonRegSelCondAlg::execute() -- exit -- ");
106
107 return StatusCode::SUCCESS;
108}
#define ATH_MSG_INFO(x)
RegSelCondData< IRegSelLUT > IRegSelLUTCondData
Gaudi::Property< bool > m_printTable
virtual std::unique_ptr< RegSelSiLUT > createTable(const EventContext &ctx, EventIDRange &id_range) const =0
SG::WriteCondHandleKey< IRegSelLUTCondData > m_tableKey
Output conditions object.

◆ 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.

◆ 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 MDT_RegSelCondAlg::initialize ( )
overridevirtual

Reimplemented from MuonRegSelCondAlg.

Definition at line 38 of file MDT_RegSelCondAlg.cxx.

38 {
40 ATH_CHECK(m_cablingKey.initialize());
41 ATH_CHECK(m_condKey.initialize(!m_condKey.empty()));
42 return StatusCode::SUCCESS;
43}
#define ATH_CHECK
Evaluate an expression and check for errors.
virtual StatusCode initialize() override

◆ 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()

◆ isReEntrant()

virtual bool MuonRegSelCondAlg::isReEntrant ( ) const
inlinefinaloverridevirtualinherited

Definition at line 40 of file MuonRegSelCondAlg.h.

40{ return false; }

◆ 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}
#define ATH_MSG_WARNING(x)
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_cablingKey

SG::ReadCondHandleKey<MuonMDT_CablingMap> MDT_RegSelCondAlg::m_cablingKey { this, "Cabling", "MuonMDT_CablingMap", "Key of output MDT cabling map" }

Definition at line 28 of file MDT_RegSelCondAlg.h.

29{ this, "Cabling", "MuonMDT_CablingMap", "Key of output MDT cabling map" };

◆ m_condKey

SG::ReadCondHandleKey<MdtCondDbData> MDT_RegSelCondAlg::m_condKey
Initial value:
{this, "Conditions",
"MdtCondDbData", "Key of the MDT conditions to reject dead tubes"}

Definition at line 31 of file MDT_RegSelCondAlg.h.

31 {this, "Conditions",
32 "MdtCondDbData", "Key of the MDT conditions to reject dead tubes"};

◆ m_detMgrKey

SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> MuonRegSelCondAlg::m_detMgrKey
protectedinherited
Initial value:
{
this, "DetectorManagerKey", "MuonDetectorManager",
"Key of input MuonDetectorManager condition data"}

MuonDetectorManager from the conditions store.

Definition at line 46 of file MuonRegSelCondAlg.h.

46 {
47 this, "DetectorManagerKey", "MuonDetectorManager",
48 "Key of input MuonDetectorManager condition data"};

◆ 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_mangerName

Gaudi::Property<std::string> MuonRegSelCondAlg::m_mangerName {this, "ManagerName", "", "Property no where used"}
privateinherited

Definition at line 52 of file MuonRegSelCondAlg.h.

52{this, "ManagerName", "", "Property no where used"};

◆ m_printTable

Gaudi::Property<bool> MuonRegSelCondAlg::m_printTable {this, "PrintTable", false}
privateinherited

Definition at line 51 of file MuonRegSelCondAlg.h.

51{this, "PrintTable", false};

◆ m_tableKey

SG::WriteCondHandleKey<IRegSelLUTCondData> MuonRegSelCondAlg::m_tableKey { this, "RegSelLUT", "RegSelLUTCondData", "Region Selector lookup table" }
privateinherited

Output conditions object.

Definition at line 55 of file MuonRegSelCondAlg.h.

56{ this, "RegSelLUT", "RegSelLUTCondData", "Region Selector lookup table" };

◆ 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: