5#ifndef ISF_EVENT_ISFPARTICLE_H
6#define ISF_EVENT_ISFPARTICLE_H
9#include "GaudiKernel/MsgStream.h"
22#include "CLHEP/Geometry/Point3D.h"
23#include "CLHEP/Geometry/Vector3D.h"
64 const HepGeom::Vector3D<double>& mom,
185 MsgStream&
dump(MsgStream& out)
const;
186 std::ostream&
dump(std::ostream& out)
const;
a link optimized in size for a GenParticle in a McEventCollection
The generic ISF particle definition,.
SimSvcID originSimID() const
the simulation service the particle originates from
TruthBinding * m_truth
< unique ID
const TruthBinding * getTruthBinding() const
pointer to the simulation truth - optional, can be 0
ParticleOrder m_order
particle simulation order
AtlasDetDescr::AtlasRegion prevGeoID() const
previous geoID that the particle was simulated in
std::ostream & dump(std::ostream &out) const
int barcode() const
the barcode
double charge() const
charge of the particle
const HepMcParticleLink * getParticleLink() const
HepMcParticleLink accessors.
void setNextSimID(SimSvcID simID)
register the next SimSvcID
void setUserInformation(ParticleUserInformation *userInfo)
void updatePosition(const Amg::Vector3D &position)
Update the position of the ISFParticle.
~ISFParticle()
Destructor.
const HepMcParticleLink * m_partLink
MsgStream & dump(MsgStream &out) const
Dump methods to be used by the overloaded stream operator (inheritance!)
const ParticleUserInformation * getUserInformation() const
get/set ParticleUserInformation
TruthBinding * getTruthBinding()
void setBarcode(int bc)
set a new barcode
void setOrder(ParticleOrder order)
ISFParticle & operator=(const ISFParticle &rhs)
Assignment operator.
int m_barcode
barcode TODO remove in favour of m_status + m_uid
ISFParticle()=delete
disallow default constructor
ParticleOrder getOrder() const
return the particle order (eg used to assure ID->Calo->MS simulation order)
const ParticleHistory & history() const
the particle's full history
double ekin() const
Kinetic energy.
bool isEqual(const ISFParticle &rhs) const
ParticleHistory m_history
bool isIdent(const ISFParticle &rhs) const
void setId(int id)
set a new unique ID
const Amg::Vector3D & momentum() const
The current momentum vector of the ISFParticle.
SimSvcID nextSimID() const
the next simulation service the particle will be sent to
void setNextGeoID(AtlasDetDescr::AtlasRegion geoID)
register the next AtlasDetDescr::AtlasRegion
void setParticleLink(const HepMcParticleLink *partLink)
AtlasDetDescr::AtlasRegion originGeoID() const
the sub-detector ID the particle's originates from
double timeStamp() const
Timestamp of the ISFParticle.
ParticleUserInformation * m_userInfo
user information stored with the ISFParticle
bool operator==(const ISFParticle &rhs) const
Comparisons.
const Amg::Vector3D & position() const
The current position of the ISFParticle.
int pdgCode() const
PDG value.
double mass() const
mass of the particle
ParticleUserInformation * getUserInformation()
SimSvcID prevSimID() const
the simulation service that previously treated this particle
AtlasDetDescr::AtlasRegion nextGeoID() const
next geoID the particle will be simulated in
void updateMomentum(const Amg::Vector3D &momentum)
Update the momentum of the ISFParticle.
void setTruthBinding(TruthBinding *truth)
Each ISFParticle carries a pointer to this class.
Eigen::Matrix< double, 3, 1 > Vector3D
AtlasRegion
A simple enum of ATLAS regions and sub-detectors.
constexpr int UNDEFINED_ID
std::pair< AtlasDetDescr::AtlasRegion, ISF::SimSvcID > DetRegionSvcIDPair
the datatype to be used to store each individual particle hop
std::vector< DetRegionSvcIDPair > ParticleHistory
the container type to be used for the particle hops
MsgStream & operator<<(MsgStream &sl, const ISF::ISFParticle &isfp)
uint8_t SimSvcID
Simulation service ID datatype.
int ParticleOrder
particle order definition