ATLAS Offline Software
Loading...
Searching...
No Matches
MdtCsmCnv_p1.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "MuonRDO/MdtCsm.h"
6#include "GaudiKernel/MsgStream.h"
7#include "GaudiKernel/ISvcLocator.h"
9
10#include "MdtCsmCnv_p1.h"
11#include <sstream>
12
13
15 SmartIF<StoreGateSvc> detStore{Gaudi::svcLocator()->service("DetectorStore", /*createIf*/false)};
16 if (!detStore) { return;}
17 StatusCode sc = detStore->retrieve(m_idHelper, "MDTIDHELPER");
18 if (sc != StatusCode::SUCCESS) {return; }
19 m_2CSM_Mod = m_idHelper->stationNameIndex("BME") != -1;
20}
21
22
23void
24MdtCsmCnv_p1::persToTrans(const MdtCsm_p1* persColl, MdtCsm* transColl, MsgStream &log)
25{
26 const Identifier mod_id{Identifier32(persColl->m_Id)};
27 IdentifierHash mod_hash{persColl->m_idHash};
28 if (m_idHelper) {
29 if (m_2CSM_Mod) m_idHelper->get_detectorElement_hash(mod_id,mod_hash);
30 else m_idHelper->get_module_hash(mod_id,mod_hash);
31 }
32 *transColl = MdtCsm (mod_id,
33 mod_hash,
34 persColl->m_SubDetId,
35 persColl->m_MrodId,
36 persColl->m_CsmId);
37 // The assignment above will leave *transColl as a view container.
38 // But it should own it's elements, so convert it back
39 // to an owning container.
40 transColl->clear (SG::OWN_ELEMENTS);
41
42 // Invoke vector converter from the base template
43 MdtCsm_Cnvp1_base_t::persToTrans( persColl, transColl, log );
44}
45
46
47void
48MdtCsmCnv_p1::transToPers(const MdtCsm* transColl, MdtCsm_p1* persColl, MsgStream &log)
49{
50 // log << MSG::DEBUG << " *** Writing out MdtCsm" << endmsg;
51
52 persColl->m_Id = transColl->identify().get_identifier32().get_compact();
53 persColl->m_idHash = transColl->identifyHash();
54
55 persColl->m_SubDetId = transColl->SubDetId();
56 persColl->m_MrodId = transColl->MrodId();
57 persColl->m_CsmId = transColl->CsmId();
58
59 // Invoke vector converter from the base template
60 MdtCsm_Cnvp1_base_t::transToPers( transColl, persColl, log );
61
62}
63
64
65
66
67
68
static Double_t sc
Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current MdtCsm
void clear()
Erase all the elements in the collection.
value_type get_compact() const
Get the compact id.
This is a "hash" representation of an Identifier.
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
virtual void persToTrans(const MdtCsm_p1 *persColl, MdtCsm *transColl, MsgStream &log)
Converts vector of PERS::value_type objects to vector of TRANS::value_type objects,...
const MdtIdHelper * m_idHelper
virtual void transToPers(const MdtCsm *transColl, MdtCsm_p1 *persColl, MsgStream &log)
Converts vector of TRANS::value_type objects to vector of PERS::value_type objects,...
uint16_t m_MrodId
Definition MdtCsm_p1.h:28
uint16_t m_SubDetId
Definition MdtCsm_p1.h:27
uint32_t m_Id
Definition MdtCsm_p1.h:24
uint32_t m_idHash
Definition MdtCsm_p1.h:25
uint16_t m_CsmId
Definition MdtCsm_p1.h:29
MDT RDOs : Chamber Service Module, container of AmtHits of a single Mdt chamber.
Definition MdtCsm.h:19
uint16_t CsmId() const
Returns the CSM online id (online identifier inside a MROD)
Definition MdtCsm.h:61
IdentifierHash identifyHash() const
Returns the CSM offline identifier hash (chamber offline id)
Definition MdtCsm.h:54
uint16_t MrodId() const
Returns the MROD id from the CSM header.
Definition MdtCsm.h:59
Identifier identify() const
Returns the CSM offline identifier (chamber offline id)
Definition MdtCsm.h:51
uint16_t SubDetId() const
Returns the sub-detector Id.
Definition MdtCsm.h:57
virtual void persToTrans(const PERS *persVect, TRANS *transVect, MsgStream &log)
Converts vector of PERS::value_type objects to vector of TRANS::value_type objects,...
virtual void transToPers(const TRANS *transVect, PERS *persVect, MsgStream &log)
Converts vector of TRANS::value_type objects to vector of PERS::value_type objects,...
@ OWN_ELEMENTS
this data object owns its elements