KaliVeda  1.13/01
Heavy-Ion Analysis Toolkit
KVSimNucleus.h
Go to the documentation of this file.
1 
4 #ifndef __KVSIMNUCLEUS_H
5 #define __KVSIMNUCLEUS_H
6 
7 #include "KVNucleus.h"
8 #include "KVNameValueList.h"
9 
10 class TVector3;
11 
31 class KVSimNucleus : public KVNucleus {
32 
33 protected:
37 public:
38 
40  KVSimNucleus(Int_t z, Int_t a = 0, Double_t ekin = 0) : KVNucleus(z, a, ekin), fDensity(0.0) {}
41  KVSimNucleus(Int_t z, Double_t t, TVector3& p) : KVNucleus(z, t, p), fDensity(0.0) {}
42  KVSimNucleus(Int_t z, Int_t a, TVector3 p) : KVNucleus(z, a, p), fDensity(0.0) {}
43  KVSimNucleus(const Char_t* sym, Double_t EperA = 0) : KVNucleus(sym, EperA), fDensity(0.0) {}
44  KVSimNucleus(const KVSimNucleus&);
45  KVSimNucleus(const KVNucleus& n) : KVNucleus(n), fDensity(0.0) {}
46 
47  virtual ~KVSimNucleus() {}
48 
49  void Copy(TObject& obj) const;
50 
51  void SetPosition(Double_t rx, Double_t ry, Double_t rz);
52  void SetPosition(const TVector3&);
53  void SetDensity(Double_t);
54  Double_t GetDensity() const;
55  const TVector3* GetPosition() const
56  {
57  return &position;
58  }
60  {
61  return position;
62  }
63 
64  Double_t GetRx() const
65  {
66  return position.X();
67  }
68  Double_t GetRy() const
69  {
70  return position.Y();
71  }
72  Double_t GetRz() const
73  {
74  return position.Z();
75  }
76  Double_t GetRmag() const
77  {
78  return position.Mag();
79  }
80 
81  Double_t GetLx() const
82  {
83  return angmom.X();
84  }
85  Double_t GetLy() const
86  {
87  return angmom.Y();
88  }
89  Double_t GetLz() const
90  {
91  return angmom.Z();
92  }
93  Double_t GetLmag() const
94  {
95  return angmom.Mag();
96  }
97 
98  void SetAngMom(Double_t lx, Double_t ly, Double_t lz);
100  {
101  SetAngMom(x, y, z);
102  }
103  const TVector3* GetAngMom() const
104  {
105  return &angmom;
106  }
108  {
109  return angmom;
110  }
112  {
114  return 1.2 * pow(GetA(), 1. / 3.);
115  }
117  {
119  return 0.4 * GetMass() * pow(GetRadius(), 2);
120  }
122  {
124  Double_t s = angmom.Mag();
125  return 0.5 * pow(hbar, 2) * (s * (s + 1.)) / GetMomentOfInertia();
126  }
127 
128  Double_t GetEnergyLoss(const TString& detname) const;
129  TVector3 GetEntrancePosition(const TString& detname) const;
130  TVector3 GetExitPosition(const TString& detname) const;
131 
132  void Print(Option_t* t = "") const;
133 
134  KVSimNucleus operator+(const KVSimNucleus& rhs) const;
135  KVSimNucleus& operator+=(const KVSimNucleus& rhs);
137 
138  ClassDef(KVSimNucleus, 4) //Nuclear particle in a simulated event
139 
140 };
141 
142 #endif
int Int_t
char Char_t
double Double_t
const char Option_t
#define ClassDef(name, id)
double pow(double, double)
Description of properties and kinematics of atomic nuclei.
Definition: KVNucleus.h:125
static Double_t hbar
hbar*c in MeV.fm
Definition: KVNucleus.h:172
Int_t GetA() const
Definition: KVNucleus.cpp:799
Double_t GetMass() const
Definition: KVParticle.h:572
Nucleus in a simulated event.
Definition: KVSimNucleus.h:31
KVSimNucleus(const Char_t *sym, Double_t EperA=0)
Definition: KVSimNucleus.h:43
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)
Definition: KVSimNucleus.h:99
KVSimNucleus & operator+=(const KVSimNucleus &rhs)
KVNucleus addition and assignment operator.
Double_t GetRz() const
Definition: KVSimNucleus.h:72
void SetAngMom(Double_t lx, Double_t ly, Double_t lz)
set the angular momentum of the nucleus
TVector3 & GetPosition()
Definition: KVSimNucleus.h:59
TVector3 angmom
angular momentum of the particle in units
Definition: KVSimNucleus.h:35
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)
Definition: KVSimNucleus.h:45
Double_t fDensity
density of the nucleus in nuc.fm-3
Definition: KVSimNucleus.h:36
KVSimNucleus & operator=(const KVSimNucleus &)
copy assignment operator
virtual ~KVSimNucleus()
Definition: KVSimNucleus.h:47
Double_t GetDensity() const
get density of the nucleus in nuc/fm3
Double_t GetRotationalEnergy() const
Definition: KVSimNucleus.h:121
TVector3 & GetAngMom()
Definition: KVSimNucleus.h:107
Double_t GetRadius() const
Definition: KVSimNucleus.h:111
Double_t GetLmag() const
Definition: KVSimNucleus.h:93
void Print(Option_t *t="") const
Display nucleus parameters.
Double_t GetLz() const
Definition: KVSimNucleus.h:89
TVector3 position
vector position of the particle in fm
Definition: KVSimNucleus.h:34
KVSimNucleus(Int_t z, Int_t a, TVector3 p)
Definition: KVSimNucleus.h:42
KVSimNucleus(Int_t z, Int_t a=0, Double_t ekin=0)
Definition: KVSimNucleus.h:40
Double_t GetRx() const
Definition: KVSimNucleus.h:64
Double_t GetRy() const
Definition: KVSimNucleus.h:68
const TVector3 * GetAngMom() const
Definition: KVSimNucleus.h:103
TVector3 GetEntrancePosition(const TString &detname) const
const TVector3 * GetPosition() const
Definition: KVSimNucleus.h:55
Double_t GetLx() const
Definition: KVSimNucleus.h:81
KVSimNucleus operator+(const KVSimNucleus &rhs) const
Double_t GetMomentOfInertia() const
Definition: KVSimNucleus.h:116
KVSimNucleus(Int_t z, Double_t t, TVector3 &p)
Definition: KVSimNucleus.h:41
Double_t GetLy() const
Definition: KVSimNucleus.h:85
Double_t GetRmag() const
Definition: KVSimNucleus.h:76
Double_t Z() const
Double_t Y() const
Double_t X() const
Double_t Mag() const
Double_t y[n]
Double_t x[n]
const Int_t n
const long double s
Definition: KVUnits.h:94
auto * a
#define sym(otri1, otri2)