ATLAS Offline Software
Loading...
Searching...
No Matches
TrackRecord.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRACKRECORD_TRACKRECORD_H
6#define TRACKRECORD_TRACKRECORD_H
7
8#include "CLHEP/Vector/ThreeVector.h"
11
13public:
15 TrackRecord() = default;
16
18 virtual ~TrackRecord() = default;
19
22 int pdg,
23 int status,
24 double energy,
25 const CLHEP::Hep3Vector& momentum,
26 const CLHEP::Hep3Vector& postition,
27 double time,
28 int barcode,
29 int id,
30 const std::string& volumeName)
31 : m_pdgCode(pdg)
33 , m_energy(energy)
34 , m_momentum(momentum)
35 , m_position(postition)
36 , m_time(time)
38 , m_id(id)
39 , m_volName(volumeName)
40 {
42 m_partLink = std::make_unique<HepMcParticleLink>(m_barcode, 0, HepMcParticleLink::IS_POSITION, HepMcParticleLink::IS_BARCODE); // FIXME is barcode-based
43 }
44 }
45
48 : m_pdgCode(trc.m_pdgCode)
49 , m_status(trc.m_status)
50 , m_energy(trc.m_energy)
53 , m_time(trc.m_time)
54 , m_barcode(trc.m_barcode)
55 , m_id(trc.m_id)
56 , m_volName(trc.m_volName){
58 m_id = trc.id(); // Try a look-up via HepMcParticleLink
59 }
60}
61
64 if (this != &trc) {
65 m_pdgCode = trc.m_pdgCode;
66 m_status = trc.m_status;
67 m_energy = trc.m_energy;
70 m_time = trc.m_time;
71 m_barcode = trc.m_barcode;
72 m_id = trc.m_id;
74 m_id = trc.id(); // Try a look-up via HepMcParticleLink
75 }
76 m_volName = trc.m_volName;
77 }
78 return *this;
79 }
80
82 double GetEnergy() const {return m_energy;}
83
85 void SetEnergy(double e) {m_energy = e;}
86
88 CLHEP::Hep3Vector GetPosition() const {return m_position;}
89
91 void SetPosition(CLHEP::Hep3Vector p) {m_position = p;}
92
94 CLHEP::Hep3Vector GetMomentum() const {return m_momentum;}
95
97 void SetMomentum(CLHEP::Hep3Vector e) {m_momentum = e;}
98
100 int GetPDGCode() const {return m_pdgCode;}
101
103 void SetPDGCode(int pcode) {m_pdgCode = pcode;}
104
106 double GetTime() const {return m_time;}
107
109 void SetTime(double time) {m_time = time;}
110
112 const std::string& GetVolName() const {return m_volName;}
113
115 void SetVolName(const std::string& theName){m_volName = theName;}
116
118 int status() const {return m_status;}
119
122
124 int id() const {if (m_id == HepMC::INVALID_PARTICLE_ID && m_partLink) { return m_partLink->id(); } else { return m_id; } }
125
127 void SetID(int uniqueID){
128 m_id = uniqueID;
130 m_partLink = std::make_unique<HepMcParticleLink>(m_barcode, 0, HepMcParticleLink::IS_POSITION, HepMcParticleLink::IS_BARCODE); // FIXME is barcode-based
131 }
132 }
133
135 int barcode() const {return m_barcode;}
136
141 m_partLink = std::make_unique<HepMcParticleLink>(m_barcode, 0, HepMcParticleLink::IS_POSITION, HepMcParticleLink::IS_BARCODE); // FIXME is barcode-based
142 }
143 }
144
145private:
146 int m_pdgCode{0};
147 int m_status{0};
148 double m_energy{0};
149 CLHEP::Hep3Vector m_momentum{0,0,0};
150 CLHEP::Hep3Vector m_position{0,0,0};
151 double m_time{0.};
154 std::string m_volName{""};
155 std::unique_ptr<HepMcParticleLink> m_partLink{}; // nullptr unless object was produced by reading TrackRecord_p1.
156};
157
158#endif // TRACKRECORD_TRACKRECORD_H
CLHEP::Hep3Vector m_position
int GetPDGCode() const
PDG Code.
TrackRecord()=default
Default constructor.
double m_energy
void SetStatus(int status)
Set status.
TrackRecord & operator=(const TrackRecord &trc)
Assignement Operator.
Definition TrackRecord.h:63
void SetPDGCode(int pcode)
Set PDG code.
int status() const
status.
void SetEnergy(double e)
Set energy.
Definition TrackRecord.h:85
virtual ~TrackRecord()=default
Default destructor.
int barcode() const
bar code.
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
int id() const
unique ID - fall back to HepMcParticeLink if m_id has not been set directly
double GetEnergy() const
Energy.
Definition TrackRecord.h:82
double GetTime() const
Time.
CLHEP::Hep3Vector m_momentum
void SetID(int uniqueID)
Set uniqueID.
void SetVolName(const std::string &theName)
Set Volume name.
TrackRecord(int pdg, int status, double energy, const CLHEP::Hep3Vector &momentum, const CLHEP::Hep3Vector &postition, double time, int barcode, int id, const std::string &volumeName)
Constructor.
Definition TrackRecord.h:21
std::string m_volName
void SetTime(double time)
Set time.
const std::string & GetVolName() const
Volume name.
TrackRecord(const TrackRecord &trc)
Constructor.
Definition TrackRecord.h:47
std::unique_ptr< HepMcParticleLink > m_partLink
double m_time
constexpr int INVALID_PARTICLE_ID
constexpr int UNDEFINED_ID