ATLAS Offline Software
Loading...
Searching...
No Matches
CaloRingsCnv_p1.cxx
Go to the documentation of this file.
1
2
3/*
4 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
5*/
6
7// CaloRingsCnv_p1.cxx
8// Implementation file for class CaloRingsCnv_p1
9// Author: D.E.Ferreira de Lima<dferreir@mail.cern.ch>
11
12
13// STL includes
14
15// egammaEvent includes
17
18#include "GaudiKernel/GaudiException.h"
19
20// egammaEventTPCnv includes
22
24 CaloRings* trans,
25 MsgStream& /*msg*/ )
26{
27 if ( (!trans) || (!pers) ) {
28 throw GaudiException("CaloRingsCnv_p1::persToTrans called with NULL pers or trans!","CaloRingsCnv_p1::persToTrans", StatusCode::FAILURE);
29 return;
30 }
31
32
33 trans->clear();
34 unsigned int layerNumber = 0;
35 unsigned int ringNumber = 0;
36 // for each ringset
37 for (unsigned int i = 0; i < pers->m_nRings.size(); ++i) {
38 // translate layer information
39 std::vector<CaloCell_ID::CaloSample> layers;
40 for (unsigned int j = 0; j < pers->m_nLayers[i]; ++j) {
41 layers.push_back((CaloCell_ID::CaloSample) pers->m_layers[layerNumber++]);
42 }
43 // insert configuration
44 trans->addRingSet(pers->m_nRings[i], layers, pers->m_deltaEta[i], pers->m_deltaPhi[i]);
45 // copy ring values
46 for (unsigned int k = 0; k < pers->m_nRings[i]; ++k){
47 trans->at(i).at(k) = pers->m_rings[ringNumber++];
48 }
49 }
50
51}
52
54 CaloRings_p1* pers,
55 MsgStream& /*msg*/ )
56{
57 if ( (!trans) || (!pers) ) {
58 throw GaudiException("CaloRingsCnv_p1::transToPers called with NULL pers or trans!","CaloRingsCnv_p1::transToPers", StatusCode::FAILURE);
59 return;
60 }
61
62 pers->m_nRings.clear();
63 pers->m_rings.clear();
64 pers->m_nLayers.clear();
65 pers->m_layers.clear();
66 pers->m_deltaEta.clear();
67 pers->m_deltaPhi.clear();
68
69 for (unsigned int i = 0; i < trans->size(); ++i) {
70 pers->m_nRings.push_back(trans->at(i).m_rings.size());
71 for (unsigned int j = 0; j < trans->at(i).m_rings.size(); ++j) {
72 pers->m_rings.push_back(trans->at(i).m_rings[j]);
73 }
74 pers->m_nLayers.push_back(trans->at(i).m_layers.size());
75 for (unsigned int k = 0; k < trans->at(i).m_layers.size(); ++k) {
76 pers->m_layers.push_back((int) trans->at(i).m_layers[k]);
77 }
78 pers->m_deltaEta.push_back(trans->at(i).m_deltaEta);
79 pers->m_deltaPhi.push_back(trans->at(i).m_deltaPhi);
80 }
81}
CaloSampling::CaloSample CaloSample
Definition CaloCell_ID.h:53
virtual void persToTrans(const CaloRings_p1 *persObj, CaloRings *transObj, MsgStream &msg)
Method creating the transient representation of CaloRings from its persistent representation CaloRing...
virtual void transToPers(const CaloRings *transObj, CaloRings_p1 *persObj, MsgStream &msg)
Method creating the persistent representation CaloRings_p1 from its transient representation CaloRing...
std::vector< float > m_rings
Ring information.
std::vector< unsigned int > m_nRings
std::vector< unsigned int > m_nLayers
std::vector< int > m_layers
std::vector< float > m_deltaEta
std::vector< float > m_deltaPhi
size_t size() const
RingSet & at(unsigned int i)
void addRingSet(unsigned int numberOfRings, std::vector< CaloCell_ID::CaloSample > &layers, float deltaEta, float deltaPhi)
void clear()
size_t size() const
Definition CaloRings.cxx:33
float & at(unsigned int i)
RingSet ///.
Definition CaloRings.cxx:11
std::vector< CaloCell_ID::CaloSample > m_layers