ATLAS Offline Software
Loading...
Searching...
No Matches
STGC_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
12{
13 persObj->m_id = transObj->m_id.get_identifier32().get_compact();
14 persObj->m_time = transObj->tdo();
15 persObj->m_charge = transObj->charge();
16 persObj->m_isDead = transObj->isDead();
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_bcTag = transObj->bcTag();
24 } else {
25 persObj->m_bcTag = 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 bcTag has a maximum range of 0-7,
34 // therefore a bcTag 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 bcTag is anyhow not meaningfull while if the time is in counts it is decomposed into the tdo (time) and the bcTag.
36 bool timeAndChargeInCounts = ((persObj->m_bcTag) != 9);
37 Muon::STGC_RawData* trans = new STGC_RawData( Identifier (persObj->m_id),
38 persObj->m_bcTag,
39 static_cast<float>(persObj->m_time),// place holder for tdo->time from calibration
40 persObj->m_time,
41 persObj->m_charge,
42 persObj->m_isDead,
43 timeAndChargeInCounts);
44
45 return trans;
46}
47
value_type get_compact() const
Get the compact id.
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
void transToPers(const STGC_RawData *transObj, STGC_RawData_p3 *persObj, MsgStream &log) override final
virtual STGC_RawData * createTransient(const STGC_RawData_p3 *persObj, MsgStream &log) override final
void persToTrans(const STGC_RawData_p3 *persObj, STGC_RawData *transObj, MsgStream &log) override final
unsigned int m_id
FIXME!
bool timeAndChargeInCounts() const
unsigned int charge() const
uint16_t bcTag() const
unsigned int tdo() const
bool isDead() const