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

This class provides conversion between ROD data and LArRawChannels. More...

#include <LArRodDecoder.h>

Inheritance diagram for LArRodDecoder:
Collaboration diagram for LArRodDecoder:

Public Member Functions

 LArRodDecoder (const std::string &type, const std::string &name, const IInterface *parent)
 Constructor Standard AlgTool constructor. More...
 
virtual ~LArRodDecoder ()
 Destructor. More...
 
virtual StatusCode initialize ATLAS_NOT_THREAD_SAFE () override
 
void setsecfeb (HWIdentifier feb)
 
uint32_t fillCollectionHLT (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArCellCollection &coll, LArRodBlockStructure *&providedRodBlockStructure, uint16_t &rodMinorVersion, uint32_t &robBlockType) const
 
void fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArRawChannelContainer &coll, const CaloGain::CaloGain gain) const
 
void fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArDigitContainer &coll, const CaloGain::CaloGain gain) const
 
void fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArAccumulatedCalibDigitContainer &coll, const CaloGain::CaloGain gain, const LArCalibLineMapping &calibLineMapping) const
 
void fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArAccumulatedDigitContainer &coll, const CaloGain::CaloGain gain) const
 
void fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArCalibDigitContainer &coll, const CaloGain::CaloGain gain, const LArCalibLineMapping &calibLineMapping, const LArOnOffIdMapping &onOffIdMapping) const
 
void fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArFebHeaderContainer &coll, const CaloGain::CaloGain) const
 
template<class T >
bool check_valid (const T *frag, MsgStream &log) 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 sysInitialize () override
 Perform system initialization for an algorithm. 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
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

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

LArRodBlockStructureprepareBlockStructure1 (const uint16_t rodMinorVersion, const uint32_t robBlockType) const
 
LArRodBlockStructureprepareBlockStructure (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, const CaloGain::CaloGain RequestedGain) const
 
std::unique_ptr< LArRodBlockStructuremakeBlockStructure (unsigned int rodBlockType, unsigned int rodMinorVersion) const
 
void setCellEnergy (LArCell *element, int energy, int time, int quality, CaloGain::CaloGain gain) const
 
void writeFebInfo (LArCellCollection &m_coll, LArFebEnergy &febene) const
 
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::ReadHandleKey< xAOD::EventInfom_evt {this, "EvtInfo", "EventInfo", "EventInfo name"}
 
float m_LArCellEthreshold
 
bool m_readtdc
 
bool m_febExchange
 
unsigned int m_febId1
 
unsigned int m_febId2
 
unsigned int m_febIdHLT = 0U
 
int m_firstSample
 
std::vector< int > m_vFTPreselection
 
std::vector< int > m_vBEPreselection
 
std::vector< int > m_vPosNegPreselection
 
std::vector< unsigned int > m_vFinalPreselection
 
uint32_t m_StatusMask
 
uint32_t m_StatusNMask = 0U
 
const LArOnlineIDm_onlineHelper
 
std::vector< std::string > m_LArCellCorrNames
 
std::vector< unsigned int > m_IgnoreCheckFEBs
 
std::vector< const CaloCellCorrection * > m_LArCellCorrTools
 
double m_delayScale
 
SG::SlotSpecificObj< std::vector< std::unique_ptr< LArRodBlockStructure > > > m_blstructs ATLAS_THREAD_SAFE
 
bool m_MultiDSPMode
 
bool m_CheckSum
 
unsigned short m_requiredPhysicsNSamples
 
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

This class provides conversion between ROD data and LArRawChannels.

Author
H. Ma
Version
0-0-1 , Oct 7, 2002

Modified, Dec 4, 2002 Create either LArRawChannel or LArCell.

Modified, Jan 02, 2003 Moved Encoding part to LArROD_Encoder.

Modified, Jul 23, 2003 by R. Lafaye Added LArDigit support Build on the same structure as LArROD_Encoder No longer an AlgTool

Modified, Aug 5 2003 by W. Lampl Have now functionality to decode:

Modified, Aug 7 2003 by W. Lampl Made a template-function for LArRawChannelCollection and LArRawCellCollection

Modified, Aug 17 2003 by W. Lampl Introduce ability to decode different ROD format versions by using a map of LArRodBlockStructures

Modified, Sept 9 2003 by W. Lampl Change implementation of multiple-version feature. A ROD block type/version is now written as second word of the fragment. Replace std::map by c-style array to increase performance

Modified, Sept 28 2003 by W. Lampl Adapt for new constructor of LArRawChannels. (Needs also gain as parameter)

Modified, November 10 2005 by D.O. Damazio Inclusion of new RodBlock format (Bertrand Laforge). Inclusion of methods for fast decoding of data.

Modified,January 04 2006 by I. Wingerter Inclusion of Accumulated Calib Digit

Modified, May 03 2006 by I. Aracena Inclusion of fillCollectionHLTFeb

Modified, Dec 03 2006 by G. Rosenbaum Loop over all possible pusled calib lines and make isPulsed int which stores which lines 1-4 have been pulsed. (needed for HEC)

Modified Aug 16 2009 by W. Lampl Remove internal accumlation of LArAccumulatedCalibDigit. They are now put in the event store for each substep and contain only data of this substep.

Definition at line 127 of file LArRodDecoder.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ LArRodDecoder()

LArRodDecoder::LArRodDecoder ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Constructor Standard AlgTool constructor.

Definition at line 40 of file LArRodDecoder.cxx.

42  m_LArCellEthreshold(-100.),
43  m_readtdc(false),
45  {
46  declareInterface< LArRodDecoder >( this );
47  declareProperty("IgnoreCheckFEBs",m_IgnoreCheckFEBs);
48  declareProperty("CellCorrections",m_LArCellCorrNames );
49  declareProperty("LArCellEthreshold",m_LArCellEthreshold );
50  declareProperty("ReadTDC",m_readtdc);
51  declareProperty("DelayScale",m_delayScale=(25./240.)*CLHEP::ns);
52  declareProperty("FebExchange", m_febExchange=0); //FIXME: Very ugly hack! See explanation in .h file
53  declareProperty("FebId1", m_febId1=0);
54  declareProperty("FebId2", m_febId2=0);
55  declareProperty("FirstSample", m_firstSample=0); //FIXME: Very ugly hack! See explanation in .h file
56 
57  declareProperty("BEPreselection",m_vBEPreselection,"For channel-selection: Barrel=0, Endcap=1");
58  declareProperty("PosNegPreselection",m_vPosNegPreselection,"For channel-selection: C-Side:0, A-Side: 1");
59  declareProperty("FTNumPreselection",m_vFTPreselection,"For channel-selection: Feedthrough numbers (e.g. 0 - 31 for barrel)");
60  declareProperty("MultiDSPMode", m_MultiDSPMode=false);
61  declareProperty("CheckSum", m_CheckSum=false);
62  declareProperty("StatusMask", m_StatusMask=0x00000212);
63  declareProperty("RequiredPhysicsNSamples", m_requiredPhysicsNSamples = 0);
64 }

◆ ~LArRodDecoder()

LArRodDecoder::~LArRodDecoder ( )
virtual

Destructor.

Definition at line 67 of file LArRodDecoder.cxx.

68 {
69 }

Member Function Documentation

◆ ATLAS_NOT_THREAD_SAFE()

virtual StatusCode initialize LArRodDecoder::ATLAS_NOT_THREAD_SAFE ( )
overridevirtual

◆ check_valid()

template<class T >
bool LArRodDecoder::check_valid ( const T *  frag,
MsgStream &  log 
) const
inline

Definition at line 254 of file LArRodDecoder.h.

255 {
256 
257 
258 /* FIXME, exception?
259  EventFormat::Error error;
260  if (!frag->is_valid (&error)) {
261  report_error (error, log);
262  return false;
263  }
264  return true;
265 */
266 
267  bool ret=false;
268  try {
269  ret=frag->check();
270  }
271  //catch ( .... ) {
272  catch (eformat::Issue& ex) {
273  msg(MSG::WARNING) << "Exception while checking eformat fragment validity: " << ex.what() << endmsg;
274  ret=false;
275  }
276  return ret;
277 
278 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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

◆ fillCollection() [1/6]

void LArRodDecoder::fillCollection ( const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment robFrag,
const uint32_t *  p,
uint32_t  n,
LArAccumulatedCalibDigitContainer coll,
const CaloGain::CaloGain  gain,
const LArCalibLineMapping calibLineMapping 
) const

Definition at line 524 of file LArRodDecoder.cxx.

530 { // Accumulated Digit pointer
532  CaloGain::CaloGain calogain;
533  uint32_t gain, ntrigger;
534  int dac, delay, NStep=-1, StepIndex=-1;
535  bool ispulsed;
536  uint16_t ispulsed_int;
537  int bitShift;
538  uint32_t FirstGoodFEB=1;
539  int fcNb;
540  std::vector< uint64_t > samplesSum;
541  std::vector< uint64_t > samples2Sum;
542 
543  // for(int i=0;i<16;i++)
544  // std::cout << " - " << std::hex << p[i] << std::endl;
545 
546  LArRodBlockStructure* BlStruct=prepareBlockStructure(robFrag, p, n, RequestedGain);
547  if (!BlStruct) return;
548  do
549  {
550  // IWS 24.01.2006 protection against NULL events (null pointer to rawdata block)
551  if (!BlStruct->hasCalibBlock())
552  {
553  ATH_MSG_DEBUG("No Calib Data for this FEB - NULL event");
554  continue;
555  }
556  if(FirstGoodFEB)
557  {
558  FirstGoodFEB=0;
559  }
560  HWIdentifier fId(Identifier32(BlStruct->getFEBID()));
561  unsigned int fId32 = fId.get_identifier32().get_compact();
562  // RL 20.09.2006 protection against 0 FebId
563  if (!fId32){
564  ATH_MSG_DEBUG("Bad FebID=0x" << std::hex << BlStruct->getFEBID() << " found for this FEB, skipping it!" << std::dec);
565  continue;
566  }
567  // RL 04.17.2008 skip check for some FEBs
568  int do_check=1;
569  std::vector<unsigned int>::const_iterator it_feb = m_IgnoreCheckFEBs.begin();
570  std::vector<unsigned int>::const_iterator it_feb_end = m_IgnoreCheckFEBs.end();
571  for(; it_feb!=it_feb_end;++it_feb)
572  if(fId==*it_feb) {
573  do_check=0;
574  break;
575  }
576  if(do_check) {
577  //WL 31.10.2007 //check RodStatus-word to catch corrupt events
578  if (BlStruct->getStatus() & m_StatusNMask) {
579  msg(MSG::WARNING) << "RodStatus&0x" << std::hex << m_StatusNMask << " indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<". Ignored." << endmsg;
580  continue;
581  }
582  }
583  // RL 05.11.2007 checksum
584  if(m_CheckSum) {
585  uint32_t onsum = BlStruct->onlineCheckSum();
586  uint32_t offsum = BlStruct->offlineCheckSum();
587  if(onsum!=offsum) {
588  msg(MSG::WARNING) << "Checksum error:" << endmsg;
589  msg(MSG::WARNING) << " online checksum = " << MSG::hex << onsum << endmsg;
590  msg(MSG::WARNING) << " offline checksum = " << MSG::hex << offsum << endmsg;
591  continue;
592  }
593  }
594  if(m_febExchange) {
595  if (fId32 == m_febId1) {
597  fId32 = fId.get_identifier32().get_compact();
598  }
599  else if(fId32 == m_febId2) {
601  fId32 = fId.get_identifier32().get_compact();
602  }
603  }
604 
605  if (m_vFinalPreselection.size()) {
606  unsigned int ftId=m_onlineHelper->feedthrough_Id(fId).get_identifier32().get_compact();
607  if (!std::binary_search(m_vFinalPreselection.begin(), m_vFinalPreselection.end(),ftId)) {
608  ATH_MSG_DEBUG("Feedthrough with id " << std::hex << ftId << std::dec <<" not in preselection. Ignored.");
609  continue;
610  }
611  }
612  int NthisFebChannel=m_onlineHelper->channelInSlotMax(fId);
613  uint32_t idum=0;
614  while (BlStruct->getNextAccumulatedCalibDigit(fcNb,samplesSum,samples2Sum,idum,gain))
615  {
616  ispulsed_int=0;
617  bitShift=0;
618  if (fcNb>=NthisFebChannel)continue;
619  if (samplesSum.size()==0) continue; // Ignore missing cells
620  HWIdentifier cId = m_onlineHelper->channel_Id(fId,fcNb);
621  calogain=(CaloGain::CaloGain)gain;
622  ntrigger=BlStruct->getNTrigger();
623  dac=BlStruct->getDAC();
624  delay=BlStruct->getDelay();
625  NStep=BlStruct->getNStep();
626  if(!NStep) NStep=1; // To be able to decode v6 code
627  StepIndex=BlStruct->getStepIndex();
628  // 08.08.2005 IWS get calib line
629  const std::vector<HWIdentifier>& calibChannelIDs = calibLineMapping.calibSlotLine(cId);
630  if (calibChannelIDs.size()==0) {
631  samplesSum.clear();
632  samples2Sum.clear();
633  continue;// connected channel
634  }
635  //GR: Loop over all the calib chans instead of just looking at the first one and set four bit isPulsed int
636  for(std::vector<HWIdentifier>::const_iterator csl_it=calibChannelIDs.begin(); csl_it!=calibChannelIDs.end();++csl_it){
637  uint32_t calibLine = m_onlineHelper->channel(*csl_it);
638  ispulsed=BlStruct->getPulsed(calibLine);
639  ispulsed_int=( ispulsed_int | ((uint16_t)ispulsed<<bitShift) );
640  bitShift++;
641  }
642 
643  dg=new LArAccumulatedCalibDigit(cId, calogain, samplesSum, samples2Sum, ntrigger, dac, delay,
644  (uint16_t)ispulsed_int, NStep, StepIndex);
645 
646  coll.push_back(dg);
647  } // End while
648  }//End do loop of FEBs
649  while (BlStruct->nextFEB()); //Get NextFeb
650 
651  return;
652 }

◆ fillCollection() [2/6]

void LArRodDecoder::fillCollection ( const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment robFrag,
const uint32_t *  p,
uint32_t  n,
LArAccumulatedDigitContainer coll,
const CaloGain::CaloGain  gain 
) const

Definition at line 654 of file LArRodDecoder.cxx.

656 { // Accumulated Digit pointer
657  LArAccumulatedDigit * dg=0 ;
658  CaloGain::CaloGain calogain;
659  uint32_t gain, ntrigger;
660  //int NStep=-1, StepIndex=-1;
661  int fcNb;
662  std::vector<uint64_t> sampleSum;
663  std::vector< uint64_t > sampleSquare;
664 
665  // for(int i=0;i<16;i++)
666  // std::cout << " - " << std::hex << p[i] << std::endl;
667 
668  LArRodBlockStructure* BlStruct=prepareBlockStructure(robFrag, p, n, RequestedGain);
669  if (!BlStruct) return;
670  do
671  {
672  // IWS 24.01.2006 protection against NULL events (null pointer to rawdata block)
673  if (!BlStruct->hasAccumBlock()) {
674  ATH_MSG_DEBUG("No Accum Data for this FEB - NULL event");
675  continue;
676  }
677  HWIdentifier fId(Identifier32(BlStruct->getFEBID()));
678  unsigned int fId32 = fId.get_identifier32().get_compact();
679  // RL 20.09.2006 protection against 0 FebId
680  if (!fId32) {
681  ATH_MSG_DEBUG("Bad FebID=0x" << std::hex << BlStruct->getFEBID() << " found for this FEB, skipping it!" << std::dec);
682  continue;
683  }
684  // RL 04.17.2008 skip check for some FEBs
685  int do_check=1;
686  std::vector<unsigned int>::const_iterator it_feb = m_IgnoreCheckFEBs.begin();
687  std::vector<unsigned int>::const_iterator it_feb_end = m_IgnoreCheckFEBs.end();
688  for(; it_feb!=it_feb_end;++it_feb)
689  if(fId==*it_feb) {
690  do_check=0;
691  break;
692  }
693  if(do_check) {
694  //WL 31.10.2007 //check RodStatus-word to catch corrupt events
695  if (BlStruct->getStatus() & m_StatusNMask) {
696  msg(MSG::WARNING) << "RodStatus&0x" << std::hex << m_StatusNMask << " indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<". Ignored." << endmsg;
697  continue;
698  }
699  }
700  // RL 05.11.2007 checksum
701  if(m_CheckSum) {
702  uint32_t onsum = BlStruct->onlineCheckSum();
703  uint32_t offsum = BlStruct->offlineCheckSum();
704  if(onsum!=offsum) {
705  msg(MSG::WARNING) << "Checksum error:" << endmsg;
706  msg(MSG::WARNING) << " online checksum = " << MSG::hex << onsum << endmsg;
707  msg(MSG::WARNING) << " offline checksum = " << MSG::hex << offsum << endmsg;
708  continue;
709  }
710  }
711  if(m_febExchange) {
712  if (fId32 == m_febId1) {
714  fId32 = fId.get_identifier32().get_compact();
715  }
716  else if(fId32 == m_febId2) {
718  fId32 = fId.get_identifier32().get_compact();
719  }
720  }
721 
722  if (m_vFinalPreselection.size()) {
723  unsigned int ftId=m_onlineHelper->feedthrough_Id(fId).get_identifier32().get_compact();
724  if (!std::binary_search(m_vFinalPreselection.begin(), m_vFinalPreselection.end(),ftId)) {
725  ATH_MSG_DEBUG("Feedthrough with id " << std::hex << ftId << std::dec <<" not in preselection. Ignored.");
726  continue;
727  }
728  }
729  int NthisFebChannel=m_onlineHelper->channelInSlotMax(fId);
730  ntrigger=BlStruct->getNTrigger();
731  //NStep=BlStruct->getNStep();
732  //if(!NStep) NStep=1; // To be able to decode v6 code
733  //StepIndex=BlStruct->getStepIndex();
734  while (BlStruct->getNextAccumulatedDigit(fcNb,sampleSum,sampleSquare,gain)) {
735  if (fcNb>=NthisFebChannel)continue;
736  if (sampleSquare.size()==0) continue; // Ignore missing cells
737  HWIdentifier cId = m_onlineHelper->channel_Id(fId,fcNb);
738  calogain=(CaloGain::CaloGain)gain;
739  dg=new LArAccumulatedDigit(cId,calogain,sampleSum,sampleSquare,ntrigger);
740  coll.push_back(dg);
741  } // End while
742  }//End do loop of FEBs
743  while (BlStruct->nextFEB()); //Get NextFeb
744 
745  return;
746 }

◆ fillCollection() [3/6]

void LArRodDecoder::fillCollection ( const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment robFrag,
const uint32_t *  p,
uint32_t  n,
LArCalibDigitContainer coll,
const CaloGain::CaloGain  gain,
const LArCalibLineMapping calibLineMapping,
const LArOnOffIdMapping onOffIdMapping 
) const

Definition at line 327 of file LArRodDecoder.cxx.

334 { // CalibDigit pointer
335  LArCalibDigit * dg=0 ;
336  uint32_t gain;
337  CaloGain::CaloGain calogain;
338  int fcNb;
339  uint16_t dac, delay;
340  bool ispulsed;
341  std::vector<short> samples;
342 
343  ATH_MSG_VERBOSE("FillCollection for LArCalibDigitContainer is called.");
344  LArRodBlockStructure* BlStruct=prepareBlockStructure(robFrag, p, n, RequestedGain);
345  if (!BlStruct) return;
346  if (BlStruct->canSetCalibration()) {
347  dac=BlStruct->getDAC();
348  delay=BlStruct->getDelay();
349  // int iFeb=0, iCan=0; //For debug purpose
350  do
351  {
352  // IWS 24.01.2006 protection against NULL events (null pointer to rawdata block)
353  if (!BlStruct->hasRawDataBlock()) {
354  ATH_MSG_DEBUG("No Raw Data for this FEB - NULL event for FEBID " << std::hex << BlStruct->getFEBID());
355  continue;
356  }
357  HWIdentifier fId(Identifier32(BlStruct->getFEBID()));
358  unsigned int fId32 = fId.get_identifier32().get_compact();
359  // RL 20.09.2006 protection against 0 FebId
360  if (!fId32){
361  ATH_MSG_DEBUG("Bad FebID=0x"<< std::hex << BlStruct->getFEBID() << " found for this FEB, skipping it!");
362  continue;
363  }
364  // RL 04.17.2008 skip check for some FEBs
365  int do_check=1;
366  std::vector<unsigned int>::const_iterator it_feb = m_IgnoreCheckFEBs.begin();
367  std::vector<unsigned int>::const_iterator it_feb_end = m_IgnoreCheckFEBs.end();
368  for(; it_feb!=it_feb_end;++it_feb)
369  if(fId==*it_feb) {
370  do_check=0;
371  break;
372  }
373  if(do_check) {
374  //WL 31.10.2007 //check RodStatus-word to catch corrupt events
375  if (BlStruct->getStatus() & m_StatusNMask) {
376  msg(MSG::WARNING) << "RodStatus&0x" << std::hex << m_StatusNMask << " indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<". Ignored." << endmsg;
377  continue;
378  }
379  }
380  // RL 05.11.2007 checksum
381  if(m_CheckSum) {
382  uint32_t onsum = BlStruct->onlineCheckSum();
383  uint32_t offsum = BlStruct->offlineCheckSum();
384  if(onsum!=offsum) {
385  msg(MSG::WARNING) << "Checksum error:" << endmsg;
386  msg(MSG::WARNING) << " online checksum = " << MSG::hex << onsum << endmsg;
387  msg(MSG::WARNING) << " offline checksum = " << MSG::hex << offsum << endmsg;
388  continue;
389  }
390  }
391  if(m_febExchange) {
392  if (fId32 == m_febId1) {
394  fId32 = fId.get_identifier32().get_compact();
395  }
396  else if(fId32 == m_febId2) {
398  fId32 = fId.get_identifier32().get_compact();
399  }
400  }
401 
402  if (m_vFinalPreselection.size()) {
403  unsigned int ftId=m_onlineHelper->feedthrough_Id(fId).get_identifier32().get_compact();
404  if (!std::binary_search(m_vFinalPreselection.begin(), m_vFinalPreselection.end(),ftId)) {
405  ATH_MSG_DEBUG("Feedthrough with id 0x" << std::hex << ftId << std::dec <<" not in preselection. Ignored.");
406  continue;
407  }
408  }
409  const int NthisFebChannel=m_onlineHelper->channelInSlotMax(fId);
410  while (BlStruct->getNextRawData(fcNb,samples,gain))
411  {if (fcNb>=NthisFebChannel)
412  continue;
413  if (samples.size()==0) continue; // Ignore missing cells
414  HWIdentifier cId = m_onlineHelper->channel_Id(fId,fcNb);
415  ispulsed=BlStruct->getPulsed(fcNb);
416 
417  calogain=(CaloGain::CaloGain)gain;
418  dg = new LArCalibDigit(cId, calogain, samples, dac, delay, ispulsed);
419  samples.clear();
420  coll.push_back(dg);
421  }
422  }
423  while (BlStruct->nextFEB()); //Get NextFeb
424  }
425  else {//Not a calibration data block, try to get from database
426  ATH_MSG_VERBOSE("Not LArCalibDigit data block found. Building it using DB values");
427  //1st step, get Calib board config object
428  const LArCalibParams* calibParams = nullptr;
429  StatusCode sc=detStore()->retrieve(calibParams);
430  if (sc.isFailure())
431  {msg(MSG::ERROR) << "Cannot load LArCalibParams from DetStore!" << endmsg;
432  return;
433  }
434  //2st step, get Event number
436  if (!evt.isValid()) {
437  ATH_MSG_ERROR("Cannot get EventInfo");
438  return; //Return empty container.
439  }
440  const unsigned eventNb=evt->eventNumber();
441  const std::vector<HWIdentifier>* calibChannelIDs;
442  do { //Loop over all FEBs in this ROD
443 
444  // IWS 24.01.2006 protection against NULL events (null pointer to rawdata block)
445  if (!BlStruct->hasRawDataBlock()) {
446  ATH_MSG_DEBUG("No Raw Data for this FEB - NULL event for FEBID 0x" << std::hex << BlStruct->getFEBID() << std::dec);
447  continue;
448  }
449  HWIdentifier fId(Identifier32(BlStruct->getFEBID()));
450  unsigned int fId32 = fId.get_identifier32().get_compact();
451  // RL 20.09.2006 protection against 0 FebId
452  if (!fId32) {
453  ATH_MSG_DEBUG("Bad FebID=0x" << std::hex << BlStruct->getFEBID() << " found for this FEB, skipping it!" << std::dec);
454  continue;
455  }
456  if(m_febExchange) {
457  if (fId32 == m_febId1) {
459  fId32 = fId.get_identifier32().get_compact();
460  }
461  else if(fId32 == m_febId2) {
463  fId32 = fId.get_identifier32().get_compact();
464  }
465  }
466  fcNb=0;
467  HWIdentifier cId;
468  do { //Search for the first connected channel of this FEB (probably the first one...)
469  fcNb++;
470  cId = m_onlineHelper->channel_Id(fId,fcNb);
471  calibChannelIDs=&calibLineMapping.calibSlotLine(cId);
472  }
473  while ( (!onOffIdMapping.isOnlineConnected(cId) || calibChannelIDs->size()==0) && fcNb<128); // This is the right conditions to exit the loop!
474 
475  if ( calibChannelIDs->size()==0 ) {
476  msg(MSG::ERROR) << "Cannot get calibration Channel ID for FEB " << std::hex << fId32 << std::dec << endmsg;
477  return;
478  }
479 
480  uint16_t dac;
481  uint16_t delay;
482 
483  std::vector<HWIdentifier>::const_iterator csl_it=calibChannelIDs->begin();
484  //Derive DAC and Delay value from this channel
485  dac=calibParams->DAC(eventNb,*csl_it);
486  delay=calibParams->Delay(eventNb,*csl_it);
487 
488  //Now start looping over channels in FEB
489  const int NthisFebChannel=m_onlineHelper->channelInSlotMax(fId);
490  //std::cout << "Processing FEB #" << iFeb++ << std::endl;
491 
492  //int iCan=0;
493 
494  fcNb=0;
495  while (BlStruct->getNextRawData(fcNb,samples,gain))
496  {
497  if (fcNb>=NthisFebChannel) continue;
498  if (samples.size()==0) continue; // Ignore missing cells
499  cId = m_onlineHelper->channel_Id(fId,fcNb);
500  calibChannelIDs=&calibLineMapping.calibSlotLine(cId);
501  //if (calibChannelIDs->size()==0)
502  //continue; //Disconnected channel
503  //For the time being, I assume we are in H8 and have only one calib channel per FEB channel
504 
505  if (calibChannelIDs->size()!=0) {
506  csl_it=calibChannelIDs->begin();
507  ispulsed=calibParams->isPulsed(eventNb,*csl_it);
508 
509  } else ispulsed=0;
510  calogain=(CaloGain::CaloGain)gain;
511  dg = new LArCalibDigit(cId, calogain, samples, dac, delay, ispulsed);
512  samples.clear();
513 
514  coll.push_back(dg);
515  //iCan++;
516  }
517  }
518  while (BlStruct->nextFEB()); //Get NextFeb
519  }
521  return;
522 }

◆ fillCollection() [4/6]

void LArRodDecoder::fillCollection ( const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment robFrag,
const uint32_t *  p,
uint32_t  n,
LArDigitContainer coll,
const CaloGain::CaloGain  gain 
) const

Definition at line 144 of file LArRodDecoder.cxx.

146 { // Digit pointer
147  LArDigit * dg=0 ;
148  CaloGain::CaloGain calogain;
149  uint32_t gain;
150  int fcNb;
151  std::vector<short> samples;
152  LArRodBlockStructure* BlStruct=prepareBlockStructure(robFrag, p, n, RequestedGain);
153  if (!BlStruct) return;
154 
155  do {
156  HWIdentifier fId( Identifier32(BlStruct->getFEBID()) );
157  unsigned int fId32 = fId.get_identifier32().get_compact();
158  if (!m_onlineHelper->isValidId(fId)) {
159  msg(MSG::WARNING) << "Invalid FEB identifer 0x" << std::hex << fId32 << std::dec << ". Skipping" << endmsg;
160  continue;
161  }
162  // std::cout << "digit FEBID=" << std::hex<< " " <<fId32 << std::dec<<std::endl;
163  if(m_febExchange) {
164  if (fId32 == m_febId1) {
166  fId32 = fId.get_identifier32().get_compact();
167  }
168  else if(fId32 == m_febId2) {
170  fId32 = fId.get_identifier32().get_compact();
171  }
172  }
173 
174  // IWS 24.01.2006 protection against NULL events (null pointer to rawdata block)
175  if (!BlStruct->hasRawDataBlock())
176  {
177  ATH_MSG_DEBUG("No Raw Data for this FEB - NULL event for FEBID 0x"<< std::hex << BlStruct->getFEBID() << std::dec);
178  continue;
179  }
180 
181  // RL 04.17.2008 skip check for some FEBs
182  int do_check=1;
183  std::vector<unsigned int>::const_iterator it_feb = m_IgnoreCheckFEBs.begin();
184  std::vector<unsigned int>::const_iterator it_feb_end = m_IgnoreCheckFEBs.end();
185  for(; it_feb!=it_feb_end;++it_feb)
186  if(fId==*it_feb) {
187  do_check=0;
188  break;
189  }
190  if(do_check) {
191  //WL 31.10.2007 //check RodStatus-word to catch corrupt events
192  if (BlStruct->getStatus() & m_StatusNMask) {
193  msg(MSG::WARNING) << "RodStatus&0x" << std::hex << m_StatusNMask << " indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<". Ignored." << endmsg;
194  continue;
195  }
196  }
197  // RL 05.11.2007 checksum
198  if(m_CheckSum) {
199  const uint32_t onsum = BlStruct->onlineCheckSum();
200  const uint32_t offsum = BlStruct->offlineCheckSum();
201  if(onsum!=offsum) {
202  msg(MSG::WARNING) << "Checksum error for FEB: " << MSG::hex << fId32 << endmsg;
203  msg(MSG::WARNING) << " online checksum = " << MSG::hex << onsum << endmsg;
204  msg(MSG::WARNING) << " offline checksum = " << MSG::hex << offsum << MSG::dec << endmsg;
205  continue;
206  }
207  }
208 
209  if (m_vFinalPreselection.size()) {
210  const unsigned int ftId=m_onlineHelper->feedthrough_Id(fId).get_identifier32().get_compact();
211  if (!std::binary_search(m_vFinalPreselection.begin(), m_vFinalPreselection.end(),ftId)) {
212  ATH_MSG_DEBUG("Feedthrough with id 0x" << MSG::hex << ftId << MSG::dec <<" not in preselection. Ignored.");
213  continue;
214  }
215  }
216  const int NthisFebChannel=m_onlineHelper->channelInSlotMax(fId);
217  while (BlStruct->getNextRawData(fcNb,samples,gain))
218  {if (fcNb>=NthisFebChannel)
219  continue;
220  if (samples.size()==0) continue; // Ignore missing cells
221  HWIdentifier cId = m_onlineHelper->channel_Id(fId,fcNb);
222  calogain=(CaloGain::CaloGain)gain;
223  dg = new LArDigit(cId, calogain, std::move(samples));
224  samples.clear();
225  coll.push_back(dg);
226  }
227  }
228  while (BlStruct->nextFEB()); //Get NextFeb
229  return;
230 }

◆ fillCollection() [5/6]

void LArRodDecoder::fillCollection ( const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment robFrag,
const uint32_t *  p,
uint32_t  n,
LArFebHeaderContainer coll,
const CaloGain::CaloGain  RequestedGain 
) const

Definition at line 748 of file LArRodDecoder.cxx.

750 {
751  LArFebHeader* larFebHeader;
752  //uint32_t NWtot=0;
753  HWIdentifier FEBID;
754 
755  // for(int i=0;i<16;i++)
756  // std::cout << " - " << std::hex << p[i] << std::endl;
757 
758  LArRodBlockStructure* BlStruct=prepareBlockStructure(robFrag, p, n, RequestedGain);
759  if (!BlStruct) return;
760 
761  do{
762  //Read first FEB. The header of this feb is combined with the ROD-Header
763  //NWtot=BlStruct->getNumberOfWords();
764  //if(NWtot<=4) continue;
765 
766  FEBID=HWIdentifier(Identifier32(BlStruct->getFEBID()));
767  unsigned int FEBID32 = FEBID.get_identifier32().get_compact();
768  if (!m_onlineHelper->isValidId(FEBID)) {
769  msg(MSG::WARNING) << "Invalid FEB identifer " << std:: hex << FEBID32 << std::dec << ". Skipping" << endmsg;
770  continue;
771  }
772 
773  if(m_febExchange) {
774  if (FEBID32 == m_febId1) {
776  FEBID32 = FEBID.get_identifier32().get_compact();
777  }
778  else if(FEBID32 == m_febId2) {
780  FEBID32 = FEBID.get_identifier32().get_compact();
781  }
782  }
783 
784  if (m_vFinalPreselection.size()) {
785  const unsigned int ftId=m_onlineHelper->feedthrough_Id(FEBID).get_identifier32().get_compact();
786  if (!std::binary_search(m_vFinalPreselection.begin(), m_vFinalPreselection.end(),ftId)) {
787  ATH_MSG_DEBUG("Feedthrough with id 0x" << std::hex << ftId << std::dec <<" not in preselection. Ignored.");
788  continue;
789  }
790  }
791 
792 
793 
794  larFebHeader=new LArFebHeader(FEBID);
795  //setROD header data
796 
797  larFebHeader->SetFormatVersion(robFrag.rod_version());
798  larFebHeader->SetSourceId(robFrag.rod_source_id());
799  larFebHeader->SetRunNumber(robFrag.rod_run_no());
800  larFebHeader->SetELVL1Id(robFrag.rod_lvl1_id());
801  larFebHeader->SetBCId(robFrag.rod_bc_id());
802  larFebHeader->SetLVL1TigType(robFrag.rod_lvl1_trigger_type());
803  larFebHeader->SetDetEventType(robFrag.rod_detev_type());
804 
805  //set DSP data
806  const unsigned nsample=BlStruct->getNumberOfSamples();
807  const uint32_t status= BlStruct->getStatus();
808  larFebHeader->SetDspCodeVersion(BlStruct->getDspCodeVersion());
809  larFebHeader->SetDspEventCounter(BlStruct->getDspEventCounter());
810  larFebHeader->SetRodResults1Size(BlStruct->getResults1Size());
811  larFebHeader->SetRodResults2Size(BlStruct->getResults2Size());
812  larFebHeader->SetRodRawDataSize(BlStruct->getRawDataSize());
813  larFebHeader->SetNbSweetCells1(BlStruct->getNbSweetCells1());
814  larFebHeader->SetNbSweetCells2(BlStruct->getNbSweetCells2());
815  larFebHeader->SetNbSamples(nsample);
816  larFebHeader->SetOnlineChecksum(BlStruct->onlineCheckSum());
817  larFebHeader->SetOfflineChecksum(BlStruct->offlineCheckSum());
818 
819  if(!BlStruct->hasControlWords()) {
820  larFebHeader->SetFebELVL1Id(robFrag.rod_lvl1_id());
821  larFebHeader->SetFebBCId(robFrag.rod_bc_id());
822  } else {
823  const uint16_t evtid = BlStruct->getCtrl1(0) & 0x1f;
824  const uint16_t bcid = BlStruct->getCtrl2(0) & 0x1fff;
825 
826  larFebHeader->SetFebELVL1Id(evtid);
827  larFebHeader->SetFebBCId(bcid);
828  for(int iadc=0;iadc<16;iadc++) {
829  larFebHeader->SetFebCtrl1(BlStruct->getCtrl1(iadc));
830  larFebHeader->SetFebCtrl2(BlStruct->getCtrl2(iadc));
831  larFebHeader->SetFebCtrl3(BlStruct->getCtrl3(iadc));
832  }
833  for(unsigned int i = 0; i<nsample; i++ ) {
834  larFebHeader->SetFebSCA(BlStruct->getRadd(0,i) & 0xff);
835  }
836  }
837  larFebHeader->SetRodStatus(status);
838  coll.push_back(larFebHeader);
839 
840  } while (BlStruct->nextFEB()); //Get NextFeb
841 }

◆ fillCollection() [6/6]

void LArRodDecoder::fillCollection ( const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment robFrag,
const uint32_t *  p,
uint32_t  n,
LArRawChannelContainer coll,
const CaloGain::CaloGain  gain 
) const

Definition at line 235 of file LArRodDecoder.cxx.

237 {
238  int32_t energy;
239  int32_t time;
240  int32_t quality;
241  uint32_t gain;
242  int fcNb;
243  HWIdentifier cId;
244  LArRodBlockStructure* BlStruct=prepareBlockStructure(robFrag, p, n, RequestedGain);
245  if (!BlStruct) return;
246 
247  do {
248  HWIdentifier fId( Identifier32(BlStruct->getFEBID()) );
249  unsigned int fId32 = fId.get_identifier32().get_compact();
250  if (!m_onlineHelper->isValidId(fId)) {
251  msg(MSG::WARNING) << "Invalid FEB identifer " << std::hex << fId32 << std::dec << ". Skipping" << endmsg;
252  continue;
253  }
254  // std::cout << "rawChan FEBID=" << std::hex <<fId32 << std::dec<<std::endl;
255 
256  if(m_febExchange) {
257  if (fId32 == m_febId1) {
259  fId32 = fId.get_identifier32().get_compact();
260  }
261  else if(fId32 == m_febId2) {
263  fId32 = fId.get_identifier32().get_compact();
264  }
265  }
266  if (!BlStruct->hasPhysicsBlock()) {
267  ATH_MSG_DEBUG("No Physics Data for this FEB - NULL event for FEBID 0x" << std::hex << BlStruct->getFEBID() << std::dec);
268  continue;
269  }
270 
271  // RL 04.17.2008 skip check for some FEBs
272  int do_check=1;
273  std::vector<unsigned int>::const_iterator it_feb = m_IgnoreCheckFEBs.begin();
274  std::vector<unsigned int>::const_iterator it_feb_end = m_IgnoreCheckFEBs.end();
275  for(; it_feb!=it_feb_end;++it_feb)
276  if(fId==*it_feb) {
277  do_check=0;
278  break;
279  }
280  if(do_check) {
281  //WL 31.10.2007 //check RodStatus-word to catch corrupt events
282  if (BlStruct->getStatus() & m_StatusNMask) {
283  msg(MSG::WARNING) << "RodStatus&0x" << std::hex << m_StatusNMask << " indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<". Ignored." << endmsg;
284  continue;
285  }
286  }
287 
288  // RL 05.11.2007 checksum
289  if(m_CheckSum) {
290  const uint32_t onsum = BlStruct->onlineCheckSum();
291  const uint32_t offsum = BlStruct->offlineCheckSum();
292  if(onsum!=offsum) {
293  msg(MSG::WARNING) << "Checksum error:" << endmsg;
294  msg(MSG::WARNING) << " online checksum = " << MSG::hex << onsum << endmsg;
295  msg(MSG::WARNING) << " offline checksum = " << MSG::hex << offsum << endmsg;
296  continue;
297  }
298  }
299 
300  if (m_vFTPreselection.size()) {
302  if (!std::binary_search(m_vFTPreselection.begin(), m_vFTPreselection.end(),ftId)) {
303  ATH_MSG_DEBUG("Feedthrough with id " << std::hex << ftId << std::dec <<" not in preselection. Ignored.");
304  continue;
305  }
306  }
307  const int NthisFebChannel=m_onlineHelper->channelInSlotMax(fId);
308  while (BlStruct->getNextEnergy(fcNb,energy,time,quality,gain)) {
309  if (fcNb>=NthisFebChannel)
310  continue;
311  cId = m_onlineHelper->channel_Id(fId,fcNb);
312  uint16_t iquality = 0;
313  uint16_t iprovenance = 0x1000;
314  if (quality>0) {
315  iprovenance |= 0x2000;
316  iquality = (quality & 0xFFFF);
317  }
318  LArRawChannel chan(cId, energy, time, iquality, iprovenance, (CaloGain::CaloGain)gain);
319  coll.push_back(chan);
320  }
321  }
322  while (BlStruct->nextFEB()); //Get NextFeb
323  return;
324 }

◆ fillCollectionHLT()

uint32_t LArRodDecoder::fillCollectionHLT ( const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment robFrag,
const uint32_t *  p,
uint32_t  n,
LArCellCollection coll,
LArRodBlockStructure *&  providedRodBlockStructure,
uint16_t &  rodMinorVersion = rMV,
uint32_t &  robBlockType = rBT 
) const
inline

Definition at line 290 of file LArRodDecoder.h.

294 {
295  LArCell *collElem=0; //Pointer to a new element to be added to the collection
296  uint32_t error = 0;
297 
298 #ifndef NDEBUG
299  ATH_MSG_VERBOSE("Prepare LArRodBlockStructure. Got a fragment of size " << n);
300 #endif
301 /* if (n<2) //Avoid segmentation fault
302  {(*m_log) << MSG::WARNING << "Got empty Rod Fragment!" << endmsg;
303  return;
304  }
305 */
306  const uint32_t blocksize=p[0]; //First word contains block size
307  if (blocksize>n) {
308  msg(MSG::ERROR) << "Got truncated ROD Fragment!" << endmsg;
309  // First Bit is truncated (see also below)
310  error|= 0x1;
311  return error;
312  }
313 
314  //Get version and blocktype form header
315  eformat::helper::Version ver(robFrag.rod_version());
316  const uint16_t rMV_present=ver.minor_version();
317  const uint32_t rBT_present=robFrag.rod_detev_type()&0xff;
318 
319  LArRodBlockStructure* BlStruct(nullptr);
320  if ( !providedRodBlockStructure || (rodMinorVersion!=rMV_present) || (robBlockType!=rBT_present) ){
321  BlStruct = prepareBlockStructure1 (rMV_present, rBT_present);
322  if (!BlStruct) {
323  // Second Bit is block empty or unknown
324  error|= 0x2;
325  return error;
326  }
327  providedRodBlockStructure = BlStruct;
328  rodMinorVersion = rMV_present;
329  robBlockType = rBT_present;
330  } else BlStruct = providedRodBlockStructure;
331 
332  BlStruct->setFragment(p,n);
333  for(LArCellCollection::iterator ii=coll.begin();ii!=coll.end();++ii)
334  (*ii)->setEnergyFast(0.0);
335 
336  int32_t energy(0);
337  int32_t time;
338  int32_t quality;
339  uint32_t gain;
340  CaloGain::CaloGain calogain;
341  int fcNb;
342  int nfeb;
343  calogain=CaloGain::LARNGAIN;
344  if(!BlStruct->setGain(calogain)){
345  ATH_MSG_DEBUG("Setting the Gain Problem");
346  }
347 
348  int feb_number=0;
349  do //Loop over FEB's
350  {
351  HWIdentifier fId(BlStruct->getFEBID());
352  if (!(fId.get_identifier32().get_compact())) {
353 #ifndef NDEBUG
354  ATH_MSG_DEBUG("Bad FebID=0x"<< std::hex << BlStruct->getFEBID() << std::dec << " found for this FEB, skipping it!");
355 #endif
356  // Third Bit is FEB ID issue (disabled - use 0x20 instead)
357  //error|= 0x4;
358  continue;
359  }
360  // RL 05.11.2007 checksum
361  if(m_CheckSum) {
362  uint32_t onsum = BlStruct->onlineCheckSum();
363  uint32_t offsum = BlStruct->offlineCheckSum();
364  if(onsum!=offsum) {
365  msg(MSG::WARNING) << "Checksum error:" << endmsg;
366  msg(MSG::WARNING) << " online checksum = 0x" << MSG::hex << onsum << endmsg;
367  msg(MSG::WARNING) << " offline checksum = 0x" << MSG::hex << offsum << MSG::dec << endmsg;
368  // Fourth Bit CheckSum issue (maybe disabled!)
369  error|= 0x8;
370  continue;
371  }
372  }
373  feb_number++;
374 
375  if ( BlStruct->hasPhysicsBlock() ) {
376  if ( fId == m_febIdHLT ) nfeb = 128; // This is the second feb
377  else nfeb = 0;
378  int NthisFebChannel=128 ; // m_onlineHelper->channelInSlotMax(fId);
379  uint16_t iquality;
380  uint16_t iprovenance;
381  while (BlStruct->getNextEnergy(fcNb,energy,time,quality,gain)) {
382  if (fcNb>=NthisFebChannel) continue;
383  collElem = coll[fcNb+nfeb];
384  iprovenance=0x1000; // data comes from DSP computation
385  iquality=0;
386  if ( quality>=0 ) { iprovenance|= 0x2000; iquality=(quality& 0xffff);}
387  // time converted to ns
388  collElem->set(energy, time*1e-3, iquality, iprovenance, (CaloGain::CaloGain)gain);
389  //setCellEnergy(collElem,energy, time, quality, (CaloGain::CaloGain)gain);
390  }
391  continue;
392  }
393  }
394  while (BlStruct->nextFEB()); //Get NextFeb
395  // Error meaning data corruption. Maybe in any FEB
396  if ( BlStruct->report_error() ) error |= 0x1;
397  // error of uncompatible number of cells is bit 5
398  unsigned int collection_size = coll.size();
399  if ( feb_number== 0 && collection_size>0 ) error |= 0x20;
400  if ( feb_number== 1 && collection_size !=128 ) error |= 0x20;
401  if ( feb_number== 2 && collection_size !=256 ) error |= 0x20;
402  return error;
403 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ interfaceID()

const InterfaceID & LArRodDecoder::interfaceID ( )
static

Definition at line 71 of file LArRodDecoder.cxx.

72 { return IID_ILArRodDecoder; }

◆ makeBlockStructure()

std::unique_ptr< LArRodBlockStructure > LArRodDecoder::makeBlockStructure ( unsigned int  rodBlockType,
unsigned int  rodMinorVersion 
) const
private

Definition at line 921 of file LArRodDecoder.cxx.

923 {
924  switch (rodBlockType) {
925  case 2:
926  // RodBlockType 2 = Transparent mode only
927  switch (rodMinorVersion) {
928  case 0: // Transparent mode v0 05.01.2004
929  case 1: // Transparent mode v0
930  case 2: // Transparent mode v0
931  case 3: // Transparent mode v0
932  case 4: // Transparent mode v0
933  return std::make_unique<LArRodBlockTransparentV0<LArRodBlockHeaderTransparentV0> >();
934  case 5: // Calibration (Transparent mode) v1 17.01.2006
935  return std::make_unique<LArRodBlockCalibrationV1>();
936  case 6: // Calibration (Transparent mode) v3 31.05.2006
937  case 7: // Calibration (Transparent mode) v3
938  case 8: // Calibration (Transparent mode) v3
939  case 9: // Calibration (Transparent mode) v3
940  case 10:// Calibration (Transparent mode) v3
941  case 11:// Calibration (Transparent mode) v3
942  case 12:// Calibration (Transparent mode) v3
943  return std::make_unique<LArRodBlockCalibrationV3>();
944  default:
945  break;
946  }
947  break;
948 
949  case 3:
950  // RodBlockType 3 = Test mode
951  return std::make_unique<LArRodBlockTransparentV0<LArRodBlockHeaderTransparentV0> >();
952 
953  case 4:
954  // RodBlockType 4 = Physics mode
955  switch (rodMinorVersion) {
956  case 0: // Physics mode v0 05.01.2004 first draft
957  return std::make_unique<LArRodBlockPhysicsV0>();
958  case 1: // Physics mode v1 19.08.2004 only small differences
959  return std::make_unique<LArRodBlockPhysicsV1>();
960  case 2: // Physics mode v2 05.10.2004 adapted to real DSP data
961  case 3: // Physics mode v2
962  case 4: // Physics mode v2
963  case 5: // Physics mode v2
964  case 6: // Physics mode v2
965  case 7: // Physics mode v2
966  case 8: // Physics mode v2
967  return std::make_unique<LArRodBlockPhysicsV2>();
968  case 9: // Physics mode v4 10.07.2007 for commissioning
969  return std::make_unique<LArRodBlockPhysicsV4>();
970  case 10: // Physics mode v5 16.06.2008 for LHC
971  case 11: // Physics mode v5 16.06.2008 for LHC
972  {
973  auto bl = std::make_unique<LArRodBlockPhysicsV5>();
974  if (m_requiredPhysicsNSamples > 0) {
975  bl->setRequiredNSamples(m_requiredPhysicsNSamples);
976  }
977  return bl;
978  }
979  case 12: // Physics mode v5 09.03.2011 for LHC
980  {
981  auto bl = std::make_unique<LArRodBlockPhysicsV6>();
982  if (m_requiredPhysicsNSamples > 0) {
983  bl->setRequiredNSamples(m_requiredPhysicsNSamples);
984  }
985  return bl;
986  }
987  default:
988  break;
989  }
990  break;
991 
992  case 5:
993  // RodBlockType 5 = Physics simulation mode
994  // Physics mode v3 11.04.2005 for simulation
995  return std::make_unique<LArRodBlockPhysicsV3>();
996 
997  case 6:
998  // RodBlockType 6 = Physics test mode
999  switch (rodMinorVersion) {
1000  case 0: // Physics mode v0 05.01.2004 first draft
1001  return std::make_unique<LArRodBlockPhysicsV0>();
1002  case 1: // Physics mode v2 05.10.2004 adapted to real DSP data
1003  case 2: // Physics mode v2
1004  return std::make_unique<LArRodBlockPhysicsV2>();
1005  default:
1006  break;
1007  }
1008  break;
1009 
1010  case 7:
1011  // RodBlockType 7 = Calibration mode
1012  switch (rodMinorVersion) {
1013  case 0: // Calibration mode v0 05.01.2004
1014  return std::make_unique<LArRodBlockCalibrationV0<LArRodBlockHeaderCalibrationV0> >();
1015  case 1: // Calibration mode v1 17.01.2006
1016  case 2: // Calibration mode v1
1017  case 3: // Calibration mode v1
1018  case 4: // Calibration mode v1
1019  return std::make_unique<LArRodBlockCalibrationV1>();
1020  case 5: // Calibration mode v2 26.04.2006
1021  return std::make_unique<LArRodBlockCalibrationV2>();
1022  case 6: // Calibration mode v3 31.05.2006
1023  case 7: // Calibration mode v3
1024  case 8: // Calibration mode v3
1025  case 9: // Calibration mode v3
1026  case 10:// Calibration mode v3
1027  case 11:// Calibration mode v3
1028  case 12:// Calibration mode v3
1029  return std::make_unique<LArRodBlockCalibrationV3>();
1030  default:
1031  break;
1032  }
1033  break;
1034 
1035  case 10:
1036  // RodBlockType 10 = Accumulated mode (used for pre-processed pedestal runs)
1037  // Accumulated mode v3 10.06.2008
1038  return std::make_unique<LArRodBlockAccumulatedV3>();
1039 
1040  default:
1041  break;
1042  }
1043 
1044  return std::unique_ptr<LArRodBlockStructure>();
1045 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::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< AlgTool >::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< AlgTool > >::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.

◆ prepareBlockStructure()

LArRodBlockStructure * LArRodDecoder::prepareBlockStructure ( const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment robFrag,
const uint32_t *  p,
uint32_t  n,
const CaloGain::CaloGain  RequestedGain 
) const
private

Definition at line 879 of file LArRodDecoder.cxx.

881 {
882 #ifndef NDEBUG
883  ATH_MSG_DEBUG("Prepare LArRodBlockStructure. Got a fragement of size " << n);
884 #endif
885 
886  //Get version and blocktype form header
887  eformat::helper::Version ver(robFrag.rod_version());
888  const uint16_t rodMinorVersion=ver.minor_version();
889  const uint32_t rodBlockType=robFrag.rod_detev_type()&0xff;
890  LArRodBlockStructure* BlStruct = prepareBlockStructure1 (rodMinorVersion, rodBlockType);
891  if (!BlStruct) {
892  return nullptr;
893  }
894 
895  //BlStruct->dumpFragment(v); // For testing purpose
896  if (!BlStruct->setFragment(p,n)) {
897  constexpr int maxMess = 100;
898  static std::atomic<int> nMess = 1;
899  int thismess = nMess++;
900  if (thismess <= maxMess) {
901  msg(MSG::ERROR) << "Could not set fragment (wrong number of samples in data ?) - container will not be filled" << endmsg;
902  if (thismess == maxMess)
903  msg(MSG::ERROR) << "This message will not be repeated" << endmsg;
904  }
905  return NULL;
906  }
907 #ifndef NDEBUG
908  ATH_MSG_VERBOSE("Set Fragment at address "<< &(p[0]) << " " << p[5]);
909 #endif
910 
911  BlStruct->setGain(RequestedGain); //Will be ignored if BlockStructure does not support fixed gains.
912  //FIXME: Very ugly hack! See explanation in LArRodDecoder.h
913  if (m_firstSample) {
914  BlStruct->setFirstSample(m_firstSample);
915  }
916  return BlStruct;
917 }

◆ prepareBlockStructure1()

LArRodBlockStructure * LArRodDecoder::prepareBlockStructure1 ( const uint16_t  rodMinorVersion,
const uint32_t  robBlockType 
) const
private

Definition at line 845 of file LArRodDecoder.cxx.

846 {
847  const unsigned MAXMINOR = 12;
848  const unsigned MAXTYPE = 10;
849 
850  if (rodMinorVersion > MAXMINOR || robBlockType > MAXTYPE) {
851  msg(MSG::ERROR) << "Bad Rod block type " << robBlockType
852  << " / " << rodMinorVersion << endmsg;
853  return nullptr;
854  }
855  std::vector<std::unique_ptr<LArRodBlockStructure> >& blstructs =
856  *m_blstructs.get();
857  unsigned int index = robBlockType * (MAXMINOR+1) + rodMinorVersion;
858  if (blstructs.empty()) {
859  blstructs.resize ((MAXMINOR+1)*(MAXTYPE+1));
860  }
861  if (!blstructs[index]) {
862  blstructs[index] = makeBlockStructure (robBlockType, rodMinorVersion);
863  }
864  if (!blstructs[index]) {
865  msg(MSG::ERROR) << "Bad Rod block type " << robBlockType
866  << " / " << rodMinorVersion << endmsg;
867  return nullptr;
868  }
869 
870 #ifndef NDEBUG
871  ATH_MSG_DEBUG("Found version " << rodMinorVersion << " of Rod block type " << robBlockType);
872 #endif
873 
874  return blstructs[index].get();
875 }

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

◆ setCellEnergy()

void LArRodDecoder::setCellEnergy ( LArCell element,
int  energy,
int  time,
int  quality,
CaloGain::CaloGain  gain 
) const
inlineprivate

Definition at line 405 of file LArRodDecoder.h.

408 {
409  // Set energy, time, quality and hardware gain
410  element->set((float)energy, (float)time, (double)quality, gain);
411 }

◆ setsecfeb()

void LArRodDecoder::setsecfeb ( HWIdentifier  feb)
inline

Definition at line 148 of file LArRodDecoder.h.

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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  }

◆ writeFebInfo()

void LArRodDecoder::writeFebInfo ( LArCellCollection m_coll,
LArFebEnergy febene 
) const
inlineprivate

Definition at line 413 of file LArRodDecoder.h.

415  {
416  coll.addfebenergy(febene);
417  }

Member Data Documentation

◆ ATLAS_THREAD_SAFE

SG::SlotSpecificObj<std::vector<std::unique_ptr<LArRodBlockStructure> > > m_blstructs LArRodDecoder::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 246 of file LArRodDecoder.h.

◆ m_CheckSum

bool LArRodDecoder::m_CheckSum
private

Definition at line 249 of file LArRodDecoder.h.

◆ m_delayScale

double LArRodDecoder::m_delayScale
private

Definition at line 244 of file LArRodDecoder.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evt

SG::ReadHandleKey<xAOD::EventInfo> LArRodDecoder::m_evt {this, "EvtInfo", "EventInfo", "EventInfo name"}
private

Definition at line 220 of file LArRodDecoder.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_febExchange

bool LArRodDecoder::m_febExchange
private

Definition at line 223 of file LArRodDecoder.h.

◆ m_febId1

unsigned int LArRodDecoder::m_febId1
private

Definition at line 224 of file LArRodDecoder.h.

◆ m_febId2

unsigned int LArRodDecoder::m_febId2
private

Definition at line 224 of file LArRodDecoder.h.

◆ m_febIdHLT

unsigned int LArRodDecoder::m_febIdHLT = 0U
private

Definition at line 224 of file LArRodDecoder.h.

◆ m_firstSample

int LArRodDecoder::m_firstSample
private

Definition at line 226 of file LArRodDecoder.h.

◆ m_IgnoreCheckFEBs

std::vector<unsigned int> LArRodDecoder::m_IgnoreCheckFEBs
private

Definition at line 241 of file LArRodDecoder.h.

◆ m_LArCellCorrNames

std::vector<std::string> LArRodDecoder::m_LArCellCorrNames
private

Definition at line 240 of file LArRodDecoder.h.

◆ m_LArCellCorrTools

std::vector<const CaloCellCorrection*> LArRodDecoder::m_LArCellCorrTools
private

Definition at line 242 of file LArRodDecoder.h.

◆ m_LArCellEthreshold

float LArRodDecoder::m_LArCellEthreshold
private

Definition at line 221 of file LArRodDecoder.h.

◆ m_MultiDSPMode

bool LArRodDecoder::m_MultiDSPMode
private

Definition at line 248 of file LArRodDecoder.h.

◆ m_onlineHelper

const LArOnlineID* LArRodDecoder::m_onlineHelper
private

Definition at line 239 of file LArRodDecoder.h.

◆ m_readtdc

bool LArRodDecoder::m_readtdc
private

Definition at line 222 of file LArRodDecoder.h.

◆ m_requiredPhysicsNSamples

unsigned short LArRodDecoder::m_requiredPhysicsNSamples
private

Definition at line 250 of file LArRodDecoder.h.

◆ m_StatusMask

uint32_t LArRodDecoder::m_StatusMask
private

Definition at line 238 of file LArRodDecoder.h.

◆ m_StatusNMask

uint32_t LArRodDecoder::m_StatusNMask = 0U
private

Definition at line 238 of file LArRodDecoder.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vBEPreselection

std::vector<int> LArRodDecoder::m_vBEPreselection
private

Definition at line 235 of file LArRodDecoder.h.

◆ m_vFinalPreselection

std::vector<unsigned int> LArRodDecoder::m_vFinalPreselection
private

Definition at line 237 of file LArRodDecoder.h.

◆ m_vFTPreselection

std::vector<int> LArRodDecoder::m_vFTPreselection
private

Definition at line 234 of file LArRodDecoder.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ m_vPosNegPreselection

std::vector<int> LArRodDecoder::m_vPosNegPreselection
private

Definition at line 236 of file LArRodDecoder.h.


The documentation for this class was generated from the following files:
LArRodBlockStructure
Definition: LArRodBlockStructure.h:48
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
LArRodBlockStructure::getNbSweetCells1
virtual uint16_t getNbSweetCells1() const
Definition: LArRodBlockStructure.cxx:255
LArRodBlockStructure::getNumberOfSamples
virtual uint32_t getNumberOfSamples() const
Definition: LArRodBlockStructure.cxx:245
LArRodBlockStructure::getRadd
virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const
Definition: LArRodBlockStructure.cxx:247
Identifier32
Definition: Identifier32.h:25
LArAccumulatedCalibDigit
Data class for calibration ADC samples preprocessed by the DSP.
Definition: LArAccumulatedCalibDigit.h:42
LArRodBlockStructure::hasAccumBlock
virtual uint32_t hasAccumBlock() const
Definition: LArRodBlockStructure.h:123
LArRodBlockStructure::hasPhysicsBlock
virtual uint32_t hasPhysicsBlock() const
Definition: LArRodBlockStructure.h:124
LArRodDecoder::m_readtdc
bool m_readtdc
Definition: LArRodDecoder.h:222
LArRodDecoder::m_vFinalPreselection
std::vector< unsigned int > m_vFinalPreselection
Definition: LArRodDecoder.h:237
LArRodBlockStructure::getStepIndex
virtual uint16_t getStepIndex() const
Definition: LArRodBlockStructure.h:486
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
LArRodBlockStructure::setGain
virtual int setGain(const int GainValue)
Definition: LArRodBlockStructure.cxx:224
checkCoolLatestUpdate.dg
dg
Definition: checkCoolLatestUpdate.py:9
LArRodBlockStructure::getNbSweetCells2
virtual uint16_t getNbSweetCells2() const
Definition: LArRodBlockStructure.cxx:256
CaloCell::set
void set(const CaloDetDescrElement *caloDDE, const Identifier &ID)
Fast method to change the identity of a cell.
Definition: CaloCell.cxx:90
LArRodDecoder::m_onlineHelper
const LArOnlineID * m_onlineHelper
Definition: LArRodDecoder.h:239
LArRodBlockStructure::getNextAccumulatedDigit
virtual int getNextAccumulatedDigit(int &channelNumber, std::vector< uint64_t > &SamplesSum, std::vector< uint64_t > &corr2Sum, uint32_t &gain)
Definition: LArRodBlockStructure.cxx:100
LArRodDecoder::m_CheckSum
bool m_CheckSum
Definition: LArRodDecoder.h:249
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
LArRodDecoder::m_evt
SG::ReadHandleKey< xAOD::EventInfo > m_evt
Definition: LArRodDecoder.h:220
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
index
Definition: index.py:1
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
LArRodDecoder::m_LArCellCorrNames
std::vector< std::string > m_LArCellCorrNames
Definition: LArRodDecoder.h:240
Issue
Configuration Issue
Definition: PscIssues.h:31
LArRodDecoder::m_febExchange
bool m_febExchange
Definition: LArRodDecoder.h:223
LArCalibLineMapping::calibSlotLine
const std::vector< HWIdentifier > & calibSlotLine(const HWIdentifier id) const
Definition: LArCalibLineMapping.cxx:15
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
LArRodBlockStructure::getNTrigger
virtual uint16_t getNTrigger() const
Definition: LArRodBlockStructure.h:480
LArRodBlockStructure::getRawDataSize
virtual uint16_t getRawDataSize() const
Definition: LArRodBlockStructure.cxx:254
LArCalibParams
Definition: LArCalibParams.h:28
LArRodBlockStructure::getNStep
virtual uint16_t getNStep() const
Definition: LArRodBlockStructure.h:491
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
LArRodDecoder::m_StatusNMask
uint32_t m_StatusNMask
Definition: LArRodDecoder.h:238
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
LArFebHeader::SetFormatVersion
void SetFormatVersion(const uint32_t formatVersion)
set the format version
Definition: LArFebHeader.h:101
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
LArRodDecoder::m_IgnoreCheckFEBs
std::vector< unsigned int > m_IgnoreCheckFEBs
Definition: LArRodDecoder.h:241
HWIdentifier
Definition: HWIdentifier.h:13
CaloGain::LARNGAIN
@ LARNGAIN
Definition: CaloGain.h:19
LArRodBlockStructure::hasRawDataBlock
virtual uint32_t hasRawDataBlock() const
Definition: LArRodBlockStructure.h:125
LArFebHeader::SetELVL1Id
void SetELVL1Id(const uint16_t elvl1Id)
set the EventID
Definition: LArFebHeader.h:113
LArRodBlockStructure::getNextEnergy
virtual int getNextEnergy(int &channelNumber, int32_t &energy, int32_t &time, int32_t &quality, uint32_t &gain)
Definition: LArRodBlockStructure.h:456
LArRodDecoder::m_MultiDSPMode
bool m_MultiDSPMode
Definition: LArRodDecoder.h:248
LArRodDecoder::m_vPosNegPreselection
std::vector< int > m_vPosNegPreselection
Definition: LArRodDecoder.h:236
LArRodBlockStructure::getCtrl2
virtual uint16_t getCtrl2(uint32_t adc) const
Definition: LArRodBlockStructure.cxx:249
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
LArFebHeader::SetLVL1TigType
void SetLVL1TigType(const uint32_t lvl1ttype)
set the Level1 trigger type ID
Definition: LArFebHeader.h:141
LArRodBlockStructure::offlineCheckSum
virtual uint32_t offlineCheckSum() const
Definition: LArRodBlockStructure.cxx:163
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
LArRodBlockStructure::getDspCodeVersion
virtual uint32_t getDspCodeVersion() const
Definition: LArRodBlockStructure.cxx:258
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
LArFebHeader::SetRodRawDataSize
void SetRodRawDataSize(const uint16_t size)
Definition: LArFebHeader.h:125
LArRodDecoder::m_vFTPreselection
std::vector< int > m_vFTPreselection
Definition: LArRodDecoder.h:234
LArRodDecoder::m_delayScale
double m_delayScale
Definition: LArRodDecoder.h:244
LArRodDecoder::m_StatusMask
uint32_t m_StatusMask
Definition: LArRodDecoder.h:238
LArRodDecoder::m_febId1
unsigned int m_febId1
Definition: LArRodDecoder.h:224
LArFebHeader::SetBCId
void SetBCId(const uint16_t bcid)
set the Bunch Crossing ID
Definition: LArFebHeader.h:117
LArCalibDigitContainer::setDelayScale
void setDelayScale(const double scale)
set delay scale
Definition: LArCalibDigitContainer.h:30
Pythia8_A14_NNPDF23LO_Var1Down_Common.ver
ver
Definition: Pythia8_A14_NNPDF23LO_Var1Down_Common.py:26
LArRodDecoder::makeBlockStructure
std::unique_ptr< LArRodBlockStructure > makeBlockStructure(unsigned int rodBlockType, unsigned int rodMinorVersion) const
Definition: LArRodDecoder.cxx:921
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
AthCommonDataStore
Definition: AthCommonDataStore.h:52
LArRodBlockStructure::getDspEventCounter
virtual int32_t getDspEventCounter() const
Definition: LArRodBlockStructure.cxx:264
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
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
LArFebHeader::SetFebELVL1Id
void SetFebELVL1Id(const uint16_t elvl1Id)
set the FEB Event ID
Definition: LArFebHeader.h:157
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
LArDigit
Liquid Argon digit base class.
Definition: LArDigit.h:25
lumiFormat.i
int i
Definition: lumiFormat.py:92
LArRawChannel
Liquid Argon ROD output object base class.
Definition: LArRawChannel.h:40
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
LArOnlineID_Base::channelInSlotMax
int channelInSlotMax(const HWIdentifier Id) const
Return the Maximum channel number of a given feb slot.
Definition: LArOnlineID_Base.cxx:286
ret
T ret(T t)
Definition: rootspy.cxx:260
beamspotman.n
n
Definition: beamspotman.py:731
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
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
LArRodBlockStructure::canSetCalibration
virtual bool canSetCalibration()
Definition: LArRodBlockStructure.h:99
LArFebHeader::SetRunNumber
void SetRunNumber(const uint32_t runNumber)
set the run number
Definition: LArFebHeader.h:109
LArCalibParams::isPulsed
bool isPulsed(const unsigned event, const HWIdentifier calibLineID) const
Definition: LArCalibParams.cxx:167
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
test_pyathena.parent
parent
Definition: test_pyathena.py:15
LArRodBlockStructure::hasControlWords
virtual uint32_t hasControlWords() const
Definition: LArRodBlockStructure.h:126
LArRodBlockStructure::getFEBID
uint32_t getFEBID() const
Definition: LArRodBlockStructure.h:297
delay
double delay(std::size_t d)
Definition: JetTrigTimerTest.cxx:14
LArFebHeader::SetDspCodeVersion
void SetDspCodeVersion(const uint32_t codeVersion)
set the version of the DSP code
Definition: LArFebHeader.h:149
LArRodDecoder::m_febId2
unsigned int m_febId2
Definition: LArRodDecoder.h:224
LArFebHeader::SetRodResults2Size
void SetRodResults2Size(const uint16_t size)
Definition: LArFebHeader.h:123
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
LArFebHeader::SetOnlineChecksum
void SetOnlineChecksum(const uint32_t checksum)
Definition: LArFebHeader.h:135
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
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
LArRodDecoder::m_vBEPreselection
std::vector< int > m_vBEPreselection
Definition: LArRodDecoder.h:235
LArFebHeader::SetDspEventCounter
void SetDspEventCounter(const uint32_t eventCounter)
set the Event number counted by the DSP code
Definition: LArFebHeader.h:153
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
LArCalibParams::DAC
unsigned DAC(const unsigned event, const HWIdentifier calibLineID) const
Definition: LArCalibParams.cxx:147
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:192
LArCalibDigit
Base class for LArDigits taken during calibration runs.
Definition: LArCalibDigit.h:29
LArFebHeader::SetSourceId
void SetSourceId(const uint32_t sourceID)
set the source Id
Definition: LArFebHeader.h:105
LArCalibParams::Delay
unsigned Delay(const unsigned event, const HWIdentifier calibLineID) const
Definition: LArCalibParams.cxx:128
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
LArCell
Data object for LAr calorimeter readout cell.
Definition: LArCell.h:53
LArRodDecoder::m_LArCellEthreshold
float m_LArCellEthreshold
Definition: LArRodDecoder.h:221
xAOD::bcid
setEventNumber setTimeStamp bcid
Definition: EventInfo_v1.cxx:133
LArRodBlockStructure::getResults2Size
virtual uint16_t getResults2Size() const
Definition: LArRodBlockStructure.cxx:253
LArRodDecoder::m_febIdHLT
unsigned int m_febIdHLT
Definition: LArRodDecoder.h:224
CaloGain::CaloGain
CaloGain
Definition: CaloGain.h:11
LArFebHeader::SetRodResults1Size
void SetRodResults1Size(const uint16_t size)
set the ROD block sizes
Definition: LArFebHeader.h:121
LArFebHeader::SetFebCtrl2
void SetFebCtrl2(const uint16_t ctrl2)
set the FEB Control Word #2
Definition: LArFebHeader.h:169
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
DeMoScan.index
string index
Definition: DeMoScan.py:362
LArRodDecoder::prepareBlockStructure
LArRodBlockStructure * prepareBlockStructure(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, const CaloGain::CaloGain RequestedGain) const
Definition: LArRodDecoder.cxx:879
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
LArFebHeader::SetNbSamples
void SetNbSamples(const uint16_t n)
Definition: LArFebHeader.h:133
a
TList * a
Definition: liststreamerinfos.cxx:10
LArFebHeader::SetFebSCA
void SetFebSCA(const uint16_t sca)
set the SCA's
Definition: LArFebHeader.h:181
h
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
LArRodBlockStructure::getNextRawData
virtual int getNextRawData(int &channelNumber, std::vector< short > &samples, uint32_t &gain)
Definition: LArRodBlockStructure.cxx:88
LArRodBlockStructure::getCtrl3
virtual uint16_t getCtrl3(uint32_t adc) const
Definition: LArRodBlockStructure.cxx:250
LArRodBlockStructure::getStatus
virtual uint32_t getStatus() const
Definition: LArRodBlockStructure.cxx:251
LArFebHeader::SetFebCtrl3
void SetFebCtrl3(const uint16_t ctrl3)
set the FEB Control Word #3
Definition: LArFebHeader.h:173
LArRodBlockStructure::getCtrl1
virtual uint16_t getCtrl1(uint32_t adc) const
Definition: LArRodBlockStructure.cxx:248
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LArFebHeader::SetNbSweetCells2
void SetNbSweetCells2(const uint16_t n)
Definition: LArFebHeader.h:131
LArRodBlockStructure::setFragment
bool setFragment(const uint32_t *p, uint32_t n)
Definition: LArRodBlockStructure.h:252
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
LArRodBlockStructure::getDelay
virtual uint16_t getDelay() const
Definition: LArRodBlockStructure.h:474
LArRodBlockStructure::hasCalibBlock
virtual uint32_t hasCalibBlock() const
Definition: LArRodBlockStructure.h:122
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
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
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
LArRodBlockStructure::onlineCheckSum
virtual uint32_t onlineCheckSum() const
Definition: LArRodBlockStructure.cxx:155
merge.status
status
Definition: merge.py:17
LArRodDecoder::m_requiredPhysicsNSamples
unsigned short m_requiredPhysicsNSamples
Definition: LArRodDecoder.h:250
LArRodBlockStructure::getPulsed
virtual bool getPulsed(unsigned channelNumber) const
Definition: LArRodBlockStructure.h:462
LArFebHeader::SetFebBCId
void SetFebBCId(const uint16_t bcid)
set the FEB Bunch Crossing ID
Definition: LArFebHeader.h:161
LArFebHeader::SetFebCtrl1
void SetFebCtrl1(const uint16_t ctrl1)
set the FEB Control Word #1
Definition: LArFebHeader.h:165
Identifier::get_identifier32
Identifier32 get_identifier32(void) const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
get_generator_info.error
error
Definition: get_generator_info.py:40
LArRodDecoder::prepareBlockStructure1
LArRodBlockStructure * prepareBlockStructure1(const uint16_t rodMinorVersion, const uint32_t robBlockType) const
Definition: LArRodDecoder.cxx:845
LArRodDecoder::m_firstSample
int m_firstSample
Definition: LArRodDecoder.h:226
LArFebHeader::SetDetEventType
void SetDetEventType(const uint32_t detEvType)
set the Detector event type ID
Definition: LArFebHeader.h:145
LArRodBlockStructure::getResults1Size
virtual uint16_t getResults1Size() const
Definition: LArRodBlockStructure.cxx:252
error
Definition: IImpactPoint3dEstimator.h:70
LArFebHeader::SetRodStatus
void SetRodStatus(const uint32_t status)
set the ROD Status
Definition: LArFebHeader.h:177
LArFebHeader::SetNbSweetCells1
void SetNbSweetCells1(const uint16_t n)
set the number of samples and cells above thresholds
Definition: LArFebHeader.h:129
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
LArOnOffIdMapping::isOnlineConnected
bool isOnlineConnected(const HWIdentifier &sid) const
Test whether a HWIdentifier is connected of not (inline)
Definition: LArOnOffIdMapping.h:121
LArFebHeader::SetOfflineChecksum
void SetOfflineChecksum(const uint32_t checksum)
Definition: LArFebHeader.h:137
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
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
fitman.k
k
Definition: fitman.py:528
LArRodBlockStructure::setFirstSample
void setFirstSample(const int rearrangeFirstSample)
Definition: LArRodBlockStructure.h:168