KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVSimNucleus.h
1
3
4#ifndef __KVSIMNUCLEUS_H
5#define __KVSIMNUCLEUS_H
6
7#include "KVNucleus.h"
8#include "KVNameValueList.h"
9
10class TVector3;
11
32class KVSimNucleus : public KVNucleus {
33
34protected:
38public:
39
41 KVSimNucleus(Int_t z, Int_t a = 0, Double_t ekin = 0) : KVNucleus(z, a, ekin), fDensity(0.0) {}
44 KVSimNucleus(const Char_t* sym, Double_t EperA = 0) : KVNucleus(sym, EperA), fDensity(0.0) {}
47
48 virtual ~KVSimNucleus() {}
49
50 void Copy(TObject& obj) const;
51
52 void SetPosition(Double_t rx, Double_t ry, Double_t rz);
53 void SetPosition(const TVector3&);
54 void SetDensity(Double_t);
55 Double_t GetDensity() const;
56 const TVector3* GetPosition() const
57 {
58 return &position;
59 }
61 {
62 return position;
63 }
64
66 {
67 return position.X();
68 }
70 {
71 return position.Y();
72 }
74 {
75 return position.Z();
76 }
78 {
79 return position.Mag();
80 }
81
83 {
86 return (GetRy() >= 0.0 ? position.Perp() : -(position.Perp()));
87 }
88
90 {
92 Double_t rmag = GetRmag();
93 if (rmag > 0)
94 return BoostVector().Dot(position) / rmag;
95 return 0;
96 }
97
103
105 {
106 return angmom.X();
107 }
109 {
110 return angmom.Y();
111 }
113 {
114 return angmom.Z();
115 }
117 {
118 return angmom.Mag();
119 }
120
121 void SetAngMom(Double_t lx, Double_t ly, Double_t lz);
123 {
124 SetAngMom(x, y, z);
125 }
126 const TVector3* GetAngMom() const
127 {
128 return &angmom;
129 }
131 {
132 return angmom;
133 }
135 {
137 return 1.2 * pow(GetA(), 1. / 3.);
138 }
140 {
142 return 0.4 * GetMass() * pow(GetRadius(), 2);
143 }
145 {
147 Double_t s = angmom.Mag();
148 return 0.5 * pow(hbar, 2) * (s * (s + 1.)) / GetMomentOfInertia();
149 }
150
151 Double_t GetEnergyLoss(const TString& detname) const;
152 TVector3 GetEntrancePosition(const TString& detname) const;
153 TVector3 GetExitPosition(const TString& detname) const;
154
155 void Print(Option_t* t = "") const;
156
157 KVSimNucleus operator+(const KVSimNucleus& rhs) const;
160
161 ClassDef(KVSimNucleus, 4) //Nuclear particle in a simulated event
162
163};
164
165#endif
int Int_t
char Char_t
double Double_t
const char Option_t
#define ClassDef(name, id)
winID h TVirtualViewer3D TVirtualGLPainter p
Description of properties and kinematics of atomic nuclei.
Definition KVNucleus.h:126
static Double_t hbar
hbar*c in MeV.fm
Definition KVNucleus.h:173
Int_t GetA() const
Double_t GetMass() const
Definition KVParticle.h:574
Nucleus in a simulated event.
KVSimNucleus(const Char_t *sym, Double_t EperA=0)
void SetPosition(Double_t rx, Double_t ry, Double_t rz)
set the position of the nucleus in position space
TVector3 GetExitPosition(const TString &detname) const
void SetSpin(Double_t x, Double_t y, Double_t z)
Double_t GetRadialBoost() const
KVSimNucleus & operator+=(const KVSimNucleus &rhs)
KVNucleus addition and assignment operator.
Double_t GetRz() const
Double_t GetRperp() const
void SetAngMom(Double_t lx, Double_t ly, Double_t lz)
set the angular momentum of the nucleus
TVector3 angmom
angular momentum of the particle in units
void Copy(TObject &obj) const
Copy l'object "this" vers obj.
Double_t GetEnergyLoss(const TString &detname) const
void SetDensity(Double_t)
set density of the nucleus in nuc/fm3
KVSimNucleus(const KVNucleus &n)
Double_t fDensity
density of the nucleus in nuc.fm-3
KVSimNucleus & operator=(const KVSimNucleus &)
copy assignment operator
virtual ~KVSimNucleus()
Double_t GetDensity() const
get density of the nucleus in nuc/fm3
Double_t GetRotationalEnergy() const
Double_t GetRadius() const
const TVector3 * GetPosition() const
Double_t GetLmag() const
TVector3 & GetAngMom()
void Print(Option_t *t="") const
Double_t GetLz() const
TVector3 position
vector position of the particle in fm
KVSimNucleus(Int_t z, Int_t a, TVector3 p)
TVector3 & GetPosition()
KVSimNucleus(Int_t z, Int_t a=0, Double_t ekin=0)
Double_t GetRx() const
Double_t GetRy() const
Double_t GetCosBoostPositionAngle() const
TVector3 GetEntrancePosition(const TString &detname) const
Double_t GetLx() const
KVSimNucleus operator+(const KVSimNucleus &rhs) const
const TVector3 * GetAngMom() const
Double_t GetMomentOfInertia() const
KVSimNucleus(Int_t z, Double_t t, TVector3 &p)
Double_t GetLy() const
Double_t GetRmag() const
Double_t Angle(const TVector3 &v) const
TVector3 BoostVector() const
Double_t Z() const
Double_t Y() const
Double_t Dot(const TVector3 &) const
Double_t X() const
Double_t Mag() const
Double_t Perp() const
RVec< PromoteTypes< T0, T1 > > pow(const RVec< T0 > &v, const T1 &y)
Double_t y[n]
Double_t x[n]
const Int_t n
Double_t Cos(Double_t)
TArc a
#define sym(otri1, otri2)