ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCnv
LArTPCnv
src
LArRawSCContainerCnv_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/LArRawSCContainerCnv_p1.h
"
6
#include "
LArRawEvent/LArRawSCContainer.h
"
7
#include "Identifier/Identifier.h"
8
#include "
LArTPCnv/LArRawSCContainer_p1.h
"
9
10
11
12
void
13
LArRawSCContainerCnv_p1::persToTrans
(
const
LArRawSCContainer_p1
* pers,
14
LArRawSCContainer
* trans, MsgStream &log)
const
15
{
16
const
unsigned
nDigits=pers->
m_channelID
.size();
17
if
(nDigits != pers->
m_chan
.size() || nDigits != pers->
m_nEnergies
.size()) {
18
log << MSG::ERROR <<
"LArRawSCContainer_p1 is inconsistent! "
<< std::endl;
19
return
;
20
}
21
22
trans->
clear
();
23
trans->
reserve
(nDigits);
24
std::vector<int>::const_iterator en_it=pers->
m_energies
.begin();
25
std::vector<int>::const_iterator en_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
std::vector<bool>::const_iterator satur_it=pers->
m_satur
.begin();
31
std::vector<bool>::const_iterator satur_it_e;
32
33
for
(
unsigned
i=0;i<nDigits;i++) {
34
en_it_e=en_it+pers->
m_nEnergies
[i];
35
std::vector<int> energies (en_it,en_it_e);
36
37
bcid_it_e=bcid_it+pers->
m_nEnergies
[i];
38
std::vector<unsigned short> bcids (bcid_it,bcid_it_e);
39
40
satur_it_e=satur_it+pers->
m_nEnergies
[i];
41
std::vector<bool> satur (satur_it,satur_it_e);
42
43
trans->
push_back
(
new
LArRawSC
(
HWIdentifier
(
Identifier32
(pers->
m_channelID
[i])),
44
pers->
m_chan
[i],
45
pers->
m_sourceId
[i],
46
std::move(energies),
47
std::move(bcids),
48
std::move(satur)));
49
50
en_it = en_it_e;
51
bcid_it = bcid_it_e;
52
satur_it = satur_it_e;
53
54
}
55
}
56
57
58
void
59
LArRawSCContainerCnv_p1::transToPers
(
const
LArRawSCContainer
* trans,
60
LArRawSCContainer_p1
* pers, MsgStream &
/*log*/
)
const
61
{
62
63
unsigned
int
nDigits=trans->
size
();
64
pers->
m_channelID
.reserve(nDigits);
65
pers->
m_chan
.reserve(nDigits);
66
pers->
m_sourceId
.reserve(nDigits);
67
pers->
m_nEnergies
.reserve(nDigits);
68
if
(nDigits) {
69
pers->
m_energies
.reserve(
70
(*(trans->
begin
()))->nsamples()
71
* nDigits);
72
pers->
m_bcids
.reserve(
73
(*(trans->
begin
()))->nsamples()
74
* nDigits);
75
pers->
m_satur
.reserve(
76
(*(trans->
begin
()))->nsamples()
77
* nDigits);
78
}
79
for
(
const
LArRawSC
* transDigit : *trans) {
80
pers->
m_channelID
.push_back(transDigit->hardwareID().get_identifier32().get_compact());
81
pers->
m_chan
.push_back(transDigit->chan());
82
pers->
m_sourceId
.push_back(transDigit->SourceId());
83
pers->
m_nEnergies
.push_back(transDigit->energies().size());
84
pers->
m_energies
.insert (pers->
m_energies
.end(),
85
transDigit->energies().begin(),
86
transDigit->energies().end());
87
pers->
m_bcids
.insert (pers->
m_bcids
.end(),
88
transDigit->bcids().begin(),
89
transDigit->bcids().end());
90
pers->
m_satur
.insert (pers->
m_satur
.end(),
91
transDigit->satur().begin(),
92
transDigit->satur().end());
93
}
94
}
95
LArRawSCContainerCnv_p1.h
LArRawSCContainer.h
LArRawSCContainer_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
LArRawSCContainerCnv_p1::transToPers
virtual void transToPers(const LArRawSCContainer *trans, LArRawSCContainer_p1 *pers, MsgStream &log) const override
Definition
LArRawSCContainerCnv_p1.cxx:59
LArRawSCContainerCnv_p1::persToTrans
virtual void persToTrans(const LArRawSCContainer_p1 *pers, LArRawSCContainer *trans, MsgStream &log) const override
Definition
LArRawSCContainerCnv_p1.cxx:13
LArRawSCContainer_p1
Definition
LArRawSCContainer_p1.h:12
LArRawSCContainer_p1::m_nEnergies
std::vector< unsigned short > m_nEnergies
Definition
LArRawSCContainer_p1.h:19
LArRawSCContainer_p1::m_satur
std::vector< bool > m_satur
Definition
LArRawSCContainer_p1.h:22
LArRawSCContainer_p1::m_bcids
std::vector< unsigned short > m_bcids
Definition
LArRawSCContainer_p1.h:21
LArRawSCContainer_p1::m_sourceId
std::vector< unsigned int > m_sourceId
Definition
LArRawSCContainer_p1.h:18
LArRawSCContainer_p1::m_energies
std::vector< int > m_energies
Definition
LArRawSCContainer_p1.h:20
LArRawSCContainer_p1::m_chan
std::vector< unsigned short > m_chan
Definition
LArRawSCContainer_p1.h:17
LArRawSCContainer_p1::m_channelID
std::vector< unsigned int > m_channelID
Definition
LArRawSCContainer_p1.h:16
LArRawSCContainer
Container class for LArRawSC.
Definition
LArRawSCContainer.h:17
LArRawSC
Liquid Argon SuperCell raw data.
Definition
LArRawSC.h:19
Generated on
for ATLAS Offline Software by
1.17.0