10#ifndef PARTICLEEVENT_PARTICLESHALLOWCLONE_H
11#define PARTICLEEVENT_PARTICLESHALLOWCLONE_H 1
13#include "AthLinks/ElementLink.h"
94 const ChargeType theCharge = std::numeric_limits<ChargeType>::quiet_NaN(),
104 if ( std::isnan(theCharge) )
107 m_charge = (*theMasterLink)->charge();
168 virtual void setAthenaBarCode(AthenaBarCode_t id);
171 virtual void newVersion();
174 virtual void setVersion(AthenaBarCodeVersion_t newversion);
223 virtual int pdgId()
const;
260 friend class ::ParticleShallowCloneCnv_p1;
311 return (*m_masterLink)->getAthenaBarCode();
317 return (*m_masterLink)->hasSameAthenaBarCode(obj);
323 return (*m_masterLink)->hasSameAthenaBarCodeExceptVersion(obj);
329 return (*m_masterLink)->getVersion();
337 (*m_masterLink)->fillToken(theToken);
344 (*m_masterLink)->fillToken(theToken, theOther);
353 return (*m_masterLink)->dataType();
361 : &(**m_originLink).recVertex();
385 return (*m_masterLink)->hasPdgId();
391 return (*m_masterLink)->pdgId();
414 ( vertex,*theContainer );
uint64_t AthenaBarCode_t
barcode for all INav4Mom classes
AthenaBarCode_t AthenaBarCodeVersion_t
double ChargeType
typedef ChargeType used to anticipate changes here
DataVector< IParticle > IParticleContainer
IParticleContainer MasterContainer_t
ElementLink< MasterContainer_t > MasterLink_t
virtual ParticleDataType::DataType dataType() const
Return enum indicating real data, fast, or full simulation Return Type has a DataType enum with the f...
virtual const Trk::RecVertex * origin() const
Return a RecVertex corresponding to particle's Origin (used directly from this shallow clone particle...
ElementLink< VxContainer > m_originLink
Persistent pointer (ElementLink) to the origin of this particle.
virtual AthenaBarCodeVersion_t getVersion() const
Comparing & Versioning Control.
P4PxPyPzE momentum_type
publish the type of the base class (ie: 'traits-itize' it)
virtual void fillToken(INavigationToken &) const
Implement method from INavigable (forwareded to the orignal "master" particle)
virtual int pdgId() const
Return particle id (forwareded to the orignal "master" particle)
virtual bool hasSameAthenaBarCode(const IAthenaBarCode &) const
Comparing & Versioning Control.
virtual AthenaBarCode_t getAthenaBarCode() const
Public getter.
ParticleShallowClone(const MasterLink_t &theMasterLink, const I4Momentum *the4Mom, const ChargeType theCharge=std::numeric_limits< ChargeType >::quiet_NaN(), const ElementLink< VxContainer > *theOriginLink=0)
Standard constructor with an ElementLink to the original particle and all other parameters explicitly...
const momentum_type & momentumBase() const
access to underlying base type (I4Momentum-like)
virtual const ElementLink< VxContainer > & originLink() const
Return an ElementLink corresponding to particle's Origin (used directly from this shallow clone parti...
virtual bool hasCharge() const
method to check if charge information is available (used directly from this shallow clone particle)
ChargeType m_charge
Value of the charge of the particle (this has real meaning, only if hasCharge() returns true)
bool m_hasCharge
Switch to tell if this particle has a charge.
virtual void set_origin(const VxContainer *theContainer, int index)
Set method to set the charge of this shallow clone particle (the original "master" particle remains u...
const Master_t * getMasterPtr() const
Get a const pointer to the original "master" particle.
ParticleShallowClone()
The default constructor.
MasterLink_t m_masterLink
The persistent pointer (ElementLink) to the original "master" particle.
virtual bool hasSameAthenaBarCodeExceptVersion(const IAthenaBarCode &) const
Comparing & Versioning Control.
virtual ChargeType charge() const
returns charge as a typedef ChargeType currently Charge Type is a double for jets this may be changed...
virtual void set_charge(ChargeType theCharge)
Set method to set the charge of this shallow clone particle (the original "master" particle remains u...
virtual bool hasPdgId() const
method to check if particle id information is available (forwareded to the orignal "master" particle)
const MasterLink_t & getMasterLink() const
Copy constructor.
ParticleShallowClone(const MasterLink_t &theMasterLink)
Standard constructor with an ElementLink to the original particle.
ElementLink implementation for ROOT usage.
I4Momentum is an abstract base class providing 4-momentum behavior.
P4PxPyPzE is a class with 4-momentum behavior, for which Px, Py, Pz and M are data members.
P4PxPyPzE(const double px, const double py, const double pz, const double e)
constructor with all data members
Trk::RecVertex inherits from Trk::Vertex.
The namespace of all packages in PhysicsAnalysis/JetTagging.