526 auto top_node =
this;
527 while (top_node->GetParentFrame()) {
693 return (phi < 0 ? 360. + phi : phi);
#define ClassDef(name, id)
Kinematical representation of a particle in different reference frames.
Extended TList class which owns its objects by default.
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
void SetValue(const Char_t *name, value_type value)
void RemoveParameter(const Char_t *name)
void AddAll(const TCollection *)
When all frames in a list are added to this one, this particle becomes the parent of all frames in th...
void Clear(Option_t *="")
When the frame list is cleared, this particle is no longer the parent of any frames in the list.
TObject * Remove(TObject *)
When a kinematical frame is removed, this particle is no longer the parent frame.
void Add(TObject *)
When a kinematical frame is added, this particle becomes the parent frame.
Base class for relativistic kinematics of massive particles.
Double_t GetWaveLength() const
Int_t GetNumberOfDefinedGroups() const
void AddGroups(KVUniqueNameList *un)
list of groups added to the current one
KVParticle * GetOriginal()
Double_t GetThermalWaveLength(Double_t temp) const
void SetIsOK(Bool_t flag=kTRUE)
void SetTheta(Double_t theta)
TVector3 * GetPInitial() const
Double_t GetREtran() const
virtual void SetMass(Double_t m)
void RemoveGroup(const Char_t *groupname)
Remove group from list of groups.
void AddGroup(const Char_t *groupname, const Char_t *from="") const
void SetPhi(Double_t phi)
const KVParticle * GetOriginal() const
TVector3 GetMomentum() const
void RemoveAllGroups()
Remove all groups.
KVUniqueNameList fGroups
list of momenta of the particle in different Lorentz-boosted frames
KVNameValueList * GetParameters() const
void SetXYZT(Double_t x, Double_t y, Double_t z, Double_t t)
Double_t GetTheta() const
KVParticle & operator=(const KVParticle &rhs)
KVParticle assignment operator.
void SetVectM(const TVector3 &spatial, Double_t mass)
const Char_t * GetFrameName(void) const
void SetMomentum(const TVector3 &v)
void SetVelocity(const TVector3 &)
Set velocity of particle (in cm/ns units)
const Char_t * GetName() const
return the field fName
KVParticle * GetParentFrame() const
void SetRho(Double_t rho)
Double_t GetEnergy() const
void ResetFrameCopyOnly() const
Double_t GetTransverseEnergy() const
void SetVectMag(const TVector3 &spatial, Double_t magnitude)
KVUniqueNameList * GetGroups() const
Double_t GetLongitudinalEnergy() const
Bool_t IsDetected() const
void SetKE(Double_t ecin)
virtual void Clear(Option_t *opt="")
Reset particle properties i.e. before creating/reading a new event.
void ls(Option_t *option="") const
void init()
default initialisation
KVNameValueList fParameters
a general-purpose list of parameters associated with this particle
Double_t GetCosTheta() const
void SetPxPyPzE(Double_t px, Double_t py, Double_t pz, Double_t e)
Bool_t HasFrame(const Char_t *frame) const
Double_t GetRTransverseEnergy() const
void SetMomentum(const TVector3 *v)
Double_t GetElong() const
virtual void Copy(TObject &) const
void Set4Mom(const TLorentzVector &p)
KVKinematicalFrame * get_parent_frame(const Char_t *, KVKinematicalFrame *F=nullptr) const
KVParticle * fOriginal
parent kinematical frame
virtual void Print(Option_t *t="") const
print out characteristics of particle
KVParticle InFrame(const KVFrameTransform &)
void SetE0(TVector3 *e=0)
TString fFrameName
non-persistent frame name field, sets when calling SetFrame method
void SetParameter(const Char_t *name, ValType value) const
void ListGroups() const
List all stored groups.
Bool_t fFrameCopyOnly
if != nullptr, this object is a representation of the particle in a kinematical frame
void SetFrameName(const Char_t *framename)
static Double_t kSpeedOfLight
speed of light in cm/ns
void SetParentFrame(KVParticle *p)
void SetXYZM(Double_t x, Double_t y, Double_t z, Double_t m)
void SetName(const Char_t *nom)
Set Name of the particle.
Bool_t IsDefaultKinematics() const
void SetFrame(const Char_t *frame, const KVFrameTransform &)
Int_t GetNumberOfDefinedFrames() const
KVParticle const * GetFrame(const Char_t *frame, Bool_t warn_and_return_null_if_unknown=kTRUE) const
void ChangeFrame(const KVFrameTransform &, const KVString &="")
void SetOriginal(KVParticle *p)
void SetGroups(KVUniqueNameList *un)
Define for the particle a new list of groups.
Bool_t BelongsToGroup(const Char_t *groupname) const
TVector3 * fE0
the momentum of the particle before it is slowed/stopped by an absorber
void ChangeDefaultFrame(const Char_t *, const Char_t *defname="")
void SetRandomMomentum(Double_t T, Double_t thmin, Double_t thmax, Double_t phmin, Double_t phmax, Option_t *opt="isotropic")
void SetPtEtaPhiM(Double_t pt, Double_t eta, Double_t phi, Double_t m)
const KVParticle * GetCurrentDefaultKinematics() const
KVParticle * fParentFrame
TString fName
non-persistent name field - Is useful
KVKinematicalFrame * get_frame(const Char_t *) const
void SetEnergy(Double_t e)
TVector3 GetVelocity() const
returns velocity vector in cm/ns units
Double_t GetVperp() const
Double_t GetEtran() const
const KVParticle * GetTopmostParentFrame() const
KVList * GetListOfFrames() const
void SetVect(const TVector3 &vect3)
TLorentzVector setters should not be used.
void SetFrameCopyOnly() const
TVector3 GetTransverseMomentum() const
Int_t _GetNumberOfDefinedFrames() const
used to inhibit full copying of particles in different kinematical frames
void SetPtEtaPhiE(Double_t pt, Double_t eta, Double_t phi, Double_t e)
void print_frames(TString fmt="") const
recursive print out of all defined kinematical frames
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Optimised list in which named objects can only be placed once.
virtual Int_t GetEntries() const
void SetXYZT(Double_t x, Double_t y, Double_t z, Double_t t)
void SetPtEtaPhiE(Double_t pt, Double_t eta, Double_t phi, Double_t e)
void SetPtEtaPhiM(Double_t pt, Double_t eta, Double_t phi, Double_t m)
void SetPhi(Double_t phi)
void SetRho(Double_t rho)
void SetVectMag(const TVector3 &spatial, Double_t magnitude)
void SetPxPyPzE(Double_t px, Double_t py, Double_t pz, Double_t e)
void SetTheta(Double_t theta)
void SetVect(const TVector3 &vect3)
void SetVectM(const TVector3 &spatial, Double_t mass)
void SetXYZM(Double_t x, Double_t y, Double_t z, Double_t m)
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Double_t Power(Double_t x, Double_t y)
constexpr Double_t DegToRad()
Double_t Sqrt(Double_t x)
constexpr Double_t RadToDeg()
constexpr Double_t TwoPi()