ATLAS Offline Software
LArRodDecoder.h
Go to the documentation of this file.
1 //Dear emacs, this is -*- c++ -*-
2 
3 /*
4  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 
8 #ifndef LARBYTESTREAM_LARRODDECODER_H
9 #define LARBYTESTREAM_LARRODDECODER_H
10 
11 #include <stdint.h>
12 
13 //#include "GaudiKernel/AlgTool.h"
14 //#include "GaudiKernel/MsgStream.h"
15 
17 #include "GaudiKernel/ToolHandle.h"
18 
20 #include "LArRawEvent/LArDigit.h"
29 
30 
33 
34 #include "ByteStreamData/RawEvent.h"
37 
42 
43 #include "eformat/Version.h"
44 #include "eformat/Issue.h"
45 #include <vector>
46 #include <string>
47 
49 class LArOnOffIdMapping;
50 
125 //using namespace OFFLINE_FRAGMENTS_NAMESPACE ;
126 
127 class LArRodDecoder : public AthAlgTool
128 {
129 
130 public:
131 // typedef EventFormat::RODHeader RODHEADER; //Give default template explicitly to work around apparent compiler bug
132 // typedef eformat::Header<const uint32_t *> RODHeader ;
133 
137  LArRodDecoder(const std::string& type, const std::string& name,
138  const IInterface* parent ) ;
139 
140  static const InterfaceID& interfaceID( ) ;
143  virtual ~LArRodDecoder();
144 
146 
147  // Simple method to associate the second feb
149 
150  // fast decoding for trigger
152  const uint32_t* p, uint32_t n, LArCellCollection& coll,
153  LArRodBlockStructure*& providedRodBlockStructure,
154  uint16_t& rodMinorVersion, uint32_t& robBlockType) const;
155 
157  const uint32_t* p, uint32_t n, LArRawChannelContainer& coll, const CaloGain::CaloGain gain) const;
158 
159  //Specialized method to convert ROD Data words into LArDigit
161  const uint32_t* p, uint32_t n, LArDigitContainer& coll, const CaloGain::CaloGain gain) const;
162 
163  //Specialized method to convert ROD Accumulated Calib Digit words into LArAccumulatedCalibDigit
165  const uint32_t* p,
166  uint32_t n,
168  const CaloGain::CaloGain gain,
169  const LArCalibLineMapping& calibLineMapping) const;
170 
171  //Specialized method to convert ROD Accumulated Digit words into LArAccumulatedDigit
174 
175  //Specialized method to convert ROD Data words into LArCalibDigit
177  const uint32_t* p,
178  uint32_t n,
180  const CaloGain::CaloGain gain,
181  const LArCalibLineMapping& calibLineMapping,
182  const LArOnOffIdMapping& onOffIdMapping) const;
183 
184  //Specialized method to convert ROD Data words to read the headers of the Feb
186  const uint32_t* p, uint32_t n, LArFebHeaderContainer& coll, const CaloGain::CaloGain) const;
187 
188  //Send an error reported by the eformat package to a MsgStream.
189  //inline void report_error (const ers::Issue& error, MsgStream& log);
190  //Inputs: error: The eformat exception
191  // log: The Gaudi MsgStream.
192 
193  //Check an eformat fragment for validity. Report an error if it's not valid.
194  template <class T>
195  inline bool check_valid (const T* frag, MsgStream& log) const;
196  //Inputs: frag: The fragment to check
197  // log: The Gaudi MsgStream.
198 
199 
200 
201 private:
202  LArRodBlockStructure* prepareBlockStructure1(const uint16_t rodMinorVersion, const uint32_t robBlockType) const;
204  const uint32_t* p, uint32_t n, const CaloGain::CaloGain RequestedGain) const;
205 
206  std::unique_ptr<LArRodBlockStructure>
207  makeBlockStructure (unsigned int rodBlockType,
208  unsigned int rodMinorVersion) const;
209 
210  inline void setCellEnergy(
211  LArCell* element, int energy, int time,
212  int quality, CaloGain::CaloGain gain) const ;
213 
214  inline void writeFebInfo(
215  LArCellCollection& m_coll, LArFebEnergy& febene) const;
216 
217  // inline void writeFebInfo(LArRawChannelContainer& m_coll, LArFebEnergy& febene);
218 
219 
220  SG::ReadHandleKey<xAOD::EventInfo> m_evt {this, "EvtInfo", "EventInfo", "EventInfo name"};
222  bool m_readtdc; // set to True if the tdc phase is read from the upper byte of the nsamples word.
223  bool m_febExchange; //HW cause, can not be fixed otherwise: Ugly hack for swapped FEB
224  unsigned int m_febId1, m_febId2, m_febIdHLT = 0U;
225 
226  int m_firstSample; // FIXED but kept for backward compatibility
227  // In Auto-Gain mode, the FEB does not send the samples in the right order, but the one first that
228  // was used for the gain selection. Unfortunatly, there is no way to extract the index if this sample
229  // form the raw data, one has to know it in advance (from the FEB configuration).
230  // For the time beeing, the jobOption ToolSvc.LArRodDecoder.FirstSample tells the LArRodDecoder what
231  // sample to put in front.
232 
233 
234  std::vector<int> m_vFTPreselection;
235  std::vector<int> m_vBEPreselection;
236  std::vector<int> m_vPosNegPreselection;
237  std::vector<unsigned int> m_vFinalPreselection;
240  std::vector<std::string> m_LArCellCorrNames;
241  std::vector<unsigned int> m_IgnoreCheckFEBs;
242  std::vector<const CaloCellCorrection*> m_LArCellCorrTools;
243 
244  double m_delayScale;
246  m_blstructs ATLAS_THREAD_SAFE;
247 
251 } ;
252 
253 template <class T>
254 inline bool LArRodDecoder::check_valid (const T* frag, MsgStream& /*log*/) const
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 }
279 
280 /*
281 inline void LArRodDecoder::report_error (const ers::Issue& error, MsgStream& log)
282 { log << MSG::FATAL << "Error reading bytestream event: " << error.what() << endmsg;
283 }
284 */
285 
286 // fillCollection for HLT without automatic BS Cnv
287 // default values
288 static uint16_t rMV=99;
289 static uint32_t rBT=99;
291  const uint32_t* p, uint32_t n,
292  LArCellCollection& coll,
293  LArRodBlockStructure*& providedRodBlockStructure, uint16_t& rodMinorVersion = rMV , uint32_t& robBlockType = rBT ) const
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 }
404 
406  LArCell* element, int energy, int time,
407  int quality, CaloGain::CaloGain gain) const
408 {
409  // Set energy, time, quality and hardware gain
410  element->set((float)energy, (float)time, (double)quality, gain);
411 }
412 
414  LArCellCollection& coll, LArFebEnergy& febene) const
415  {
416  coll.addfebenergy(febene);
417  }
418 
419 #endif
420 
LArRodBlockStructure
Definition: LArRodBlockStructure.h:48
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
LArFebEnergy.h
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
LArCalibDigitContainer.h
LArFebEnergy
Holds partial energy sums Ex,Ey,Ez for each Feb.
Definition: LArFebEnergy.h:21
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
LArRodBlockStructure::hasPhysicsBlock
virtual uint32_t hasPhysicsBlock() const
Definition: LArRodBlockStructure.h:124
LArRodDecoder::LArRodDecoder
LArRodDecoder(const std::string &type, const std::string &name, const IInterface *parent)
Constructor Standard AlgTool constructor.
Definition: LArRodDecoder.cxx:40
LArRodDecoder::m_readtdc
bool m_readtdc
Definition: LArRodDecoder.h:222
LArRodDecoder::m_vFinalPreselection
std::vector< unsigned int > m_vFinalPreselection
Definition: LArRodDecoder.h:237
LArRodBlockStructure::setGain
virtual int setGain(const int GainValue)
Definition: LArRodBlockStructure.cxx:224
CaloCell::set
void set(const CaloDetDescrElement *caloDDE, const Identifier &ID)
Fast method to change the identity of a cell.
Definition: CaloCell.cxx:90
LArAccumulatedDigitContainer
Container class for LArAccumulatedDigit.
Definition: LArAccumulatedDigitContainer.h:22
LArRodDecoder::m_onlineHelper
const LArOnlineID * m_onlineHelper
Definition: LArRodDecoder.h:239
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
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
LArAccumulatedDigitContainer.h
initialize
void initialize()
Definition: run_EoverP.cxx:894
LArCalibLineMapping
Definition: LArCalibLineMapping.h:17
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
Identifier::get_identifier32
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
LArRodDecoder::m_StatusNMask
uint32_t m_StatusNMask
Definition: LArRodDecoder.h:238
LArRodDecoder::writeFebInfo
void writeFebInfo(LArCellCollection &m_coll, LArFebEnergy &febene) const
Definition: LArRodDecoder.h:413
LArRodDecoder::interfaceID
static const InterfaceID & interfaceID()
Definition: LArRodDecoder.cxx:71
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
SG::ReadHandleKey< xAOD::EventInfo >
LArAccumulatedDigit.h
HWIdentifier
Definition: HWIdentifier.h:13
CaloGain::LARNGAIN
@ LARNGAIN
Definition: CaloGain.h:19
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
LArFebEnergyCollection.h
LArRodDecoder::m_vPosNegPreselection
std::vector< int > m_vPosNegPreselection
Definition: LArRodDecoder.h:236
LArRodBlockStructure::offlineCheckSum
virtual uint32_t offlineCheckSum() const
Definition: LArRodBlockStructure.cxx:163
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
CaloCellCorrection.h
Pythia8_A14_NNPDF23LO_Var1Down_Common.ver
ver
Definition: Pythia8_A14_NNPDF23LO_Var1Down_Common.py:26
LArCalibDigitContainer
Container class for LArCalibDigit.
Definition: LArCalibDigitContainer.h:19
LArCellCollection::addfebenergy
void addfebenergy(LArFebEnergy &larfebenergy)
set the feb energy
Definition: LArCellCollection.h:58
LArRodDecoder::makeBlockStructure
std::unique_ptr< LArRodBlockStructure > makeBlockStructure(unsigned int rodBlockType, unsigned int rodMinorVersion) const
Definition: LArRodDecoder.cxx:914
LArRodDecoder::ATLAS_THREAD_SAFE
SG::SlotSpecificObj< std::vector< std::unique_ptr< LArRodBlockStructure > > > m_blstructs ATLAS_THREAD_SAFE
Definition: LArRodDecoder.h:246
SG::SlotSpecificObj
Maintain a set of objects, one per slot.
Definition: AthenaKernel/AthenaKernel/SlotSpecificObj.h:70
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
LArDigit.h
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:93
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
eformat::ROBFragment
Definition: L1CaloBsDecoderUtil.h:12
beamspotman.n
n
Definition: beamspotman.py:731
RawEvent.h
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
LArRodDecoder::ATLAS_NOT_THREAD_SAFE
virtual StatusCode initialize ATLAS_NOT_THREAD_SAFE() override
AthAlgTool.h
LArAccumulatedCalibDigitContainer.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
LArRodDecoder::~LArRodDecoder
virtual ~LArRodDecoder()
Destructor.
Definition: LArRodDecoder.cxx:67
LArRodBlockStructure::getFEBID
uint32_t getFEBID() const
Definition: LArRodBlockStructure.h:297
LArRodDecoder::m_febId2
unsigned int m_febId2
Definition: LArRodDecoder.h:224
LArRodDecoder::check_valid
bool check_valid(const T *frag, MsgStream &log) const
Definition: LArRodDecoder.h:254
LArAccumulatedCalibDigit.h
LArRodDecoder::m_vBEPreselection
std::vector< int > m_vBEPreselection
Definition: LArRodDecoder.h:235
LArRodBlockStructure::nextFEB
bool nextFEB()
Definition: LArRodBlockStructure.h:497
LArCellCollection
Container Class for LArCell in a ROB used by EF.
Definition: LArCellCollection.h:28
LArRodDecoder::fillCollection
void fillCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArRawChannelContainer &coll, const CaloGain::CaloGain gain) const
Definition: LArRodDecoder.cxx:228
LArFebHeaderContainer.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
LArRodBlockStructure::report_error
bool report_error(void) const
Definition: LArRodBlockStructure.h:177
LArRodDecoder::setCellEnergy
void setCellEnergy(LArCell *element, int energy, int time, int quality, CaloGain::CaloGain gain) const
Definition: LArRodDecoder.h:405
LArOnlineID
Definition: LArOnlineID.h:20
LArCell
Data object for LAr calorimeter readout cell.
Definition: LArCell.h:53
LArRodDecoder::m_LArCellEthreshold
float m_LArCellEthreshold
Definition: LArRodDecoder.h:221
LArDigitContainer.h
LArRodDecoder::m_febIdHLT
unsigned int m_febIdHLT
Definition: LArRodDecoder.h:224
LArRodDecoder
This class provides conversion between ROD data and LArRawChannels.
Definition: LArRodDecoder.h:128
EventInfo.h
CaloGain::CaloGain
CaloGain
Definition: CaloGain.h:11
LArRodDecoder::fillCollectionHLT
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
Definition: LArRodDecoder.h:290
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
LArRodBlockStructure.h
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
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
LArCellCollection.h
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
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
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
LArDigitContainer
Container class for LArDigit.
Definition: LArDigitContainer.h:24
SlotSpecificObj.h
Maintain a set of objects, one per slot.
LArFebHeaderContainer
Container class for LArFebHeader.
Definition: LArFebHeaderContainer.h:20
LArRodBlockStructure::onlineCheckSum
virtual uint32_t onlineCheckSum() const
Definition: LArRodBlockStructure.cxx:155
LArRodDecoder::m_requiredPhysicsNSamples
unsigned short m_requiredPhysicsNSamples
Definition: LArRodDecoder.h:250
AthAlgTool
Definition: AthAlgTool.h:26
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
checker_macros.h
Define macros for attributes used to control the static checker.
LArRodDecoder::m_firstSample
int m_firstSample
Definition: LArRodDecoder.h:226
LArAccumulatedCalibDigitContainer
Container class for LArAccumulatedCalibDigit.
Definition: LArAccumulatedCalibDigitContainer.h:25
error
Definition: IImpactPoint3dEstimator.h:70
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
LArRodDecoder::m_LArCellCorrTools
std::vector< const CaloCellCorrection * > m_LArCellCorrTools
Definition: LArRodDecoder.h:242
LArRawChannelContainer.h
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
LArRawChannelContainer
Container for LArRawChannel (IDC using LArRawChannelCollection)
Definition: LArRawChannelContainer.h:26
LArRodDecoder::setsecfeb
void setsecfeb(HWIdentifier feb)
Definition: LArRodDecoder.h:148
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20