 |
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
size_type channelHashMax() const
Define channel hash tables max size.
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.
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