ATLAS Offline Software
Loading...
Searching...
No Matches
CSCSimHitCollectionCnv_p4.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 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_CSCid.reserve(size);
23 persCont->m_globalTime.reserve(size);
24 persCont->m_energyDeposit.reserve(size);
25 persCont->m_stX.reserve(size);
26 persCont->m_stY.reserve(size);
27 persCont->m_stZ.reserve(size);
28 persCont->m_enX.reserve(size);
29 persCont->m_enY.reserve(size);
30 persCont->m_enZ.reserve(size);
31 persCont->m_particleID.reserve(size);
32 // persCont->m_meanTime.reserve(size);
33 persCont->m_partLink.reserve(size);
34
35 // make convertor to handle HepMcParticleLinks
36 HepMcParticleLinkCnv_p3 hepMcPLCnv;
37 HepMcParticleLink_p3 persLink; // will use this as a temp object inside the loop
38
39 // loop through container, filling pers object
40 CSCSimHitCollection::const_iterator it = transCont->begin(), itEnd = transCont->end();
41 for (; it != itEnd; ++it) {
42 persCont->m_CSCid.push_back(it->CSCid());
43 persCont->m_globalTime.push_back(it->globalTime());
44 persCont->m_energyDeposit.push_back(it->energyDeposit());
45 persCont->m_stX.push_back(it->getHitStart().x());
46 persCont->m_stY.push_back(it->getHitStart().y());
47 persCont->m_stZ.push_back(it->getHitStart().z());
48 persCont->m_enX.push_back(it->getHitEnd().x());
49 persCont->m_enY.push_back(it->getHitEnd().y());
50 persCont->m_enZ.push_back(it->getHitEnd().z());
51 persCont->m_particleID.push_back(it->particleID());
52 // persCont->m_meanTime.push_back(hit->m_meanTime);
53
54 hepMcPLCnv.transToPers(&(it->particleLink()),&persLink, log);
55 persCont->m_partLink.push_back(persLink);
56 persCont->m_kineticEnergy.push_back(it->kineticEnergy());
57 }
58}
59
60
62 std::unique_ptr<CSCSimHitCollection> trans(new CSCSimHitCollection("DefaultCollectionName",persObj->m_globalTime.size()));
63 persToTrans(persObj, trans.get(), log);
64 return(trans.release());
65}
66
67
69{
70 HepMcParticleLinkCnv_p3 hepMcPLCnv;
71
72 //transCont->reserve(persCont->m_CSCid.size());//done in createTransient
73 for (unsigned int i = 0; i < persCont->m_CSCid.size(); i++) {
74 Amg::Vector3D start(persCont->m_stX[i], persCont->m_stY[i], persCont->m_stZ[i]);
75 Amg::Vector3D end(persCont->m_enX[i], persCont->m_enY[i], persCont->m_enZ[i]);
76
78 hepMcPLCnv.persToTrans(&persCont->m_partLink[i],&link, log);
79
80 transCont->Emplace (persCont->m_CSCid[i], persCont->m_globalTime[i], persCont->m_energyDeposit[i], start, end, persCont->m_particleID[i],
81 link, persCont->m_kineticEnergy[i]);
82 }
83}
AtlasHitsVector< CSCSimHit > CSCSimHitCollection
CONT::const_iterator const_iterator
const_iterator begin() const
void Emplace(Args &&... args)
size_type size() const
const_iterator end() const
virtual CSCSimHitCollection * createTransient(const Muon::CSCSimHitCollection_p4 *persObj, MsgStream &log)
virtual void persToTrans(const Muon::CSCSimHitCollection_p4 *persCont, CSCSimHitCollection *transCont, MsgStream &log)
virtual void transToPers(const CSCSimHitCollection *transCont, Muon::CSCSimHitCollection_p4 *persCont, MsgStream &log)
virtual void transToPers(const HepMcParticleLink *transObj, HepMcParticleLink_p3 *persObj, MsgStream &msg) const override
Method creating the persistent representation HepMcParticleLink_p3 from its transient representation ...
virtual void persToTrans(const HepMcParticleLink_p3 *persObj, HepMcParticleLink *transObj, MsgStream &msg) const override
Method creating the transient representation of HepMcParticleLink from its persistent representation ...
std::vector< float > m_enZ
Represents m_hitEnd in transient class.
std::vector< float > m_stZ
Represents m_hitStart in transient class.
std::vector< HepMcParticleLink_p3 > m_partLink
Eigen::Matrix< double, 3, 1 > Vector3D