ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Calorimeter
CaloCnv
CaloTPCnv
src
CaloSamplingDataCnv_p1.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
CaloTPCnv/CaloSamplingDataCnv_p1.h
"
6
#include "
CaloTPCnv/CaloSamplingData_p1.h
"
7
#include "
CaloEvent/CaloSamplingData.h
"
8
9
#include <algorithm>
10
#include <cassert>
11
12
13
CaloSamplingDataCnv_p1::CaloSamplingDataCnv_p1
()
14
{
15
}
16
17
18
void
CaloSamplingDataCnv_p1::persToTrans
(
const
CaloSamplingData_p1
* pers,
19
CaloSamplingData
* trans
/*, MsgStream &*/
)
const
20
{
21
trans->
m_varTypePattern
=pers->
m_varTypePattern
;
22
if
(pers->
m_dataStore
.empty()) {
23
trans->
m_dataStore
.clear();
24
return
;
25
}
26
27
size_t
nSamplings=trans->
fastNsamp
();
28
trans->
m_dataStore
.resize (trans->
index
(pers->
m_dataStore
.size(), 0));
29
30
std::vector<std::vector<float> >
::const_iterator
it=pers->
m_dataStore
.begin();
31
std::vector<std::vector<float> >
::const_iterator
it_e=pers->
m_dataStore
.end();
32
CaloSamplingData::variable_store_type::iterator pos = trans->
m_dataStore
.begin();
33
for
(;it!=it_e;++it) {
34
size_t
nPersSamplings = it->size();
35
size_t
nCopySamplings = std::min (nSamplings, nPersSamplings);
36
std::copy(it->begin(),it->begin()+nCopySamplings,pos);
37
if
(nCopySamplings < nSamplings)
38
std::fill(pos+nCopySamplings, pos+nSamplings, 0);
39
pos += nSamplings;
40
}
41
assert (pos == trans->
m_dataStore
.end());
42
}
43
44
45
void
CaloSamplingDataCnv_p1::transToPers
(
const
CaloSamplingData
* trans,
46
CaloSamplingData_p1
* pers
/*, MsgStream &*/
)
const
47
{
48
pers->
m_varTypePattern
=trans->
m_varTypePattern
;
49
if
(trans->
m_dataStore
.empty()) {
50
pers->
m_dataStore
.clear();
51
return
;
52
}
53
size_t
nsamp = trans->
fastNsamp
();
54
pers->
m_dataStore
.resize(trans->
m_dataStore
.size() / nsamp);
55
CaloSamplingData::variable_store_type::const_iterator it=trans->
m_dataStore
.begin();
56
CaloSamplingData::variable_store_type::const_iterator it_e=trans->
m_dataStore
.end();
57
unsigned
i=0;
58
for
(; it<it_e; it += nsamp) {
59
pers->
m_dataStore
[i].assign (it, it+nsamp);
60
++i;
61
}
62
}
CaloSamplingDataCnv_p1.h
CaloSamplingData.h
CaloSamplingData_p1.h
const_iterator
CaloSamplingDataCnv_p1::persToTrans
void persToTrans(const CaloSamplingData_p1 *, CaloSamplingData *) const
Definition
CaloSamplingDataCnv_p1.cxx:18
CaloSamplingDataCnv_p1::CaloSamplingDataCnv_p1
CaloSamplingDataCnv_p1()
Definition
CaloSamplingDataCnv_p1.cxx:13
CaloSamplingDataCnv_p1::transToPers
void transToPers(const CaloSamplingData *, CaloSamplingData_p1 *) const
Definition
CaloSamplingDataCnv_p1.cxx:45
CaloSamplingData_p1
Definition
CaloSamplingData_p1.h:11
CaloSamplingData_p1::m_dataStore
std::vector< std::vector< float > > m_dataStore
Definition
CaloSamplingData_p1.h:14
CaloSamplingData_p1::m_varTypePattern
unsigned int m_varTypePattern
Definition
CaloSamplingData_p1.h:13
CaloSamplingData
Simple data object to store all variables in calorimeter samplings.
Definition
CaloSamplingData.h:18
CaloSamplingData::fastNsamp
size_t fastNsamp() const
Definition
CaloSamplingData.h:307
CaloSamplingData::index
size_t index(size_t theVariable, size_t theSampling) const
Definition
CaloSamplingData.h:301
CaloSamplingData::m_varTypePattern
unsigned int m_varTypePattern
Definition
CaloSamplingData.h:117
CaloSamplingData::m_dataStore
variable_store_type m_dataStore
Definition
CaloSamplingData.h:115
Generated on
for ATLAS Offline Software by
1.17.0