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  }
249 
250  eformat::helper::Version ver(rob.rod_version());
251  //(re-)init rodBlock only once per event or if (very unlikly or even impossible) some FEBs have a differnt firmware
252  if (rodBlock==nullptr || rodMinorVersion !=ver.minor_version() || rodBlockType!=(rob.rod_detev_type()&0xff)) {
253  rodMinorVersion=ver.minor_version();
254  rodBlockType=rob.rod_detev_type()&0xff;
255  ATH_MSG_VERBOSE("Found version " << rodMinorVersion << " of Rod Block Type " << rodBlockType);
256  if (rodBlockType==10) { // Accumulated digits
257  rodBlock.reset(new LArRodBlockAccumulatedV3);
258  }//end of rodBlockType ==10
259  else if (rodBlockType==7 || rodBlockType==2) { // Calib. digits
260  if(rodMinorVersion>=6) { // Accumulated calib. digits
261  rodBlock.reset(new LArRodBlockCalibrationV3);
262  } else {
263  ATH_MSG_ERROR("Found unsupported ROD Block version " << rodMinorVersion
264  << " of ROD block type " << rodBlockType);
265  return m_failOnCorruption ? StatusCode::FAILURE : StatusCode::SUCCESS;
266  }
267  } else {
268  ATH_MSG_ERROR("Found unsupported Rod block type " << rodBlockType);
269  if (m_failOnCorruption)
270  return StatusCode::FAILURE;
271  else
272  continue; //Jump to next ROD block
273  }
274  }//End if need to re-init RodBlock
275 
276  const uint32_t* pData=rob.rod_data();
277  const uint32_t nData=rob.rod_ndata();
278  if (!rodBlock->setFragment(pData,nData)) {
279  ATH_MSG_ERROR("Failed to assign fragment pointer to LArRodBlockStructure");
280  return StatusCode::FAILURE;
281  }
282 
283  if(m_verifyChecksum) {
284  const uint32_t onsum = rodBlock->onlineCheckSum();
285  const uint32_t offsum = rodBlock->offlineCheckSum();
286  if(onsum!=offsum) {
287  ATH_MSG_ERROR("Checksum error:");
288  ATH_MSG_ERROR("online checksum = 0x" << MSG::hex << onsum);
289  ATH_MSG_ERROR("offline checksum = 0x" << MSG::hex << offsum << MSG::dec);
290  if (m_failOnCorruption)
291  return StatusCode::FAILURE;
292  else
293  continue; //Jump to the next ROD-block
294  }
295  }
296 
297  //Loop over FEBs in ROD:
298  do {
299  HWIdentifier fId(Identifier32(rodBlock->getFEBID()));
300  if (!m_onlineId->isValidId(fId)) {
301  ATH_MSG_ERROR("Invalid FEB identifer 0x" << std::hex << fId.get_identifier32().get_compact());
302  if (m_failOnCorruption)
303  return StatusCode::FAILURE;
304  else
305  continue;
306  }
307 
308  if (m_vFinalPreselection.size()) {
309  const auto ftId=m_onlineId->feedthrough_Id(fId);
310  if (m_vFinalPreselection.find(ftId)==m_vFinalPreselection.end()) {
311  ATH_MSG_DEBUG("Feedthrough with id 0x" << MSG::hex << ftId << MSG::dec <<" not in preselection. Ignored.");
312  continue;
313  }
314  }
315 
316 
317  const int NthisFebChannel=m_onlineId->channelInSlotMax(fId);
318 
319  //Decode LArDigits (if requested)
320  if (m_doDigits) {
321  uint32_t gain;
322  int fcNb;
323  std::vector<short> samples;
324  while (rodBlock->getNextRawData(fcNb,samples,gain)) {
325  if (fcNb>=NthisFebChannel)
326  continue;
327  if (samples.size()==0) continue; // Ignore missing cells
328  HWIdentifier cId = m_onlineId->channel_Id(fId,fcNb);
329  digits->emplace_back(new LArDigit(cId, (CaloGain::CaloGain)gain, std::move(samples)));
330  samples.clear();
331  }//end getNextRawData loop
332  }//end if m_doDigits
333 
334  //Decode LArCalibDigits (if requested)
335  if (m_doCalibDigits) {
336  uint32_t gain;
337  uint16_t dac;
338  uint16_t delay;
339  bool ispulsed;
340  int fcNb;
341  std::vector<short> samples;
342  while (rodBlock->getNextRawData(fcNb,samples,gain)) {
343  if (fcNb>=NthisFebChannel)
344  continue;
345  if (samples.size()==0) continue; // Ignore missing cells
346  dac = rodBlock->getDAC();
347  delay = rodBlock->getDelay();
348  ispulsed = rodBlock->getPulsed(fcNb);
349  HWIdentifier cId = m_onlineId->channel_Id(fId,fcNb);
350  cdigits->emplace_back(new LArCalibDigit(cId, (CaloGain::CaloGain)gain, std::move(samples), dac, delay, ispulsed));
351  samples.clear();
352  }//end getNextRawData loop
353  }//end if m_doCalibDigits
354 
355  //Decode LArAccumulatedDigits (if requested)
356  if (m_doAccDigits && rodBlockType==10) {
357  uint32_t gain;
358  int fcNb;
359  std::vector<uint64_t> samplesSum;
360  std::vector<uint64_t> samples2Sum;
361  uint32_t nTrigger;
362  while (rodBlock->getNextAccumulatedDigit(fcNb,samplesSum,samples2Sum,gain)) {
363  if (fcNb>=NthisFebChannel)
364  continue;
365  if (samplesSum.size()==0 || samples2Sum.size()==0) continue; // Ignore missing cells
366  nTrigger = rodBlock->getNTrigger();
367  HWIdentifier cId = m_onlineId->channel_Id(fId,fcNb);
368  accdigits->emplace_back(new LArAccumulatedDigit(cId, (CaloGain::CaloGain)gain, std::move(samplesSum), std::move(samples2Sum), nTrigger));
369  samplesSum.clear();
370  samples2Sum.clear();
371  }//end getNext loop
372  }//end if m_doAccDigits
373 
374  //Decode LArAccumulatedCalibDigits (if requested)
375  if (m_doAccCalibDigits) {
376  uint32_t gain;
377  uint32_t itmp;
378  uint16_t dac;
379  uint16_t delay;
380  uint16_t nstep;
381  uint16_t istep;
382  bool ispulsed=false;
383  uint16_t ispulsed_int;
384  unsigned bitShift;
385  int fcNb;
386  std::vector<uint64_t> samplesSum;
387  std::vector<uint64_t> samples2Sum;
388  uint32_t nTrigger;
389  while (rodBlock->getNextAccumulatedCalibDigit(fcNb,samplesSum,samples2Sum,itmp,gain)) {
390  if (fcNb>=NthisFebChannel)
391  continue;
392  if (samplesSum.size()==0 || samples2Sum.size()==0) continue; // Ignore missing cells
393  ispulsed_int=0;
394  bitShift=0;
395  dac = rodBlock->getDAC();
396  delay = rodBlock->getDelay();
397  nTrigger = rodBlock->getNTrigger();
398  nstep = rodBlock->getNStep();
399  istep = rodBlock->getStepIndex();
400  HWIdentifier cId = m_onlineId->channel_Id(fId,fcNb);
401  const std::vector<HWIdentifier>& calibChannelIDs = calibMap->calibSlotLine(cId);
402  for(std::vector<HWIdentifier>::const_iterator csl_it=calibChannelIDs.begin(); csl_it!=calibChannelIDs.end();++csl_it){
403  uint32_t calibLine = m_onlineId->channel(*csl_it);
404  ispulsed=rodBlock->getPulsed(calibLine);
405  ispulsed_int=( ispulsed_int | ((uint16_t)ispulsed<<bitShift) );
406  bitShift++;
407  }
408  caccdigits->emplace_back(new LArAccumulatedCalibDigit(cId, (CaloGain::CaloGain)gain, std::move(samplesSum), std::move(samples2Sum), nTrigger, dac, delay, ispulsed_int, nstep, istep));
409  }//end getNext loop
410  caccdigits->setDelayScale(m_delayScale);
411  }//end if m_doAccDigits
412 
413  //Decode FebHeaders (if requested)
414  if (m_doFebHeaders) {
415  std::unique_ptr<LArFebHeader> larFebHeader(new LArFebHeader(fId));
416  LArFebHeaderReader::fillFebHeader(larFebHeader.get(),rodBlock.get(),rob);
417  febHeaders->push_back(std::move(larFebHeader));
418  }//end if m_doFebHeaders
419 
420  }while (rodBlock->nextFEB()); //Get NextFeb
421  } //end loop over ROBs
422  return StatusCode::SUCCESS;
423 }

◆ 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
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
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:423
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
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
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
LArOnlineID_Base::isFCALchannel
bool isFCALchannel(const HWIdentifier id) const
Definition: LArOnlineID_Base.cxx:1657
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:1967
LArAccumulatedDigit
Data class for ADC samples and autocorr preprocessed by the DSP.
Definition: LArAccumulatedDigit.h:32
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:774
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
LArOnlineID_Base::feb_range
id_range feb_range() const
Definition: LArOnlineID_Base.cxx:1920
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Identifier32::get_compact
value_type get_compact(void) const
Get the compact id.
Definition: Identifier32.h:171
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
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:286
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
01SubmitToGrid.samples
samples
Definition: 01SubmitToGrid.py:58
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:1569
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:1333
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:195
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:1652
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:616
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
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
LArFebHeaderContainer
Container class for LArFebHeader.
Definition: LArFebHeaderContainer.h:20
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
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:734
Identifier::get_identifier32
Identifier32 get_identifier32(void) const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
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:1404
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