ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
LArRawCalibDataReadingAlg Class Reference

#include <LArRawCalibDataReadingAlg.h>

Inheritance diagram for LArRawCalibDataReadingAlg:
Collaboration diagram for LArRawCalibDataReadingAlg:

Public Member Functions

 LArRawCalibDataReadingAlg (const std::string &name, ISvcLocator *pSvcLocator)
 
StatusCode initialize () override
 
StatusCode execute (const EventContext &ctx) const override
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
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. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
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. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

SG::ReadCondHandleKey< LArCalibLineMappingm_CLKey {this, "CalibLineKey", "LArCalibLineMap", "SG calib line key"}
 
SG::WriteHandleKey< LArDigitContainerm_DigitKey {this,"LArDigitKey",""}
 
SG::WriteHandleKey< LArCalibDigitContainerm_calibDigitKey {this,"LArCalibDigitKey",""}
 
SG::WriteHandleKey< LArAccumulatedDigitContainerm_accDigitKey {this,"LArAccDigitKey",""}
 
SG::WriteHandleKey< LArAccumulatedCalibDigitContainerm_accCalibDigitKey {this,"LArAccCalibDigitKey",""}
 
SG::WriteHandleKey< LArFebHeaderContainerm_febHeaderKey {this,"LArFebHeaderKey",""}
 
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",true,"Return FAILURE if data corruption is found"}
 
Gaudi::Property< std::string > m_subCaloPreselection {this,"SubCaloPreselection","","One of 'EM', 'HEC' or 'FCAL'"}
 
Gaudi::Property< std::vector< unsigned > > m_vBEPreselection {this,"BEPreselection",{},"For channel-selection: Barrel=0, Endcap=1"}
 
Gaudi::Property< std::vector< unsigned > > m_vPosNegPreselection {this,"PosNegPreselection",{}, "For channel-selection: C-Side:0, A-Side: 1"}
 
Gaudi::Property< std::vector< unsigned > > m_vFTPreselection {this,"FTNumPreselection",{}, "For channel-selection: Feedthrough numbers (e.g. 0 - 31 for barrel)"}
 
DoubleProperty m_delayScale {this,"DelayScale",(25./240.)*Gaudi::Units::nanosecond,"One calibration step in time"}
 
std::set< HWIdentifierm_vFinalPreselection
 
const LArOnlineIDm_onlineId =nullptr
 
bool m_doDigits =false
 
bool m_doCalibDigits =false
 
bool m_doAccDigits =false
 
bool m_doAccCalibDigits =false
 
bool m_doFebHeaders =false
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 28 of file LArRawCalibDataReadingAlg.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

◆ LArRawCalibDataReadingAlg()

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

Definition at line 23 of file LArRawCalibDataReadingAlg.cxx.

23  :
24  AthReentrantAlgorithm(name, pSvcLocator) {}

Member Function Documentation

◆ cardinality()

unsigned int AthReentrantAlgorithm::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.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

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

95 { return m_detStore; }

◆ evtStore() [1/2]

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.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode LArRawCalibDataReadingAlg::execute ( const EventContext &  ctx) const
override

Definition at line 171 of file LArRawCalibDataReadingAlg.cxx.

171  {
172  LArDigitContainer* digits=nullptr;
173  LArCalibDigitContainer* cdigits=nullptr;
174  LArAccumulatedDigitContainer* accdigits=nullptr;
175  LArAccumulatedCalibDigitContainer* caccdigits=nullptr;
176  LArFebHeaderContainer* febHeaders=nullptr;
177 
178  if (m_doDigits) {
180  ATH_CHECK(digitsHdl.record(std::make_unique<LArDigitContainer>()));
181  digits=digitsHdl.ptr();
182  digits->reserve(200000); //Enough space for the full calo
183  }
184 
185  if (m_doCalibDigits) {
187  ATH_CHECK(cdigitsHdl.record(std::make_unique<LArCalibDigitContainer>()));
188  cdigits=cdigitsHdl.ptr();
189  cdigits->reserve(200000); //Enough space for the full calo
190  }
191 
192  if (m_doAccDigits) {
194  ATH_CHECK(accdigitsHdl.record(std::make_unique<LArAccumulatedDigitContainer>()));
195  accdigits=accdigitsHdl.ptr();
196  accdigits->reserve(200000); //Enough space for the full calo
197  }
198 
199  if (m_doAccCalibDigits) {
201  ATH_CHECK(caccdigitsHdl.record(std::make_unique<LArAccumulatedCalibDigitContainer>()));
202  caccdigits=caccdigitsHdl.ptr();
203  caccdigits->reserve(200000); //Enough space for the full calo
204  }
205 
206  if (m_doFebHeaders) {
208  ATH_CHECK(febHeadersHdl.record(std::make_unique<LArFebHeaderContainer>()));
209  febHeaders=febHeadersHdl.ptr();
210  febHeaders->reserve(1524); //Total number of LAr Front End Boards
211  }
212 
213  //Get full events and filter out LAr ROBs
214  const RawEvent* fullEvent=m_robDataProviderSvc->getEvent(ctx);
215  std::map<eformat::SubDetectorGroup, std::vector<const uint32_t*> > rawEventTOC;
216  eformat::helper::build_toc(*fullEvent, rawEventTOC);
217  auto larRobs=rawEventTOC.find(eformat::LAR);
218  if (larRobs==rawEventTOC.end()) {
219  ATH_MSG_DEBUG("No LAr data found in this event.");
220  return StatusCode::SUCCESS;
221  }
222 
223 
224  std::unique_ptr<LArRodBlockStructure> rodBlock;
225  uint16_t rodMinorVersion=0x0;
226  uint32_t rodBlockType=0x0;
227 
228  const LArCalibLineMapping *calibMap=nullptr;
229  if (m_doAccCalibDigits) {
231  calibMap = *clHdl;
232  if(!calibMap) {
233  ATH_MSG_ERROR( "Do not have calib line mapping !!!" );
234  return StatusCode::FAILURE;
235  }
236  }
237 
238  for (const uint32_t* robPtr : larRobs->second) {
240  ATH_MSG_VERBOSE("Decoding ROB fragment 0x" << std::hex << rob.rob_source_id () << " with " << std::dec << rob.rod_fragment_size_word() << "ROB words");
241 
242  if (rob.rod_fragment_size_word() <3) {
243  ATH_MSG_ERROR("Encountered corrupt ROD fragment, less than 3 words!");
244  if (m_failOnCorruption) {
245  return StatusCode::FAILURE;
246  }else
247  continue; //Jump to next ROD block
248  }else if(rob.rob_source_id()& 0x1000 ){
249  ATH_MSG_VERBOSE(" skip Latome fragment with source ID "<< std::hex << rob.rob_source_id());
250  rodBlock=nullptr;
251  continue;
252  }
253 
254  eformat::helper::Version ver(rob.rod_version());
255  //(re-)init rodBlock only once per event or if (very unlikly or even impossible) some FEBs have a differnt firmware
256  if (rodBlock==nullptr || rodMinorVersion !=ver.minor_version() || rodBlockType!=(rob.rod_detev_type()&0xff)) {
257  rodMinorVersion=ver.minor_version();
258  rodBlockType=rob.rod_detev_type()&0xff;
259  ATH_MSG_VERBOSE("Found version " << rodMinorVersion << " of Rod Block Type " << rodBlockType);
260  if (rodBlockType==10) { // Accumulated digits
261  rodBlock.reset(new LArRodBlockAccumulatedV3);
262  }//end of rodBlockType ==10
263  else if (rodBlockType==7 || rodBlockType==2) { // Calib. digits
264  if(rodMinorVersion>=6) { // Accumulated calib. digits
265  rodBlock.reset(new LArRodBlockCalibrationV3);
266  } else {
267  ATH_MSG_ERROR("Found unsupported ROD Block version " << rodMinorVersion
268  << " of ROD block type " << rodBlockType);
269  return m_failOnCorruption ? StatusCode::FAILURE : StatusCode::SUCCESS;
270  }
271  } else {
272  ATH_MSG_ERROR("Found unsupported Rod block type " << rodBlockType << " in ROB sourceId: 0x" << std::hex << rob.rob_source_id () << std::dec
273  << ", ROD source ID: 0x" << rob.rod_source_id() << std::dec);
274  if (m_failOnCorruption)
275  return StatusCode::FAILURE;
276  else
277  continue; //Jump to next ROD block
278  }
279  }//End if need to re-init RodBlock
280 
281  const uint32_t* pData=rob.rod_data();
282  const uint32_t nData=rob.rod_ndata();
283  if (!rodBlock->setFragment(pData,nData)) {
284  ATH_MSG_ERROR("Failed to assign fragment pointer to LArRodBlockStructure");
285  return StatusCode::FAILURE;
286  }
287 
288  if(m_verifyChecksum) {
289  const uint32_t onsum = rodBlock->onlineCheckSum();
290  const uint32_t offsum = rodBlock->offlineCheckSum();
291  if(onsum!=offsum) {
292  ATH_MSG_ERROR("Checksum error:");
293  ATH_MSG_ERROR("online checksum = 0x" << MSG::hex << onsum);
294  ATH_MSG_ERROR("offline checksum = 0x" << MSG::hex << offsum << MSG::dec);
295  if (m_failOnCorruption)
296  return StatusCode::FAILURE;
297  else
298  continue; //Jump to the next ROD-block
299  }
300  }
301 
302  //Loop over FEBs in ROD:
303  do {
304  HWIdentifier fId(Identifier32(rodBlock->getFEBID()));
305  if (!m_onlineId->isValidId(fId)) {
306  ATH_MSG_ERROR("Invalid FEB identifer 0x" << std::hex << fId.get_identifier32().get_compact());
307  if (m_failOnCorruption)
308  return StatusCode::FAILURE;
309  else
310  continue;
311  }
312 
313  if (m_vFinalPreselection.size()) {
314  const auto ftId=m_onlineId->feedthrough_Id(fId);
315  if (m_vFinalPreselection.find(ftId)==m_vFinalPreselection.end()) {
316  ATH_MSG_DEBUG("Feedthrough with id 0x" << MSG::hex << ftId << MSG::dec <<" not in preselection. Ignored.");
317  continue;
318  }
319  }
320 
321 
322  const int NthisFebChannel=m_onlineId->channelInSlotMax(fId);
323 
324  //Decode LArDigits (if requested)
325  if (m_doDigits) {
326  uint32_t gain;
327  int fcNb;
328  std::vector<short> samples;
329  while (rodBlock->getNextRawData(fcNb,samples,gain)) {
330  if (fcNb>=NthisFebChannel)
331  continue;
332  if (samples.size()==0) continue; // Ignore missing cells
333  HWIdentifier cId = m_onlineId->channel_Id(fId,fcNb);
334  digits->emplace_back(new LArDigit(cId, (CaloGain::CaloGain)gain, std::move(samples)));
335  samples.clear();
336  }//end getNextRawData loop
337  }//end if m_doDigits
338 
339  //Decode LArCalibDigits (if requested)
340  if (m_doCalibDigits) {
341  uint32_t gain;
342  uint16_t dac;
343  uint16_t delay;
344  bool ispulsed;
345  int fcNb;
346  std::vector<short> samples;
347  while (rodBlock->getNextRawData(fcNb,samples,gain)) {
348  if (fcNb>=NthisFebChannel)
349  continue;
350  if (samples.size()==0) continue; // Ignore missing cells
351  dac = rodBlock->getDAC();
352  delay = rodBlock->getDelay();
353  ispulsed = rodBlock->getPulsed(fcNb);
354  HWIdentifier cId = m_onlineId->channel_Id(fId,fcNb);
355  cdigits->emplace_back(new LArCalibDigit(cId, (CaloGain::CaloGain)gain, std::move(samples), dac, delay, ispulsed));
356  samples.clear();
357  }//end getNextRawData loop
358  }//end if m_doCalibDigits
359 
360  //Decode LArAccumulatedDigits (if requested)
361  if (m_doAccDigits && rodBlockType==10) {
362  uint32_t gain;
363  int fcNb;
364  std::vector<uint64_t> samplesSum;
365  std::vector<uint64_t> samples2Sum;
366  uint32_t nTrigger;
367  while (rodBlock->getNextAccumulatedDigit(fcNb,samplesSum,samples2Sum,gain)) {
368  if (fcNb>=NthisFebChannel)
369  continue;
370  if (samplesSum.size()==0 || samples2Sum.size()==0) continue; // Ignore missing cells
371  nTrigger = rodBlock->getNTrigger();
372  HWIdentifier cId = m_onlineId->channel_Id(fId,fcNb);
373  accdigits->emplace_back(new LArAccumulatedDigit(cId, (CaloGain::CaloGain)gain, std::move(samplesSum), std::move(samples2Sum), nTrigger));
374  samplesSum.clear();
375  samples2Sum.clear();
376  }//end getNext loop
377  }//end if m_doAccDigits
378 
379  //Decode LArAccumulatedCalibDigits (if requested)
380  if (m_doAccCalibDigits) {
381  uint32_t gain;
382  uint32_t itmp;
383  uint16_t dac;
384  uint16_t delay;
385  uint16_t nstep;
386  uint16_t istep;
387  bool ispulsed=false;
388  uint16_t ispulsed_int;
389  unsigned bitShift;
390  int fcNb;
391  std::vector<uint64_t> samplesSum;
392  std::vector<uint64_t> samples2Sum;
393  uint32_t nTrigger;
394  while (rodBlock->getNextAccumulatedCalibDigit(fcNb,samplesSum,samples2Sum,itmp,gain)) {
395  if (fcNb>=NthisFebChannel)
396  continue;
397  if (samplesSum.size()==0 || samples2Sum.size()==0) continue; // Ignore missing cells
398  ispulsed_int=0;
399  bitShift=0;
400  dac = rodBlock->getDAC();
401  delay = rodBlock->getDelay();
402  nTrigger = rodBlock->getNTrigger();
403  nstep = rodBlock->getNStep();
404  istep = rodBlock->getStepIndex();
405  HWIdentifier cId = m_onlineId->channel_Id(fId,fcNb);
406  const std::vector<HWIdentifier>& calibChannelIDs = calibMap->calibSlotLine(cId);
407  for(std::vector<HWIdentifier>::const_iterator csl_it=calibChannelIDs.begin(); csl_it!=calibChannelIDs.end();++csl_it){
408  uint32_t calibLine = m_onlineId->channel(*csl_it);
409  ispulsed=rodBlock->getPulsed(calibLine);
410  ispulsed_int=( ispulsed_int | ((uint16_t)ispulsed<<bitShift) );
411  bitShift++;
412  }
413  caccdigits->emplace_back(new LArAccumulatedCalibDigit(cId, (CaloGain::CaloGain)gain, std::move(samplesSum), std::move(samples2Sum), nTrigger, dac, delay, ispulsed_int, nstep, istep));
414  }//end getNext loop
415  caccdigits->setDelayScale(m_delayScale);
416  }//end if m_doAccDigits
417 
418  //Decode FebHeaders (if requested)
419  if (m_doFebHeaders) {
420  std::unique_ptr<LArFebHeader> larFebHeader(new LArFebHeader(fId));
421  LArFebHeaderReader::fillFebHeader(larFebHeader.get(),rodBlock.get(),rob);
422  febHeaders->push_back(std::move(larFebHeader));
423  }//end if m_doFebHeaders
424 
425  }while (rodBlock->nextFEB()); //Get NextFeb
426  } //end loop over ROBs
427  return StatusCode::SUCCESS;
428 }

◆ 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 & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 79 of file AthReentrantAlgorithm.cxx.

80 {
81  // If we didn't find any symlinks to add, just return the collection
82  // from the base class. Otherwise, return the extended collection.
83  if (!m_extendedExtraObjects.empty()) {
85  }
86  return Algorithm::extraOutputDeps();
87 }

◆ filterPassed()

virtual bool AthReentrantAlgorithm::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 135 of file AthReentrantAlgorithm.h.

135  {
136  return execState( ctx ).filterPassed();
137  }

◆ initialize()

StatusCode LArRawCalibDataReadingAlg::initialize ( )
override

Definition at line 26 of file LArRawCalibDataReadingAlg.cxx.

26  {
27 
28  if (m_DigitKey.key().size()>0) {
30  m_doDigits=true;
31  }
32  else {
33  m_doDigits=false;
34  }
35 
36  if (m_calibDigitKey.key().size()>0) {
38  m_doCalibDigits=true;
39  }
40  else {
41  m_doCalibDigits=false;
42  }
43 
44  if (m_accDigitKey.key().size()>0) {
46  m_doAccDigits=true;
47  }
48  else {
49  m_doAccDigits=false;
50  }
51 
52  if (m_accCalibDigitKey.key().size()>0) {
54  m_doAccCalibDigits=true;
55  }
56  else {
57  m_doAccCalibDigits=false;
58  }
59 
60  if (m_febHeaderKey.key().size()>0) {
62  m_doFebHeaders=true;
63  }
64  else {
65  m_doFebHeaders=false;
66  }
67 
69  ATH_MSG_FATAL("Needs ether Digits or CalibDigits or AccDigits or AccCalibDigit Key");
70  return StatusCode::FAILURE;
71  }
72 
74  ATH_MSG_FATAL("Could not have both CalibDigits, AccCalibDigits Key");
75  return StatusCode::FAILURE;
76  }
77 
79  ATH_MSG_FATAL("Could not have AccDigits with Calib Key");
80  return StatusCode::FAILURE;
81  }
82 
83  ATH_CHECK(m_robDataProviderSvc.retrieve());
84  ATH_CHECK(detStore()->retrieve(m_onlineId,"LArOnlineID"));
85 
87 
88 
89  //Fill FT list if only Barrel/EC and side is given:
90  if (m_vBEPreselection.size() && m_vPosNegPreselection.size() && m_vFTPreselection.size()==0) {
91  std::set<unsigned> fts;
92  if (std::find(m_vBEPreselection.begin(),m_vBEPreselection.end(),0)!=m_vBEPreselection.end()) { //Barrel selected
93  fts.insert({0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31});
94  }
95  if (std::find(m_vBEPreselection.begin(),m_vBEPreselection.end(),1)!=m_vBEPreselection.end()) { //Endcap selected
96  fts.insert({0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24});
97  }
98  m_vFTPreselection.value().insert(m_vFTPreselection.begin(),fts.begin(),fts.end());
99  }
100 
101  //Build list of preselected Feedthroughs
102  if (m_vBEPreselection.size() && m_vPosNegPreselection.size() && m_vFTPreselection.size()) {
103  ATH_MSG_INFO("Building list of selected feedthroughs");
104  for (const unsigned iBE : m_vBEPreselection) {
105  for (const unsigned iPN: m_vPosNegPreselection) {
106  for (const unsigned iFT: m_vFTPreselection) {
107  HWIdentifier finalFTId=m_onlineId->feedthrough_Id(iBE,iPN,iFT);
108  //unsigned int finalFTId32 = finalFTId.get_identifier32().get_compact();
109  ATH_MSG_INFO("Adding feedthrough Barrel/Endcap=" << iBE << " pos/neg=" << iPN << " FT=" << iFT
110  << " (0x" << std::hex << finalFTId.get_identifier32().get_compact() << std::dec << ")");
111  m_vFinalPreselection.insert(finalFTId);
112  }
113  }
114  }
115  }//end if something set
116 
117  if (!m_subCaloPreselection.value().empty()) {
118  ATH_MSG_INFO("Adding list of selected subcalo"<<m_subCaloPreselection.value());
119  std::set<HWIdentifier> subcaloFTs;
120  if (m_subCaloPreselection.value().compare("EM")==0) {
121  for (auto febid : m_onlineId->feb_range()) {
122  if (m_onlineId->isEMBchannel(febid) || m_onlineId->isEMECchannel(febid)) {
123  subcaloFTs.insert(m_onlineId->feedthrough_Id(febid));
124  }
125  }
126  }
127  else if (m_subCaloPreselection.value().find("HEC")!=std::string::npos || m_subCaloPreselection.value().find("FCAL")!=std::string::npos) {
128  if (m_subCaloPreselection.value().find("HEC")!=std::string::npos) {
129  for (auto febid : m_onlineId->feb_range()) {
130  if (m_onlineId->isHECchannel(febid)) {
131  subcaloFTs.insert(m_onlineId->feedthrough_Id(febid));
132  }
133  }
134  }
135  if (m_subCaloPreselection.value().find("FCAL")!=std::string::npos) {
136  for (auto febid : m_onlineId->feb_range()) {
137  if (m_onlineId->isFCALchannel(febid)) {
138  subcaloFTs.insert(m_onlineId->feedthrough_Id(febid));
139  }
140  }
141  }
142  } else {
143  ATH_MSG_ERROR("Configuration problem, property 'SubCaloPreselection' set to " << m_subCaloPreselection.value() << ", expect 'EM', 'HEC' or 'FCAL'");
144  return StatusCode::FAILURE;
145  }
146  std::cout << "set sizes:" << subcaloFTs.size() << ", " << m_vFinalPreselection.size() << std::endl;
147  if (m_vFinalPreselection.size()>0) {
148  //Form the intersection of the preselection give as subdet and side/FT/slot
149  for(auto it = m_vFinalPreselection.begin(); it != m_vFinalPreselection.end(); ) {
150  if (subcaloFTs.find(*it)==subcaloFTs.end())
151  it=m_vFinalPreselection.erase(it);
152  else
153  ++it;
154  }
155  if (m_vFinalPreselection.empty()) {
156  ATH_MSG_WARNING("Apparently inconistent configuration of FT preselections. No preselection left after intersecting 'SubCaloPreselection' with 'PosNeg/BE/FT' preselection");
157  }
158  }
159  else {
160  m_vFinalPreselection.swap(subcaloFTs);
161  }
162  }//end if subCaloPreselection set
163 
164  if (!m_vFinalPreselection.empty()) {
165  ATH_MSG_INFO("Give pre-selection covers " << m_vFinalPreselection.size() << " feedthroughts. Will ignore bytestream data from other feedthroughs.");
166  }
167 
168  return StatusCode::SUCCESS;
169 }

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

bool AthReentrantAlgorithm::isClonable ( ) const
overridevirtualinherited

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ 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();
383  PBASE::renounce (h);
384  }

◆ 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  {
365  handlesArray.renounce();
366  }

◆ setFilterPassed()

virtual void AthReentrantAlgorithm::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 139 of file AthReentrantAlgorithm.h.

139  {
140  execState( ctx ).setFilterPassed( state );
141  }

◆ sysExecute()

StatusCode AthReentrantAlgorithm::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 67 of file AthReentrantAlgorithm.cxx.

68 {
69  return Gaudi::Algorithm::sysExecute (ctx);
70 }

◆ sysInitialize()

StatusCode AthReentrantAlgorithm::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 InputMakerBase, and HypoBase.

Definition at line 96 of file AthReentrantAlgorithm.cxx.

96  {
98 
99  if (sc.isFailure()) {
100  return sc;
101  }
102 
103  ServiceHandle<ICondSvc> cs("CondSvc",name());
104  for (auto h : outputHandles()) {
105  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
106  // do this inside the loop so we don't create the CondSvc until needed
107  if ( cs.retrieve().isFailure() ) {
108  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
109  return StatusCode::SUCCESS;
110  }
111  if (cs->regHandle(this,*h).isFailure()) {
112  sc = StatusCode::FAILURE;
113  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
114  << " with CondSvc");
115  }
116  }
117  }
118  return sc;
119 }

◆ 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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_accCalibDigitKey

SG::WriteHandleKey<LArAccumulatedCalibDigitContainer> LArRawCalibDataReadingAlg::m_accCalibDigitKey {this,"LArAccCalibDigitKey",""}
private

Definition at line 42 of file LArRawCalibDataReadingAlg.h.

◆ m_accDigitKey

SG::WriteHandleKey<LArAccumulatedDigitContainer> LArRawCalibDataReadingAlg::m_accDigitKey {this,"LArAccDigitKey",""}
private

Definition at line 41 of file LArRawCalibDataReadingAlg.h.

◆ m_calibDigitKey

SG::WriteHandleKey<LArCalibDigitContainer> LArRawCalibDataReadingAlg::m_calibDigitKey {this,"LArCalibDigitKey",""}
private

Definition at line 40 of file LArRawCalibDataReadingAlg.h.

◆ m_CLKey

SG::ReadCondHandleKey<LArCalibLineMapping> LArRawCalibDataReadingAlg::m_CLKey {this, "CalibLineKey", "LArCalibLineMap", "SG calib line key"}
private

Definition at line 36 of file LArRawCalibDataReadingAlg.h.

◆ m_delayScale

DoubleProperty LArRawCalibDataReadingAlg::m_delayScale {this,"DelayScale",(25./240.)*Gaudi::Units::nanosecond,"One calibration step in time"}
private

Definition at line 57 of file LArRawCalibDataReadingAlg.h.

◆ 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> LArRawCalibDataReadingAlg::m_DigitKey {this,"LArDigitKey",""}
private

Definition at line 39 of file LArRawCalibDataReadingAlg.h.

◆ m_doAccCalibDigits

bool LArRawCalibDataReadingAlg::m_doAccCalibDigits =false
private

Definition at line 68 of file LArRawCalibDataReadingAlg.h.

◆ m_doAccDigits

bool LArRawCalibDataReadingAlg::m_doAccDigits =false
private

Definition at line 67 of file LArRawCalibDataReadingAlg.h.

◆ m_doCalibDigits

bool LArRawCalibDataReadingAlg::m_doCalibDigits =false
private

Definition at line 66 of file LArRawCalibDataReadingAlg.h.

◆ m_doDigits

bool LArRawCalibDataReadingAlg::m_doDigits =false
private

Definition at line 65 of file LArRawCalibDataReadingAlg.h.

◆ m_doFebHeaders

bool LArRawCalibDataReadingAlg::m_doFebHeaders =false
private

Definition at line 69 of file LArRawCalibDataReadingAlg.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 AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

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

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_failOnCorruption

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

Definition at line 50 of file LArRawCalibDataReadingAlg.h.

◆ m_febHeaderKey

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

Definition at line 43 of file LArRawCalibDataReadingAlg.h.

◆ m_onlineId

const LArOnlineID* LArRawCalibDataReadingAlg::m_onlineId =nullptr
private

Definition at line 62 of file LArRawCalibDataReadingAlg.h.

◆ m_robDataProviderSvc

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

Definition at line 46 of file LArRawCalibDataReadingAlg.h.

◆ m_subCaloPreselection

Gaudi::Property<std::string> LArRawCalibDataReadingAlg::m_subCaloPreselection {this,"SubCaloPreselection","","One of 'EM', 'HEC' or 'FCAL'"}
private

Definition at line 52 of file LArRawCalibDataReadingAlg.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vBEPreselection

Gaudi::Property<std::vector<unsigned> > LArRawCalibDataReadingAlg::m_vBEPreselection {this,"BEPreselection",{},"For channel-selection: Barrel=0, Endcap=1"}
private

Definition at line 54 of file LArRawCalibDataReadingAlg.h.

◆ m_verifyChecksum

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

Definition at line 49 of file LArRawCalibDataReadingAlg.h.

◆ m_vFinalPreselection

std::set<HWIdentifier> LArRawCalibDataReadingAlg::m_vFinalPreselection
private

Definition at line 59 of file LArRawCalibDataReadingAlg.h.

◆ m_vFTPreselection

Gaudi::Property<std::vector<unsigned> > LArRawCalibDataReadingAlg::m_vFTPreselection {this,"FTNumPreselection",{}, "For channel-selection: Feedthrough numbers (e.g. 0 - 31 for barrel)"}
private

Definition at line 56 of file LArRawCalibDataReadingAlg.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ m_vPosNegPreselection

Gaudi::Property<std::vector<unsigned> > LArRawCalibDataReadingAlg::m_vPosNegPreselection {this,"PosNegPreselection",{}, "For channel-selection: C-Side:0, A-Side: 1"}
private

Definition at line 55 of file LArRawCalibDataReadingAlg.h.


The documentation for this class was generated from the following files:
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
LArRawCalibDataReadingAlg::m_DigitKey
SG::WriteHandleKey< LArDigitContainer > m_DigitKey
Definition: LArRawCalibDataReadingAlg.h:39
LArRawCalibDataReadingAlg::m_delayScale
DoubleProperty m_delayScale
Definition: LArRawCalibDataReadingAlg.h:57
Identifier32
Definition: Identifier32.h:25
LArAccumulatedCalibDigit
Data class for calibration ADC samples preprocessed by the DSP.
Definition: LArAccumulatedCalibDigit.h:42
LArRawCalibDataReadingAlg::m_doAccDigits
bool m_doAccDigits
Definition: LArRawCalibDataReadingAlg.h:67
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
LArFebHeaderReader::fillFebHeader
void fillFebHeader(LArFebHeader *lfh, const LArRodBlockStructure *bl, const ROBFragment &robFrag)
Fill info for one FEB Header.
Definition: LArFebHeaderReader.cxx:10
LArRawCalibDataReadingAlg::m_vFinalPreselection
std::set< HWIdentifier > m_vFinalPreselection
Definition: LArRawCalibDataReadingAlg.h:59
LArAccumulatedCalibDigitContainer::setDelayScale
void setDelayScale(const double scale)
set the delay Scale
Definition: LArAccumulatedCalibDigitContainer.h:35
LArRodBlockStructure::getStepIndex
virtual uint16_t getStepIndex() const
Definition: LArRodBlockStructure.h:486
LArRawCalibDataReadingAlg::m_failOnCorruption
BooleanProperty m_failOnCorruption
Definition: LArRawCalibDataReadingAlg.h:50
DataVector::emplace_back
value_type emplace_back(value_type pElem)
Add an element to the end of the collection.
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
LArAccumulatedDigitContainer
Container class for LArAccumulatedDigit.
Definition: LArAccumulatedDigitContainer.h:22
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
LArRodBlockStructure::getNextAccumulatedDigit
virtual int getNextAccumulatedDigit(int &channelNumber, std::vector< uint64_t > &SamplesSum, std::vector< uint64_t > &corr2Sum, uint32_t &gain)
Definition: LArRodBlockStructure.cxx:100
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
LArRawCalibDataReadingAlg::m_doFebHeaders
bool m_doFebHeaders
Definition: LArRawCalibDataReadingAlg.h:69
LArCalibLineMapping::calibSlotLine
const std::vector< HWIdentifier > & calibSlotLine(const HWIdentifier id) const
Definition: LArCalibLineMapping.cxx:15
LArRawCalibDataReadingAlg::m_doCalibDigits
bool m_doCalibDigits
Definition: LArRawCalibDataReadingAlg.h:66
LArCalibLineMapping
Definition: LArCalibLineMapping.h:17
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
LArRodBlockStructure::getNTrigger
virtual uint16_t getNTrigger() const
Definition: LArRodBlockStructure.h:480
AthCommonDataStore::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 > renounce(T &h)
Definition: AthCommonDataStore.h:380
RawEvent
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition: RawEvent.h:37
skel.it
it
Definition: skel.GENtoEVGEN.py:396
LArRodBlockStructure::getNStep
virtual uint16_t getNStep() const
Definition: LArRodBlockStructure.h:491
LArRawCalibDataReadingAlg::m_robDataProviderSvc
ServiceHandle< IROBDataProviderSvc > m_robDataProviderSvc
Definition: LArRawCalibDataReadingAlg.h:46
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
Identifier::get_identifier32
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
LArRawCalibDataReadingAlg::m_verifyChecksum
BooleanProperty m_verifyChecksum
Definition: LArRawCalibDataReadingAlg.h:49
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
HWIdentifier
Definition: HWIdentifier.h:13
Identifier32::get_compact
value_type get_compact() const
Get the compact id.
Definition: Identifier32.h:44
LArRawCalibDataReadingAlg::m_accDigitKey
SG::WriteHandleKey< LArAccumulatedDigitContainer > m_accDigitKey
Definition: LArRawCalibDataReadingAlg.h:41
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
LArRodBlockStructure::offlineCheckSum
virtual uint32_t offlineCheckSum() const
Definition: LArRodBlockStructure.cxx:163
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
LArOnlineID_Base::isFCALchannel
bool isFCALchannel(const HWIdentifier id) const
Definition: LArOnlineID_Base.cxx:1653
Pythia8_A14_NNPDF23LO_Var1Down_Common.ver
ver
Definition: Pythia8_A14_NNPDF23LO_Var1Down_Common.py:26
LArCalibDigitContainer
Container class for LArCalibDigit.
Definition: LArCalibDigitContainer.h:19
LArOnlineID_Base::channel
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
Definition: LArOnlineID_Base.cxx:1963
LArAccumulatedDigit
Data class for ADC samples and autocorr preprocessed by the DSP.
Definition: LArAccumulatedDigit.h:32
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
LArRawCalibDataReadingAlg::m_subCaloPreselection
Gaudi::Property< std::string > m_subCaloPreselection
Definition: LArRawCalibDataReadingAlg.h:52
LArOnlineID::isEMECchannel
bool isEMECchannel(const HWIdentifier id) const override final
Definition: LArOnlineID.cxx:763
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
LArOnlineID_Base::feb_range
id_range feb_range() const
Definition: LArOnlineID_Base.cxx:1916
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:93
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
LArDigit
Liquid Argon digit base class.
Definition: LArDigit.h:25
eformat::ROBFragment
Definition: L1CaloBsDecoderUtil.h:12
LArRawCalibDataReadingAlg::m_vPosNegPreselection
Gaudi::Property< std::vector< unsigned > > m_vPosNegPreselection
Definition: LArRawCalibDataReadingAlg.h:55
LArOnlineID_Base::channelInSlotMax
int channelInSlotMax(const HWIdentifier Id) const
Return the Maximum channel number of a given feb slot.
Definition: LArOnlineID_Base.cxx:287
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
LArOnlineID_Base::channel_Id
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
Definition: LArOnlineID_Base.cxx:1565
LArRodBlockAccumulatedV3
This class provides decoding/encoding from/to ROD format.
Definition: LArRodBlockAccumulatedV3.h:24
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LArRodBlockStructure::getFEBID
uint32_t getFEBID() const
Definition: LArRodBlockStructure.h:297
delay
double delay(std::size_t d)
Definition: JetTrigTimerTest.cxx:14
LArRawCalibDataReadingAlg::m_calibDigitKey
SG::WriteHandleKey< LArCalibDigitContainer > m_calibDigitKey
Definition: LArRawCalibDataReadingAlg.h:40
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
LArFebHeader
Holds information from the FEB Header.
Definition: LArFebHeader.h:21
LArOnlineID_Base::isValidId
bool isValidId(const HWIdentifier id) const
Returns false if the identifier is not a LAr-online id or any of the sub-fields is out of range.
Definition: LArOnlineID_Base.cxx:1329
LArRawCalibDataReadingAlg::m_doAccCalibDigits
bool m_doAccCalibDigits
Definition: LArRawCalibDataReadingAlg.h:68
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
LArRodBlockCalibrationV3
This class provides decoding/encoding from/to ROD format.
Definition: LArRodBlockCalibrationV3.h:24
integrator_ascii2db.dac
dac
Definition: integrator_ascii2db.py:126
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
LArRodBlockStructure::nextFEB
bool nextFEB()
Definition: LArRodBlockStructure.h:497
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
LArCalibDigit
Base class for LArDigits taken during calibration runs.
Definition: LArCalibDigit.h:29
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
LArRawCalibDataReadingAlg::m_vBEPreselection
Gaudi::Property< std::vector< unsigned > > m_vBEPreselection
Definition: LArRawCalibDataReadingAlg.h:54
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArOnlineID_Base::isEMBchannel
bool isEMBchannel(const HWIdentifier id) const
Definition: LArOnlineID_Base.cxx:1648
CaloGain::CaloGain
CaloGain
Definition: CaloGain.h:11
LArRawCalibDataReadingAlg::m_accCalibDigitKey
SG::WriteHandleKey< LArAccumulatedCalibDigitContainer > m_accCalibDigitKey
Definition: LArRawCalibDataReadingAlg.h:42
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
LArRawCalibDataReadingAlg::m_onlineId
const LArOnlineID * m_onlineId
Definition: LArRawCalibDataReadingAlg.h:62
a
TList * a
Definition: liststreamerinfos.cxx:10
LArRawCalibDataReadingAlg::m_febHeaderKey
SG::WriteHandleKey< LArFebHeaderContainer > m_febHeaderKey
Definition: LArRawCalibDataReadingAlg.h:43
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LArRodBlockStructure::getNextRawData
virtual int getNextRawData(int &channelNumber, std::vector< short > &samples, uint32_t &gain)
Definition: LArRodBlockStructure.cxx:88
LArRodBlockStructure::setFragment
bool setFragment(const uint32_t *p, uint32_t n)
Definition: LArRodBlockStructure.h:252
LArRodBlockStructure::getDelay
virtual uint16_t getDelay() const
Definition: LArRodBlockStructure.h:474
LArRawCalibDataReadingAlg::m_CLKey
SG::ReadCondHandleKey< LArCalibLineMapping > m_CLKey
Definition: LArRawCalibDataReadingAlg.h:36
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
LArDigitContainer
Container class for LArDigit.
Definition: LArDigitContainer.h:24
LArRodBlockStructure::getDAC
virtual uint16_t getDAC() const
Definition: LArRodBlockStructure.h:468
LArRodBlockStructure::getNextAccumulatedCalibDigit
virtual int getNextAccumulatedCalibDigit(int &channelNumber, std::vector< uint64_t > &SamplesSum, std::vector< uint64_t > &Samples2Sum, uint32_t &nStepTriggers, uint32_t &gain)
Definition: LArRodBlockStructure.cxx:94
LArFebHeaderContainer
Container class for LArFebHeader.
Definition: LArFebHeaderContainer.h:20
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
LArRodBlockStructure::onlineCheckSum
virtual uint32_t onlineCheckSum() const
Definition: LArRodBlockStructure.cxx:155
LArRodBlockStructure::getPulsed
virtual bool getPulsed(unsigned channelNumber) const
Definition: LArRodBlockStructure.h:462
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
LArOnlineID::isHECchannel
bool isHECchannel(const HWIdentifier id) const override final
Definition: LArOnlineID.cxx:723
LArAccumulatedCalibDigitContainer
Container class for LArAccumulatedCalibDigit.
Definition: LArAccumulatedCalibDigitContainer.h:25
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
LAR
@ LAR
Definition: RegSelEnums.h:27
LArOnlineID_Base::feedthrough_Id
HWIdentifier feedthrough_Id(int barrel_ec, int pos_neg, int feedthrough) const
Create a feedthrough identifier from fields.
Definition: LArOnlineID_Base.cxx:1400
fitman.k
k
Definition: fitman.py:528
LArRawCalibDataReadingAlg::m_doDigits
bool m_doDigits
Definition: LArRawCalibDataReadingAlg.h:65
ServiceHandle< ICondSvc >
LArRawCalibDataReadingAlg::m_vFTPreselection
Gaudi::Property< std::vector< unsigned > > m_vFTPreselection
Definition: LArRawCalibDataReadingAlg.h:56