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

#include <LArRawDataReadingAlg.h>

Inheritance diagram for LArRawDataReadingAlg:
Collaboration diagram for LArRawDataReadingAlg:

Public Member Functions

 LArRawDataReadingAlg (const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize () override
StatusCode execute (const EventContext &ctx) const override
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

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

Private Attributes

SG::WriteHandleKey< LArRawChannelContainerm_rawChannelKey
SG::WriteHandleKey< LArDigitContainerm_digitKey {this,"LArDigitKey","FREE"}
SG::WriteHandleKey< LArFebHeaderContainerm_febHeaderKey {this,"LArFebHeaderKey","LArFebHeader"}
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey {this, "eventInfoKey", "EventInfo", "Key for EventInfo object"}
ServiceHandle< IROBDataProviderSvcm_robDataProviderSvc {this,"ROBDataProviderSvc","ROBDataProviderSvc"}
BooleanProperty m_verifyChecksum {this,"VerifyChecksum",true,"Calculate and compare checksums to detect data transmission errors"}
BooleanProperty m_failOnCorruption {this,"FailOnCorruption",false,"Return FAILURE if data corruption is found"}
const LArOnlineIDm_onlineId =nullptr
bool m_doRawChannels =true
bool m_doDigits =true
bool m_doFebHeaders =true
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 25 of file LArRawDataReadingAlg.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

◆ LArRawDataReadingAlg()

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

Definition at line 23 of file LArRawDataReadingAlg.cxx.

23 :
24 AthReentrantAlgorithm(name, 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}

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

Definition at line 43 of file LArRawDataReadingAlg.cxx.

43 {
44 LArRawChannelContainer* rawChannels=nullptr;
45 LArDigitContainer* digits=nullptr;
46 LArFebHeaderContainer* febHeaders=nullptr;
47
48 if (m_doRawChannels) {
49 SG::WriteHandle<LArRawChannelContainer> rawChannelsHdl(m_rawChannelKey,ctx);
50 ATH_CHECK(rawChannelsHdl.record(std::make_unique<LArRawChannelContainer>()));
51 rawChannels=rawChannelsHdl.ptr();
52 rawChannels->reserve(182468); //Total number of LAr readout channels
53 }
54
55 if (m_doDigits) {
56 SG::WriteHandle<LArDigitContainer> digitsHdl(m_digitKey,ctx);
57 ATH_CHECK(digitsHdl.record(std::make_unique<LArDigitContainer>()));
58 digits=digitsHdl.ptr();
59 digits->reserve(1000); //Approximate number of Digits above threshold
60 }
61
62 if (m_doFebHeaders) {
63 SG::WriteHandle<LArFebHeaderContainer> febHeadersHdl(m_febHeaderKey,ctx);
64 ATH_CHECK(febHeadersHdl.record(std::make_unique<LArFebHeaderContainer>()));
65 febHeaders=febHeadersHdl.ptr();
66 febHeaders->reserve(1524); //Total number of LAr Front End Boards
67 }
68
69 //Get full events and filter out LAr ROBs
70 const RawEvent* fullEvent=m_robDataProviderSvc->getEvent(ctx);
71 std::map<eformat::SubDetectorGroup, std::vector<const uint32_t*> > rawEventTOC;
72 eformat::helper::build_toc(*fullEvent, rawEventTOC);
73 auto larRobs=rawEventTOC.find(eformat::LAR);
74 if (larRobs==rawEventTOC.end()) {
75 ATH_MSG_DEBUG("No LAr data found in this event. Recording empty LArRawChannelContainer");
76 return StatusCode::SUCCESS;
77 }
78
79
80 std::unique_ptr<LArRodBlockStructure> rodBlock;
81 uint16_t rodMinorVersion=0x0;
82 uint32_t rodBlockType=0x0;
83
84
85 for (const uint32_t* robPtr : larRobs->second) {
87 ATH_MSG_VERBOSE("Decoding ROB fragment 0x" << std::hex << rob.rob_source_id () << " with " << std::dec << rob.rod_fragment_size_word() << " ROB words");
88
89 if (rob.rod_fragment_size_word() <3) {
91 ATH_MSG_ERROR("Encountered corrupt ROD fragment, less than 3 words!");
92 return StatusCode::FAILURE;
93 }else {
94 continue;
95 }
96 } else if(rob.rob_source_id()& 0x1000 ){
97 //ATH_MSG_DEBUG(" skip Latome fragment with source ID "<< std::hex << rob.rob_source_id()
98 rodBlock=nullptr;
99 continue;
100 } else if(!(rob.rod_source_id()>>12& 0x0F) //0xnn0nnn must be
101 && !((rob.rod_source_id()>>20) == 4) ){ //0x4nnnnn must be
102
103 ATH_MSG_WARNING("Found not LAr fragment " << " event: "<<ctx.eventID().event_number());
104 SG::ReadHandle<xAOD::EventInfo> eventInfo (m_eventInfoKey, ctx);
105 ATH_MSG_WARNING("Rob source id.: 0x"<< std::hex << rob.rob_source_id () <<std::dec <<" ROD Source id: 0x"<<std::hex<<rob.rod_source_id()<<std::dec<<" Lvl1ID: "<<eventInfo->extendedLevel1ID());
106 continue;
107 }
108
109
110 eformat::helper::Version ver(rob.rod_version());
111 //(re-)init rodBlock only once per event or if (very unlikly or even impossible) some FEBs have a different firmware
112 if (rodBlock==nullptr || rodMinorVersion !=ver.minor_version() || rodBlockType!=(rob.rod_detev_type()&0xff)) {
113 rodMinorVersion=ver.minor_version();
114 rodBlockType=rob.rod_detev_type()&0xff;
115 ATH_MSG_VERBOSE("Found version " << rodMinorVersion << " of Rod Block Type " << rodBlockType);
116 if (rodBlockType==4) { //Physics mode
117 switch(rodMinorVersion) {
118 case 12: //Physics mode v6 09.03.2011 for LHC
119 rodBlock.reset(new LArRodBlockPhysicsV6);
120 break;
121 case 11: //Physics mode v5 16.06.2008 for LHC
122 case 10: //Physics mode v5 16.06.2008 for LHC
123 rodBlock.reset(new LArRodBlockPhysicsV5);
124 break;
125 default: // Unknown version of rod block type 4 (Physics mode)
126 if (m_failOnCorruption) {
127 ATH_MSG_ERROR("Found unsupported ROD Block version " << rodMinorVersion
128 << " of ROD block type " << rodBlockType << ". ROD Source id: 0x" <<std::hex<<rob.rod_source_id());
129 return StatusCode::FAILURE;
130 }
131 else {
132 ATH_MSG_WARNING("Found unsupported ROD Block version " << rodMinorVersion
133 << " of ROD block type " << rodBlockType << ". ROD Source id: 0x" <<std::hex<<rob.rod_source_id());
134 continue;
135 }
136 }// end switch(rodMinorVersion)
137 }//end rodBlockType==4 (physics mode)
138 else if (rodBlockType==2) { //Transparent mode
139 switch(rodMinorVersion) {
140 case 4:
141 rodBlock.reset(new LArRodBlockTransparentV0<LArRodBlockHeaderTransparentV0>);
142 break;
143 case 12:
144 rodBlock.reset(new LArRodBlockCalibrationV3);
145 break;
146 default:
147 ATH_MSG_WARNING("Found unsupported ROD Block version " << rodMinorVersion
148 << " of ROD block type " << rodBlockType);
149 return m_failOnCorruption ? StatusCode::FAILURE : StatusCode::SUCCESS;
150 }
151 }
152 }//End if need to re-init RodBlock
153
154 const uint32_t* pData=rob.rod_data();
155 const uint32_t nData=rob.rod_ndata();
156 if (nData==0) {
157 if (m_failOnCorruption) {
158 ATH_MSG_ERROR("ROD 0x"<<std::hex<<rob.rod_source_id() << std::dec << " reports data block size 0");
159 return StatusCode::FAILURE;
160 }
161 else {
162 ATH_MSG_WARNING("ROD 0x"<<std::hex<<rob.rod_source_id() << std::dec << " reports data block size 0");
163 continue; //Jump to next ROD
164 }
165 }
166
167 if (!rodBlock || !rodBlock->setFragment(pData,nData)) {
168 if (m_failOnCorruption) {
169 ATH_MSG_ERROR("Failed to assign fragment pointer to LArRodBlockStructure");
170 return StatusCode::FAILURE;
171 }
172 else {
173 ATH_MSG_WARNING("Failed to assign fragment pointer to LArRodBlockStructure");
174 continue; // Jump to next ROD
175 }
176 }
177
178 if(m_verifyChecksum) {
179 const uint32_t onsum = rodBlock->onlineCheckSum();
180 const uint32_t offsum = rodBlock->offlineCheckSum();
181 if(onsum!=offsum) {
182 if (m_failOnCorruption) {
183 ATH_MSG_ERROR("Checksum error:");
184 ATH_MSG_ERROR("online checksum = 0x" << MSG::hex << onsum);
185 ATH_MSG_ERROR("offline checksum = 0x" << MSG::hex << offsum << MSG::dec);
186 return StatusCode::FAILURE;
187 } else {
188 continue; //Jump to the next ROD-block
189 }
190 }
191 }
192
193 //Loop over FEBs in ROD:
194 do {
195 HWIdentifier fId(Identifier32(rodBlock->getFEBID()));
196 if (!m_onlineId->isValidId(fId)) {
197 if (m_failOnCorruption){
198 ATH_MSG_ERROR("Invalid FEB identifer 0x" << std::hex << fId.get_identifier32().get_compact());
199 return StatusCode::FAILURE;
200 } else {
201 ATH_MSG_WARNING("Invalid FEB identifer 0x" << std::hex << fId.get_identifier32().get_compact());
202 continue; //Jump to next FEB
203 }
204 }
205 const int NthisFebChannel=m_onlineId->channelInSlotMax(fId);
206
207 //Decode RawChanels (if requested)
208 if (m_doRawChannels) {
209 int32_t energy;
210 int32_t time;
211 int32_t quality;
213 int fcNb;
214 while (rodBlock->getNextEnergy(fcNb,energy,time,quality,gain)) {
215 if (fcNb>=NthisFebChannel)
216 continue;
217
218 HWIdentifier cId = m_onlineId->channel_Id(fId,fcNb);
219 uint16_t iquality = 0;
220 uint16_t iprovenance = LArProv::DSPCALC; //0x1000
221 if (quality>0) {
222 iprovenance |= LArProv::QTPRESENT; //0x2000
223 iquality = (quality & 0xFFFF);
224 }
225 rawChannels->emplace_back(cId, energy, time, iquality, iprovenance, (CaloGain::CaloGain)gain);
226 }//end getNextEnergyLoop
227 }//end if m_doRawChannels
228
229 //Decode LArDigits (if requested)
230 if (m_doDigits) {
232 int fcNb;
233 std::vector<short> samples;
234 while (rodBlock->getNextRawData(fcNb,samples,gain)) {
235 if (fcNb>=NthisFebChannel)
236 continue;
237 if (samples.size()==0) continue; // Ignore missing cells
238 HWIdentifier cId = m_onlineId->channel_Id(fId,fcNb);
239 digits->emplace_back(new LArDigit(cId, (CaloGain::CaloGain)gain, std::move(samples)));
240 samples.clear();
241 }//end getNextRawData loop
242 }//end if m_doDigits
243
244 //Decode FebHeaders (if requested)
245 if (m_doFebHeaders) {
246 std::unique_ptr<LArFebHeader> larFebHeader(new LArFebHeader(fId));
247 LArFebHeaderReader::fillFebHeader(larFebHeader.get(),rodBlock.get(),rob);
248 febHeaders->push_back(std::move(larFebHeader));
249 }//end if m_doFebHeaders
250
251 }while (rodBlock->nextFEB()); //Get NextFeb
252 } //end loop over ROBs
253 return StatusCode::SUCCESS;
254}
#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)
#define ATH_MSG_DEBUG(x)
Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Old LArRawChannelContainer
Definition LArTPCnv.cxx:86
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition RawEvent.h:37
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
value_type emplace_back(value_type pElem)
Add an element to the end of the collection.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
BooleanProperty m_failOnCorruption
SG::WriteHandleKey< LArRawChannelContainer > m_rawChannelKey
const LArOnlineID * m_onlineId
ServiceHandle< IROBDataProviderSvc > m_robDataProviderSvc
SG::WriteHandleKey< LArFebHeaderContainer > m_febHeaderKey
BooleanProperty m_verifyChecksum
SG::WriteHandleKey< LArDigitContainer > m_digitKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
time(flags, cells_name, *args, **kw)
void fillFebHeader(LArFebHeader *lfh, const LArRodBlockStructure *bl, const ROBFragment &robFrag)
Fill info for one FEB Header.
eformat::ROBFragment< PointerType > ROBFragment
Definition RawEvent.h:27
setWord1 uint16_t
setEventNumber uint32_t

◆ 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 LArRawDataReadingAlg::initialize ( )
override

Definition at line 26 of file LArRawDataReadingAlg.cxx.

26 {
29
30 m_doDigits = !m_digitKey.empty();
31 ATH_CHECK(m_digitKey.initialize(m_doDigits));
32
35
36 ATH_CHECK(m_eventInfoKey.initialize() );
37
39 ATH_CHECK(detStore()->retrieve(m_onlineId,"LArOnlineID"));
40 return StatusCode::SUCCESS;
41}
const ServiceHandle< StoreGateSvc > & detStore() const
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ 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_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_digitKey

SG::WriteHandleKey<LArDigitContainer> LArRawDataReadingAlg::m_digitKey {this,"LArDigitKey","FREE"}
private

Definition at line 36 of file LArRawDataReadingAlg.h.

36{this,"LArDigitKey","FREE"};

◆ m_doDigits

bool LArRawDataReadingAlg::m_doDigits =true
private

Definition at line 53 of file LArRawDataReadingAlg.h.

◆ m_doFebHeaders

bool LArRawDataReadingAlg::m_doFebHeaders =true
private

Definition at line 54 of file LArRawDataReadingAlg.h.

◆ m_doRawChannels

bool LArRawDataReadingAlg::m_doRawChannels =true
private

Definition at line 52 of file LArRawDataReadingAlg.h.

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> LArRawDataReadingAlg::m_eventInfoKey {this, "eventInfoKey", "EventInfo", "Key for EventInfo object"}
private

Definition at line 39 of file LArRawDataReadingAlg.h.

39{this, "eventInfoKey", "EventInfo", "Key for EventInfo object"};

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

BooleanProperty LArRawDataReadingAlg::m_failOnCorruption {this,"FailOnCorruption",false,"Return FAILURE if data corruption is found"}
private

Definition at line 46 of file LArRawDataReadingAlg.h.

46{this,"FailOnCorruption",false,"Return FAILURE if data corruption is found"};

◆ m_febHeaderKey

SG::WriteHandleKey<LArFebHeaderContainer> LArRawDataReadingAlg::m_febHeaderKey {this,"LArFebHeaderKey","LArFebHeader"}
private

Definition at line 37 of file LArRawDataReadingAlg.h.

37{this,"LArFebHeaderKey","LArFebHeader"};

◆ m_onlineId

const LArOnlineID* LArRawDataReadingAlg::m_onlineId =nullptr
private

Definition at line 49 of file LArRawDataReadingAlg.h.

◆ m_rawChannelKey

SG::WriteHandleKey<LArRawChannelContainer> LArRawDataReadingAlg::m_rawChannelKey
private
Initial value:
{this,"LArRawChannelKey","LArRawChannels",
"SG key of the LArRawChannelContainer"}

Definition at line 34 of file LArRawDataReadingAlg.h.

34 {this,"LArRawChannelKey","LArRawChannels",
35 "SG key of the LArRawChannelContainer"};

◆ m_robDataProviderSvc

ServiceHandle<IROBDataProviderSvc> LArRawDataReadingAlg::m_robDataProviderSvc {this,"ROBDataProviderSvc","ROBDataProviderSvc"}
private

Definition at line 42 of file LArRawDataReadingAlg.h.

42{this,"ROBDataProviderSvc","ROBDataProviderSvc"};

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_verifyChecksum

BooleanProperty LArRawDataReadingAlg::m_verifyChecksum {this,"VerifyChecksum",true,"Calculate and compare checksums to detect data transmission errors"}
private

Definition at line 45 of file LArRawDataReadingAlg.h.

45{this,"VerifyChecksum",true,"Calculate and compare checksums to detect data transmission errors"};

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