|
ATLAS Offline Software
|
Go to the documentation of this file.
7 #include "Identifier/Identifier.h"
9 #include "GaudiKernel/GaudiException.h"
19 void writeTwoBits(std::vector<unsigned char>&
vec,
const unsigned idx,
const unsigned char val) {
20 const auto qr=std::div(
idx,4);
21 const unsigned char maskval=(
val&0x3) << 2*qr.rem;
22 vec[qr.quot]|=maskval;
26 unsigned char readTwoBits(
const std::vector<unsigned char>&
vec,
const unsigned idx) {
27 const auto qr=std::div(
idx,4);
28 const unsigned char&
v=
vec[qr.quot];
29 return (
v>>2*qr.rem) & 0x3;
34 m_idHelper(idHelper) {}
47 const unsigned nMaxChannels=4*(pers->
m_gain.size());
54 std::vector<short>::const_iterator samplesIt=pers->
m_samples.begin();
55 for(
unsigned idx=0;
idx<nMaxChannels;
idx++) {
59 std::vector<short>::const_iterator samplesIt_e=samplesIt+pers->
m_nSamples;
60 std::vector<short> samples(samplesIt,samplesIt_e);
65 samplesIt=samplesIt_e;
86 pers->
m_gain.assign(hashMax/4,0);
90 std::vector<const LArDigit*> digitsvsHash(hashMax,
nullptr);
91 for (
const LArDigit* transDigit : *trans) {
94 log << MSG::ERROR <<
"Encountered LArDigit Container with varying numbers of ADC samples" <<
endmsg;
95 throw GaudiException(
"Encountered LArDigit Container with varying numbers of ADC samples",
96 "LArDigitContainerCnv_p2",StatusCode::FAILURE);
98 digitsvsHash[
h]=transDigit;
103 std::vector<const LArDigit*>::const_iterator
it=digitsvsHash.begin();
104 std::vector<const LArDigit*>::const_iterator it_e=digitsvsHash.end();
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
JetConstituentVector::iterator iterator
virtual void persToTrans(const LArDigitContainer_p2 *pers, LArDigitContainer *trans, MsgStream &log) const override
unsigned constexpr int nChannels
IdentifierHash channel_Hash(HWIdentifier channelId) const
Create channel_hash from channel_Id.
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
const LArOnlineID_Base * m_idHelper
const std::vector< short > & samples() const
void reserve(unsigned int size)
Set the desired capacity.
std::vector< size_t > vec
virtual void transToPers(const LArDigitContainer *trans, LArDigitContainer_p2 *pers, MsgStream &log) const override
pointer nextElementPtr()
obtain the next available element in pool by pointer pool is resized if its limit has been reached On...
Liquid Argon digit base class.
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
void clear()
Erase all the elements in the collection.
Helper for the Liquid Argon Calorimeter cell identifiers.
size_type channelHashMax(void) const
Define channel hash tables max size.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
CaloGain::CaloGain gain() const
std::vector< short > m_samples
a typed memory pool that saves time spent allocation small object. This is typically used by containe...
Container class for LArDigit.
LArDigitContainerCnv_p2(const LArOnlineID_Base *idHelper)
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
size_type size() const noexcept
Returns the number of elements in the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
std::vector< unsigned char > m_gain