ATLAS Offline Software
MM_RawDataCnv_p3.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
5 
7 {
8  // Not much point calling this!
9 }
10 
11 void Muon::MM_RawDataCnv_p3::transToPers( const Muon::MM_RawData *transObj, Muon::MM_RawData_p3 *persObj, MsgStream & )
12 {
13  persObj->m_id = transObj->m_id.get_identifier32().get_compact();
14  persObj->m_channel = transObj->channel();
15  persObj->m_time = transObj->time();
16  persObj->m_charge = transObj->charge();
17  // explanation on magic relBCID by pscholer, March 2022:
18  // In order to know if the charge and the time are given in physical units or ADC counts, the transient MM_RawDataClass has a corresponding bolean.
19  // To save disk space, the persistent version does not have this bolean but uses the relBCID as flag. In detector data the relBCID has a range of 0-7,
20  // therefore a relBCID of 9 indicates that charge and time are in physical units while smaller values of the relBCID indicate that they are in counts.
21  // In case of the time being in nano seconds, the relBCID is anyhow not meaningfull while if the time is in counts it is decomposed into the tdo (time) and the relBCID.
22  if (transObj->timeAndChargeInCounts()){
23  persObj->m_relBcid = transObj->relBcid();
24  } else {
25  persObj->m_relBcid = 9;
26  }
27 }
28 
30 {
31  // explanation on magic relBCID by pscholer, March 2022:
32  // In order to know if the charge and the time are given in physical units or ADC counts, the transient MM_RawDataClass has a corresponding bolean.
33  // To save disk space, the persistent version does not have this bolean but uses the relBCID as flag. In detector data the relBCID has a range of 0-7,
34  // therefore a relBCID of 9 indicates that charge and time are in physical units while smaller values of the relBCID indicate that they are in counts.
35  // In case of the time being in nano seconds, the relBCID is anyhow not meaningfull while if the time is in counts it is decomposed into the tdo (time) and the relBCID.
36  bool timeAndChargeInCounts = ((persObj->m_relBcid) != 9);
37  Muon::MM_RawData* trans = new MM_RawData( Identifier (persObj->m_id),
38  persObj->m_channel,
39  persObj->m_time,
40  persObj->m_charge,
41  persObj->m_relBcid,
42  timeAndChargeInCounts);
43 
44  return trans;
45 }
46 
Muon::MM_RawData::relBcid
uint16_t relBcid() const
Definition: MM_RawData.h:65
Muon::MM_RawData_p3::m_time
int m_time
Definition: MM_RawData_p3.h:21
Muon::MM_RawData::timeAndChargeInCounts
bool timeAndChargeInCounts() const
Definition: MM_RawData.h:67
Muon::MM_RawData::time
int time() const
Definition: MM_RawData.h:64
Muon::MM_RawDataCnv_p3::createTransient
virtual MM_RawData * createTransient(const MM_RawData_p3 *persObj, MsgStream &log) override final
Definition: MM_RawDataCnv_p3.cxx:29
Muon::MM_RawData_p3::m_id
unsigned int m_id
FIXME! Remove this eventually.
Definition: MM_RawData_p3.h:16
Identifier32::get_compact
value_type get_compact(void) const
Get the compact id.
Definition: Identifier32.h:171
Muon::MM_RawData
Temporary class to hold the MM RDO.
Definition: MM_RawData.h:20
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
Muon::MM_RawData::channel
int channel() const
Definition: MM_RawData.h:63
Muon::MM_RawData::m_id
Identifier m_id
Definition: MM_RawData.h:29
Muon::MM_RawData::charge
int charge() const
Definition: MM_RawData.h:66
Muon::MM_RawData_p3::m_relBcid
uint16_t m_relBcid
Definition: MM_RawData_p3.h:25
Muon::MM_RawData_p3::m_channel
int m_channel
writing out channel id, time and charge
Definition: MM_RawData_p3.h:19
MM_RawDataCnv_p3.h
Muon::MM_RawDataCnv_p3::persToTrans
void persToTrans(const MM_RawData_p3 *persObj, MM_RawData *transObj, MsgStream &log) override final
Definition: MM_RawDataCnv_p3.cxx:6
Muon::MM_RawData_p3
Definition: MM_RawData_p3.h:12
Muon::MM_RawData_p3::m_charge
int m_charge
Definition: MM_RawData_p3.h:23
Muon::MM_RawDataCnv_p3::transToPers
void transToPers(const MM_RawData *transObj, MM_RawData_p3 *persObj, MsgStream &log) override final
Definition: MM_RawDataCnv_p3.cxx:11
Identifier::get_identifier32
Identifier32 get_identifier32(void) const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.