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 517 of file LArRodDecoder.cxx.

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

◆ 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 647 of file LArRodDecoder.cxx.

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

◆ 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 320 of file LArRodDecoder.cxx.

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

◆ 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 137 of file LArRodDecoder.cxx.

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

◆ 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 741 of file LArRodDecoder.cxx.

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

◆ 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 228 of file LArRodDecoder.cxx.

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

◆ 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 914 of file LArRodDecoder.cxx.

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

◆ 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 872 of file LArRodDecoder.cxx.

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

◆ prepareBlockStructure1()

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

Definition at line 838 of file LArRodDecoder.cxx.

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

◆ 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
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
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
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
Identifier::get_identifier32
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
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:122
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:134
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
Identifier32::get_compact
value_type get_compact() const
Get the compact id.
Definition: Identifier32.h:44
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:162
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:146
LArRodDecoder::m_vFTPreselection
std::vector< int > m_vFTPreselection
Definition: LArRodDecoder.h:234
LArRodDecoder::m_delayScale
double m_delayScale
Definition: LArRodDecoder.h:244
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
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:138
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:914
LArOnlineID_Base::channel
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
Definition: LArOnlineID_Base.cxx:1963
LArAccumulatedDigit
Data class for ADC samples and autocorr preprocessed by the DSP.
Definition: LArAccumulatedDigit.h:32
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
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
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:93
LArFebHeader::SetFebELVL1Id
void SetFebELVL1Id(const uint16_t elvl1Id)
set the FEB Event ID
Definition: LArFebHeader.h:178
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:85
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:287
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
LArRodBlockStructure::canSetCalibration
virtual bool canSetCalibration()
Definition: LArRodBlockStructure.h:99
LArFebHeader::SetRunNumber
void SetRunNumber(const uint32_t runNumber)
set the run number
Definition: LArFebHeader.h:130
LArCalibParams::isPulsed
bool isPulsed(const unsigned event, const HWIdentifier calibLineID) const
Definition: LArCalibParams.cxx:151
LArOnlineID_Base::channel_Id
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
Definition: LArOnlineID_Base.cxx:1565
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:170
LArRodDecoder::m_febId2
unsigned int m_febId2
Definition: LArRodDecoder.h:224
LArFebHeader::SetRodResults2Size
void SetRodResults2Size(const uint16_t size)
Definition: LArFebHeader.h:144
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:156
LArFebHeader
Holds information from the FEB Header.
Definition: LArFebHeader.h:21
LArOnlineID_Base::isValidId
bool isValidId(const HWIdentifier id) const
Returns false if the identifier is not a LAr-online id or any of the sub-fields is out of range.
Definition: LArOnlineID_Base.cxx:1329
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:174
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:131
LArRodBlockStructure::nextFEB
bool nextFEB()
Definition: LArRodBlockStructure.h:497
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
LArCalibDigit
Base class for LArDigits taken during calibration runs.
Definition: LArCalibDigit.h:29
LArFebHeader::SetSourceId
void SetSourceId(const uint32_t sourceID)
set the source Id
Definition: LArFebHeader.h:126
LArCalibParams::Delay
unsigned Delay(const unsigned event, const HWIdentifier calibLineID) const
Definition: LArCalibParams.cxx:112
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:142
LArFebHeader::SetFebCtrl2
void SetFebCtrl2(const uint16_t ctrl2)
set the FEB Control Word #2
Definition: LArFebHeader.h:190
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:364
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:872
LArFebHeader::SetNbSamples
void SetNbSamples(const uint16_t n)
Definition: LArFebHeader.h:154
a
TList * a
Definition: liststreamerinfos.cxx:10
LArFebHeader::SetFebSCA
void SetFebSCA(const uint16_t sca)
set the SCA's
Definition: LArFebHeader.h:202
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:194
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:152
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:623
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
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
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:182
LArFebHeader::SetFebCtrl1
void SetFebCtrl1(const uint16_t ctrl1)
set the FEB Control Word #1
Definition: LArFebHeader.h:186
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:838
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:166
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:198
LArFebHeader::SetNbSweetCells1
void SetNbSweetCells1(const uint16_t n)
set the number of samples and cells above thresholds
Definition: LArFebHeader.h:150
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:158
LArOnlineID_Base::feedthrough_Id
HWIdentifier feedthrough_Id(int barrel_ec, int pos_neg, int feedthrough) const
Create a feedthrough identifier from fields.
Definition: LArOnlineID_Base.cxx:1400
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