ATLAS Offline Software
Loading...
Searching...
No Matches
RPCSimHitCollectionCnv_p2.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
9
10//#include <cmath>
12
13// Gaudi
14#include "GaudiKernel/MsgStream.h"
15// Athena
17
19{
20 // for reasons of efficiency, set size before hand
21 unsigned int size=transCont->size();
22 persCont->m_RPCid.reserve(size);
23 persCont->m_globalTime.reserve(size);
24 persCont->m_stX.reserve(size);
25 persCont->m_stY.reserve(size);
26 persCont->m_stZ.reserve(size);
27 persCont->m_partLink.reserve(size);
28 persCont->m_stopX.reserve(size);
29 persCont->m_stopY.reserve(size);
30 persCont->m_stopZ.reserve(size);
31 persCont->m_energyDeposit.reserve(size);
32 persCont->m_stepLength.reserve(size);
33 persCont->m_particleEncoding.reserve(size);
34 persCont->m_kineticEnergy.reserve(size);
35
36 // make convertor to handle HepMcParticleLinks
37 HepMcParticleLinkCnv_p1 hepMcPLCnv;
38 HepMcParticleLink_p1 persLink; // will use this as a temp object inside the loop
39
40 // loop through container, filling pers object
41 RPCSimHitCollection::const_iterator it = transCont->begin(), itEnd = transCont->end();
42 for (; it != itEnd; ++it) {
43 persCont->m_RPCid.push_back(it->RPCid());
44 persCont->m_globalTime.push_back(it->globalTime());
45 persCont->m_stX.push_back(it->localPosition().x());
46 persCont->m_stY.push_back(it->localPosition().y());
47 persCont->m_stZ.push_back(it->localPosition().z());
48
49 hepMcPLCnv.transToPers(&it->particleLink(),&persLink, log);
50 persCont->m_partLink.push_back(persLink);
51 persCont->m_stopX.push_back(it->postLocalPosition().x());
52 persCont->m_stopY.push_back(it->postLocalPosition().y());
53 persCont->m_stopZ.push_back(it->postLocalPosition().z());
54 persCont->m_energyDeposit.push_back(it->energyDeposit());
55 persCont->m_stepLength.push_back(it->stepLength());
56 persCont->m_particleEncoding.push_back(it->particleEncoding());
57 persCont->m_kineticEnergy.push_back(it->kineticEnergy());
58 }
59}
60
61
63 std::unique_ptr<RPCSimHitCollection> trans(new RPCSimHitCollection("DefaultCollectionName",persObj->m_globalTime.size()));
64 persToTrans(persObj, trans.get(), log);
65 return(trans.release());
66}
67
68
70{
71 HepMcParticleLinkCnv_p1 hepMcPLCnv;
72
73 //transCont->reserve(persCont->m_RPCid.size());//done in createTransient
74 for (unsigned int i = 0; i < persCont->m_RPCid.size(); i++) {
75 Amg::Vector3D position(persCont->m_stX[i], persCont->m_stY[i], persCont->m_stZ[i]);
76 Amg::Vector3D postPosition(persCont->m_stopX[i], persCont->m_stopY[i], persCont->m_stopZ[i]);
77
78
80 hepMcPLCnv.persToTrans(&persCont->m_partLink[i],&link, log);
81
82 transCont->Emplace(persCont->m_RPCid[i], persCont->m_globalTime[i], position,
83 link, postPosition,
84 persCont->m_energyDeposit[i], persCont->m_stepLength[i],
85 persCont->m_particleEncoding[i], persCont->m_kineticEnergy[i]);
86 }
87}
88
AtlasHitsVector< RPCSimHit > RPCSimHitCollection
CONT::const_iterator const_iterator
const_iterator begin() const
void Emplace(Args &&... args)
size_type size() const
const_iterator end() const
virtual void persToTrans(const HepMcParticleLink_p1 *persObj, HepMcParticleLink *transObj, MsgStream &msg) const override
Method creating the transient representation of HepMcParticleLink from its persistent representation ...
virtual void transToPers(const HepMcParticleLink *transObj, HepMcParticleLink_p1 *persObj, MsgStream &msg) const override
Method creating the persistent representation HepMcParticleLink_p1 from its transient representation ...
std::vector< float > m_stopZ
Represents end-point of the g4 step in the transient class.
std::vector< float > m_stZ
Represents m_localPosition in transient class.
std::vector< HepMcParticleLink_p1 > m_partLink
virtual void transToPers(const RPCSimHitCollection *transCont, Muon::RPCSimHitCollection_p2 *persCont, MsgStream &log)
virtual RPCSimHitCollection * createTransient(const Muon::RPCSimHitCollection_p2 *persObj, MsgStream &log)
virtual void persToTrans(const Muon::RPCSimHitCollection_p2 *persCont, RPCSimHitCollection *transCont, MsgStream &log)
Eigen::Matrix< double, 3, 1 > Vector3D