ATLAS Offline Software
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 
8 
9 #include <algorithm>
10 #include <cassert>
11 
12 
14 {
15 }
16 
17 
19  CaloSamplingData* trans /*, MsgStream &*/) const
20 {
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();
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 
46  CaloSamplingData_p1* pers /*, MsgStream &*/) const
47 {
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 }
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
skel.it
it
Definition: skel.GENtoEVGEN.py:423
CaloSamplingData::m_varTypePattern
unsigned int m_varTypePattern
Definition: CaloSamplingData.h:117
CaloSamplingDataCnv_p1::persToTrans
void persToTrans(const CaloSamplingData_p1 *, CaloSamplingData *) const
Definition: CaloSamplingDataCnv_p1.cxx:18
CaloSamplingDataCnv_p1.h
CaloSamplingData_p1::m_dataStore
std::vector< std::vector< float > > m_dataStore
Definition: CaloSamplingData_p1.h:14
lumiFormat.i
int i
Definition: lumiFormat.py:92
CaloSamplingData::fastNsamp
size_t fastNsamp() const
Definition: CaloSamplingData.h:307
min
#define min(a, b)
Definition: cfImp.cxx:40
CaloSamplingDataCnv_p1::CaloSamplingDataCnv_p1
CaloSamplingDataCnv_p1()
Definition: CaloSamplingDataCnv_p1.cxx:13
CaloSamplingData::m_dataStore
variable_store_type m_dataStore
Definition: CaloSamplingData.h:115
CaloSamplingData.h
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
CaloSamplingDataCnv_p1::transToPers
void transToPers(const CaloSamplingData *, CaloSamplingData_p1 *) const
Definition: CaloSamplingDataCnv_p1.cxx:45
lumiFormat.fill
fill
Definition: lumiFormat.py:111
CaloSamplingData_p1
Definition: CaloSamplingData_p1.h:11
CaloSamplingData_p1::m_varTypePattern
unsigned int m_varTypePattern
Definition: CaloSamplingData_p1.h:13
CaloSamplingData_p1.h
calibdata.copy
bool copy
Definition: calibdata.py:27
CaloSamplingData
Simple data object to store all variables in calorimeter samplings.
Definition: CaloSamplingData.h:18
CaloSamplingData::index
size_t index(size_t theVariable, size_t theSampling) const
Definition: CaloSamplingData.h:301