ATLAS Offline Software
CscRawDataCnv_p3.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "MuonRDO/CscRawData.h"
6 #include "CscRawDataCnv_p3.h"
7 #include "GaudiKernel/GaudiException.h"
8 #include <TString.h> // for Form
9 
10 void
11 CscRawDataCnv_p3::transToPers(const CscRawData* trans, CscRawData_p3* pers, MsgStream &)
12 {
13  pers->m_amps = trans->samples();
14  pers->m_address = trans->address();
15  pers->m_id = trans->identify();
16  pers->m_time = trans->time();
17  pers->m_rpuID = trans->rpuID();
18  pers->m_width = trans->width();
19  pers->m_isTimeComputed = trans->isTimeComputed();
20  if (m_idHelp) {
21  // translate the transient (positional) hash into a geometrical hash as expected by the p3 persistent data format
23  Identifier id;
24  IdentifierHash geoHash;
25  if (!m_idHelp->cscIdHelper().get_id(trans->hashId(), id, &context)) {
26  if (!m_idHelp->cscIdHelper().get_channel_hash(id, geoHash)) pers->m_hashId = geoHash;
27  }
28  } else {
29  throw std::runtime_error(Form("File: %s, Line: %d\nCscRawDataCnv_p3::transToPers() - No MuonIdHelperSvc present (needed for channel hash conversion)", __FILE__, __LINE__));
30  }
31 }
32 
33 void
34 CscRawDataCnv_p3::persToTrans(const CscRawData_p3* pers, CscRawData* trans, MsgStream &)
35 {
36  *trans = CscRawData (pers->m_amps,
37  pers->m_address,
38  pers->m_id,
39  pers->m_rpuID,
40  pers->m_width);
41  // translate the persistent p3 (geometrical) hash into a positional hash (as expected by the transient data format)
42  trans->setHashID(pers->m_hashId);
43 
44  if (pers->m_isTimeComputed)
45  trans->setTime (pers->m_time);
46 }
CscRawData::rpuID
uint16_t rpuID() const
data access methods
Definition: CscRawData.h:125
CscRawData::address
uint32_t address() const
Definition: CscRawData.h:131
MuonIdHelper::get_id
virtual int get_id(const IdentifierHash &hash_id, Identifier &id, const IdContext *context=0) const override
Create compact id from hash id (return == 0 for OK)
Definition: MuonIdHelper.cxx:69
CscRawData_p3::m_hashId
uint32_t m_hashId
offline hash identifier of the first strip in the online cluster
Definition: CscRawData_p3.h:57
MuonIdHelper::channel_context
IdContext channel_context() const
id for channel
Definition: MuonIdHelper.cxx:745
CscRawDataCnv_p3::persToTrans
virtual void persToTrans(const CscRawData_p3 *persObj, CscRawData *transObj, MsgStream &log)
Definition: CscRawDataCnv_p3.cxx:34
CscRawData::isTimeComputed
bool isTimeComputed() const
Definition: CscRawData.h:129
CscRawData_p3::m_address
uint32_t m_address
online identifier of the first strip in the ROD cluster
Definition: CscRawData_p3.h:40
CscRawData_p3::m_rpuID
uint16_t m_rpuID
SPU -Sparsifier Processing Unit - identifier in which this strip is.
Definition: CscRawData_p3.h:51
CscRawData
CscRawData
Definition: MuonEventAthenaPoolTPCnv.cxx:59
CscRawData_p3::m_isTimeComputed
bool m_isTimeComputed
failed to compute the time in the ROD or not - if failure m_time = 0
Definition: CscRawData_p3.h:55
CscRawData::width
uint16_t width() const
Definition: CscRawData.h:128
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
CscRawData_p3::m_id
uint16_t m_id
online identifier of the collection in which this strip is
Definition: CscRawData_p3.h:42
CscRawDataCnv_p3::m_idHelp
Muon::IMuonIdHelperSvc * m_idHelp
Definition: CscRawDataCnv_p3.h:29
CscRawData::identify
uint16_t identify() const
Definition: CscRawData.h:126
CscRawData::setHashID
void setHashID(uint32_t hash)
Definition: CscRawData.h:121
CscRawData::hashId
uint32_t hashId() const
Definition: CscRawData.h:132
MuonIdHelper::get_channel_hash
virtual int get_channel_hash(const Identifier &id, IdentifierHash &hash_id) const
Definition: MuonIdHelper.cxx:138
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
CscRawData::samples
const std::vector< uint16_t > & samples() const
Definition: CscRawData.h:130
CscRawData.h
Muon::IMuonIdHelperSvc::cscIdHelper
virtual const CscIdHelper & cscIdHelper() const =0
access to CscIdHelper
CscRawData_p3
Definition: CscRawData_p3.h:17
CscRawData::time
uint16_t time() const
Definition: CscRawData.h:127
CscRawData
Class to hold the electronic output for a single CSC readout channel: n sampling ADC data + the addre...
Definition: CscRawData.h:21
CscRawData_p3::m_time
uint16_t m_time
online peaking time of the first strip: this is 0 if failed to compute time in the ROD
Definition: CscRawData_p3.h:49
CscRawDataCnv_p3.h
CscRawData_p3::m_amps
std::vector< uint16_t > m_amps
in common with _p1
Definition: CscRawData_p3.h:38
IdentifierHash
Definition: IdentifierHash.h:38
CscRawDataCnv_p3::transToPers
virtual void transToPers(const CscRawData *transObj, CscRawData_p3 *persObj, MsgStream &log)
Definition: CscRawDataCnv_p3.cxx:11
CscRawData::setTime
void setTime(uint16_t time)
Definition: CscRawData.h:119
IdContext
class IdContext
Definition: IdContext.h:34
CscRawData_p3::m_width
uint16_t m_width
number of consecutive strips forming the on-line cluster
Definition: CscRawData_p3.h:53