ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCnv
LArTPCnv
src
LArSCDigitContainerCnv_p1.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
LArTPCnv/LArSCDigitContainerCnv_p1.h
"
6
#include "
LArRawEvent/LArSCDigitContainer.h
"
7
#include "Identifier/Identifier.h"
8
#include "
LArTPCnv/LArSCDigitContainer_p1.h
"
9
10
11
12
void
13
LArSCDigitContainerCnv_p1::persToTrans
(
const
LArSCDigitContainer_p1
* pers,
14
LArSCDigitContainer
* trans, MsgStream &log)
const
15
{
16
const
unsigned
nDigits=pers->
m_channelID
.size();
17
if
(nDigits > 0 && (nDigits != pers->
m_chan
.size() || nDigits != pers->
m_nSamples
.size() || nDigits*pers->
m_nSamples
[0] != pers->
m_bcids
.size() || nDigits*pers->
m_nSamples
[0] != pers->
m_samples
.size())) {
18
log << MSG::ERROR <<
"LArSCDigitContainer_p1 is inconsistent! "
<< std::endl;
19
return
;
20
}
21
22
trans->
clear
();
23
trans->
reserve
(nDigits);
24
std::vector<unsigned short>::const_iterator sample_it=pers->
m_samples
.begin();
25
std::vector<unsigned short>::const_iterator sample_it_e;
26
27
std::vector<unsigned short>::const_iterator bcid_it=pers->
m_bcids
.begin();
28
std::vector<unsigned short>::const_iterator bcid_it_e;
29
30
for
(
unsigned
i=0;i<nDigits;i++) {
31
sample_it_e=sample_it+pers->
m_nSamples
[i];
32
std::vector<short> samples (sample_it,sample_it_e);
33
34
bcid_it_e=bcid_it+pers->
m_nSamples
[i];
35
std::vector<unsigned short> bcids (bcid_it,bcid_it_e);
36
37
trans->
push_back
(
new
LArSCDigit
(
HWIdentifier
(
Identifier32
(pers->
m_channelID
[i])),
38
pers->
m_chan
[i], pers->
m_sourceId
[i],
39
std::move(samples), std::move(bcids) ));
40
41
sample_it = sample_it_e;
42
bcid_it = bcid_it_e;
43
44
}
45
}
46
47
48
void
49
LArSCDigitContainerCnv_p1::transToPers
(
const
LArSCDigitContainer
* trans,
50
LArSCDigitContainer_p1
* pers, MsgStream &
/*log*/
)
const
51
{
52
53
unsigned
int
nDigits=trans->
size
();
54
pers->
m_channelID
.reserve(nDigits);
55
pers->
m_chan
.reserve(nDigits);
56
pers->
m_sourceId
.reserve(nDigits);
57
pers->
m_nSamples
.reserve(nDigits);
58
if
(nDigits) {
59
pers->
m_samples
.reserve(
60
(*(trans->
begin
()))->nsamples()
61
* nDigits);
62
pers->
m_bcids
.reserve(
63
(*(trans->
begin
()))->nsamples()
64
* nDigits);
65
}
66
for
(
const
LArSCDigit
* transDigit : *trans) {
67
pers->
m_channelID
.push_back(transDigit->hardwareID().get_identifier32().get_compact());
68
pers->
m_chan
.push_back(transDigit->Channel());
69
pers->
m_sourceId
.push_back(transDigit->SourceId());
70
pers->
m_nSamples
.push_back(transDigit->samples().size());
71
pers->
m_samples
.insert (pers->
m_samples
.end(),
72
transDigit->samples().begin(),
73
transDigit->samples().end());
74
pers->
m_bcids
.insert (pers->
m_bcids
.end(),
75
transDigit->BCId().begin(),
76
transDigit->BCId().end());
77
}
78
}
79
LArSCDigitContainerCnv_p1.h
LArSCDigitContainer.h
LArSCDigitContainer_p1.h
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
DataVector::clear
void clear()
Erase all the elements in the collection.
HWIdentifier
Definition
HWIdentifier.h:13
Identifier32
Definition
Identifier32.h:28
LArSCDigitContainerCnv_p1::persToTrans
virtual void persToTrans(const LArSCDigitContainer_p1 *pers, LArSCDigitContainer *trans, MsgStream &log) const override
Definition
LArSCDigitContainerCnv_p1.cxx:13
LArSCDigitContainerCnv_p1::transToPers
virtual void transToPers(const LArSCDigitContainer *trans, LArSCDigitContainer_p1 *pers, MsgStream &log) const override
Definition
LArSCDigitContainerCnv_p1.cxx:49
LArSCDigitContainer_p1
Definition
LArSCDigitContainer_p1.h:12
LArSCDigitContainer_p1::m_chan
std::vector< unsigned char > m_chan
Definition
LArSCDigitContainer_p1.h:17
LArSCDigitContainer_p1::m_bcids
std::vector< unsigned short > m_bcids
Definition
LArSCDigitContainer_p1.h:21
LArSCDigitContainer_p1::m_samples
std::vector< unsigned short > m_samples
Definition
LArSCDigitContainer_p1.h:20
LArSCDigitContainer_p1::m_channelID
std::vector< unsigned int > m_channelID
Definition
LArSCDigitContainer_p1.h:16
LArSCDigitContainer_p1::m_nSamples
std::vector< unsigned short > m_nSamples
Definition
LArSCDigitContainer_p1.h:19
LArSCDigitContainer_p1::m_sourceId
std::vector< unsigned int > m_sourceId
Definition
LArSCDigitContainer_p1.h:18
LArSCDigitContainer
Container class for LArSCDigit.
Definition
LArSCDigitContainer.h:18
LArSCDigit
Base class for LArDigits taken by LATOME.
Definition
LArSCDigit.h:21
Generated on
for ATLAS Offline Software by
1.17.0