ATLAS Offline Software
Loading...
Searching...
No Matches
TrackRecordCnv_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
6
7
11
12
13void
14TrackRecordCnv_p1::persToTrans(const TrackRecord_p1* persObj, TrackRecord* transObj, MsgStream &log) const
15{
16 log << MSG::DEBUG << "TrackRecordCnv_p1::persToTrans called " << endmsg;
17
18 transObj->SetPDGCode(persObj->PDG_code());
19 transObj->SetEnergy((double) persObj->energy());
20 transObj->SetMomentum(CLHEP::Hep3Vector(persObj->momentumX(), persObj->momentumY(), persObj->momentumZ() ));
21 transObj->SetPosition(CLHEP::Hep3Vector(persObj->positionX(), persObj->positionY(), persObj->positionZ() ));
22 const int oldStatus = 1; // Given how TrackRecords are used currently; this will be correct for all but some very exotic samples.
23 transObj->SetStatus(HepMC::new_particle_status_from_old(oldStatus, persObj->barCode()));
24 transObj->SetTime((double) persObj->time());
25 transObj->SetBarcode(persObj->barCode()); // FIXME barcode-based
26 transObj->SetID(HepMC::INVALID_PARTICLE_ID); // FIXME Currently in order to set ID values correctly one would need to look into the McEventCollection
27 transObj->SetVolName(persObj->volName());
28}
29
30
31void
32TrackRecordCnv_p1::transToPers(const TrackRecord* transObj, TrackRecord_p1* persObj, MsgStream &log) const
33{
34 log << MSG::DEBUG << "TrackRecordCnv_p1::transToPers called " << endmsg;
35 persObj->m_PDG_code = transObj->GetPDGCode();
36 persObj->m_energy = (float) transObj->GetEnergy();
37 CLHEP::Hep3Vector mom = transObj->GetMomentum();
38 persObj->m_momentumX = (float) mom.x();
39 persObj->m_momentumY = (float) mom.y();
40 persObj->m_momentumZ = (float) mom.z();
41 CLHEP::Hep3Vector pos = transObj->GetPosition();
42 persObj->m_positionX = (float) pos.x();
43 persObj->m_positionY = (float) pos.y();
44 persObj->m_positionZ = (float) pos.z();
45 persObj->m_time = (float) transObj->GetTime();
46 persObj->m_barCode = HepMC::barcode(transObj); // FIXME barcode-based
47 persObj->m_volName = transObj->GetVolName();
48}
49
#define endmsg
virtual void persToTrans(const TrackRecord_p1 *persObj, TrackRecord *transObj, MsgStream &log) const override
virtual void transToPers(const TrackRecord *transObj, TrackRecord_p1 *persObj, MsgStream &log) const override
float time() const
const std::string & volName() const
int barCode() const
int PDG_code() const
float momentumY() const
float positionZ() const
float positionY() const
float positionX() const
std::string m_volName
float energy() const
float momentumZ() const
float momentumX() const
int GetPDGCode() const
PDG Code.
void SetStatus(int status)
Set status.
void SetPDGCode(int pcode)
Set PDG code.
void SetEnergy(double e)
Set energy.
Definition TrackRecord.h:85
CLHEP::Hep3Vector GetPosition() const
Position.
Definition TrackRecord.h:88
void SetPosition(CLHEP::Hep3Vector p)
Set position.
Definition TrackRecord.h:91
void SetBarcode(int barcode)
Set barcode.
void SetMomentum(CLHEP::Hep3Vector e)
Set momentum.
Definition TrackRecord.h:97
CLHEP::Hep3Vector GetMomentum() const
Momentum.
Definition TrackRecord.h:94
double GetEnergy() const
Energy.
Definition TrackRecord.h:82
double GetTime() const
Time.
void SetID(int uniqueID)
Set uniqueID.
void SetVolName(const std::string &theName)
Set Volume name.
void SetTime(double time)
Set time.
const std::string & GetVolName() const
Volume name.
constexpr int INVALID_PARTICLE_ID
int barcode(const T *p)
Definition Barcode.h:16
int new_particle_status_from_old(const int oldStatus, const int barcode)
Get particle status in the new scheme from the barcode and status in the old scheme.