KaliVeda  1.12/06
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 
20 class KVSimNucleus : public KVNucleus {
21 
22 protected:
26 public:
27 
29  KVSimNucleus(Int_t z, Int_t a = 0, Double_t ekin = 0) : KVNucleus(z, a, ekin), fDensity(0.0) {}
30  KVSimNucleus(Int_t z, Double_t t, TVector3& p) : KVNucleus(z, t, p), fDensity(0.0) {}
31  KVSimNucleus(Int_t z, Int_t a, TVector3 p) : KVNucleus(z, a, p), fDensity(0.0) {}
32  KVSimNucleus(const Char_t* sym, Double_t EperA = 0) : KVNucleus(sym, EperA), fDensity(0.0) {}
33  KVSimNucleus(const KVSimNucleus&);
34  KVSimNucleus(const KVNucleus& n) : KVNucleus(n), fDensity(0.0) {}
35 
36  virtual ~KVSimNucleus() {}
37 
38  void Copy(TObject& obj) const;
39 
40  void SetPosition(Double_t rx, Double_t ry, Double_t rz);
41  void SetPosition(const TVector3&);
42  void SetDensity(Double_t);
43  Double_t GetDensity() const;
44  const TVector3* GetPosition() const
45  {
46  return &position;
47  }
49  {
50  return position;
51  }
52 
53  Double_t GetRx() const
54  {
55  return position.X();
56  }
57  Double_t GetRy() const
58  {
59  return position.Y();
60  }
61  Double_t GetRz() const
62  {
63  return position.Z();
64  }
65  Double_t GetRmag() const
66  {
67  return position.Mag();
68  }
69 
70  Double_t GetLx() const
71  {
72  return angmom.X();
73  }
74  Double_t GetLy() const
75  {
76  return angmom.Y();
77  }
78  Double_t GetLz() const
79  {
80  return angmom.Z();
81  }
82  Double_t GetLmag() const
83  {
84  return angmom.Mag();
85  }
86 
87  void SetAngMom(Double_t lx, Double_t ly, Double_t lz);
89  {
90  SetAngMom(x, y, z);
91  }
92  const TVector3* GetAngMom() const
93  {
94  return &angmom;
95  }
97  {
98  return angmom;
99  }
101  {
102  return GetAngMom();
103  }
105  {
107  return 1.2 * pow(GetA(), 1. / 3.);
108  }
110  {
112  return 0.4 * GetMass() * pow(GetRadius(), 2);
113  }
115  {
117  Double_t s = angmom.Mag();
118  return 0.5 * pow(hbar, 2) * (s * (s + 1.)) / GetMomentOfInertia();
119  }
120 
121  Double_t GetEnergyLoss(const TString& detname) const;
122  TVector3 GetEntrancePosition(const TString& detname) const;
123  TVector3 GetExitPosition(const TString& detname) const;
124 
125  void Print(Option_t* t = "") const;
126 
127  KVSimNucleus operator+(const KVSimNucleus& rhs) const;
128  KVSimNucleus& operator+=(const KVSimNucleus& rhs);
130 
131  ClassDef(KVSimNucleus, 4) //Nuclear particle in a simulated event
132 
133 };
134 
135 #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:175
Int_t GetA() const
Definition: KVNucleus.cpp:799
Double_t GetMass() const
Definition: KVParticle.h:531
Nucleus in a simulated event.
Definition: KVSimNucleus.h:20
KVSimNucleus(const Char_t *sym, Double_t EperA=0)
Definition: KVSimNucleus.h:32
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:88
KVSimNucleus & operator+=(const KVSimNucleus &rhs)
KVNucleus addition and assignment operator.
Double_t GetRz() const
Definition: KVSimNucleus.h:61
void SetAngMom(Double_t lx, Double_t ly, Double_t lz)
set the angular momentum of the nucleus
TVector3 & GetPosition()
Definition: KVSimNucleus.h:48
TVector3 angmom
angular momentum of the particle in units
Definition: KVSimNucleus.h:24
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:34
Double_t fDensity
density of the nucleus in nuc.fm-3
Definition: KVSimNucleus.h:25
KVSimNucleus & operator=(const KVSimNucleus &)
copy assignment operator
virtual ~KVSimNucleus()
Definition: KVSimNucleus.h:36
Double_t GetDensity() const
get density of the nucleus in nuc/fm3
Double_t GetRotationalEnergy() const
Definition: KVSimNucleus.h:114
TVector3 & GetAngMom()
Definition: KVSimNucleus.h:96
Double_t GetRadius() const
Definition: KVSimNucleus.h:104
Double_t GetLmag() const
Definition: KVSimNucleus.h:82
void Print(Option_t *t="") const
Display nucleus parameters.
Double_t GetLz() const
Definition: KVSimNucleus.h:78
TVector3 position
vector position of the particle in fm
Definition: KVSimNucleus.h:23
KVSimNucleus(Int_t z, Int_t a, TVector3 p)
Definition: KVSimNucleus.h:31
KVSimNucleus(Int_t z, Int_t a=0, Double_t ekin=0)
Definition: KVSimNucleus.h:29
Double_t GetRx() const
Definition: KVSimNucleus.h:53
Double_t GetRy() const
Definition: KVSimNucleus.h:57
const TVector3 * GetAngMom() const
Definition: KVSimNucleus.h:92
TVector3 GetEntrancePosition(const TString &detname) const
const TVector3 * GetPosition() const
Definition: KVSimNucleus.h:44
Double_t GetLx() const
Definition: KVSimNucleus.h:70
KVSimNucleus operator+(const KVSimNucleus &rhs) const
Double_t GetMomentOfInertia() const
Definition: KVSimNucleus.h:109
KVSimNucleus(Int_t z, Double_t t, TVector3 &p)
Definition: KVSimNucleus.h:30
Double_t GetLy() const
Definition: KVSimNucleus.h:74
TVector3 & GetSpin()
Definition: KVSimNucleus.h:100
Double_t GetRmag() const
Definition: KVSimNucleus.h:65
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)