KaliVeda
Toolkit for HIC analysis
KVNDTManager.cpp
1 //Created by KVClassFactory on Thu Feb 24 11:24:52 2011
2 //Author: bonnet
3 
4 #include "KVNDTManager.h"
5 #include "KVNuclDataTable.h"
6 #include "KVNuclData.h"
7 #include "KVString.h"
8 #include "KVBase.h"
9 #include "Riostream.h"
10 #include "TObjArray.h"
11 
13 
14 KVNDTManager* gNDTManager;
15 
16 
19 
21 {
22  // Default constructor
23  init();
24 }
25 
26 
27 
30 
32 {
33  // Destructor
34 }
35 
36 
37 
43 
45 {
46  // Initialize Nuclear Data Table Manager
47  // We automatically instantiate a data table of each class which is
48  // declared as a "KVNuclDataTable" plugin
49  // If a new class is added to the .kvrootrc, there is no need to alter the code.
50 
51  Arange = 0;
52  Zrange = 0;
53 
54  KVString plugins = KVBase::GetListOfPlugins("KVNuclDataTable");
55  plugins.Begin(" ");
56  while (!plugins.End()) {
57  Add((KVNuclDataTable*)TClass::GetClass(plugins.Next())->New());
58  }
59 
60  Execute("Initialize", "");
61 
62 }
63 
64 
65 
67 
69 {
70 
72 
73 }
74 
75 
76 
78 
79 Bool_t KVNDTManager::IsInTable(Int_t zz, Int_t aa, const Char_t* name) const
80 {
81  KVNuclDataTable* tab = 0;
82  return ((tab = GetTable(name)) && tab->IsInTable(zz, aa));
83 
84 }
85 
86 
87 
89 
90 Double_t KVNDTManager::GetValue(Int_t zz, Int_t aa, const Char_t* name) const
91 {
92 
93  KVNuclDataTable* tab = 0;
94  if ((tab = GetTable(name))) return tab->GetValue(zz, aa);
95  return -666;
96 
97 }
98 
99 
100 
102 
103 void KVNDTManager::SetValue(Int_t zz, Int_t aa, const Char_t* name, Double_t val)
104 {
105  KVNuclDataTable* tab = 0;
106  if ((tab = GetTable(name))) {
107  tab->SetValue(zz, aa, val);
108  }
109  else
110  Error("SetValue", "No table found with name %s", name);
111 
112 }
113 
114 
115 
117 
118 KVNuclData* KVNDTManager::GetData(Int_t zz, Int_t aa, const Char_t* name) const
119 {
120 
121  KVNuclDataTable* tab = 0;
122  if ((tab = GetTable(name))) return tab->GetData(zz, aa);
123  return 0;
124 
125 }
126 
127 
128 
130 
132 {
133 
134  KVNuclDataTable* tab = 0;
135  if ((tab = GetTable(name))) return tab->IsMeasured(zz, aa);
136  return kFALSE;
137 
138 }
139 
140 
141 
143 
144 const Char_t* KVNDTManager::GetUnit(Int_t zz, Int_t aa, const Char_t* name) const
145 {
146 
147  KVNuclDataTable* tab = 0;
148  if ((tab = GetTable(name))) return tab->GetUnit(zz, aa);
149  return "";
150 
151 
152 }
153 
154 
155 
156 
157 
159 
161 {
162  printf("--------\n");
163  Info("Print", "%d Available nuclear data tables", GetEntries());
164  for (Int_t ii = 0; ii < GetEntries(); ii += 1) {
165  printf("name=%s file=%s number of nuclei stored=%d\n",
166  ((KVNuclDataTable*)At(ii))->GetName(),
167  ((KVNuclDataTable*)At(ii))->GetTitle(),
168  ((KVNuclDataTable*)At(ii))->GetNumberOfNuclei()
169  );
170  }
171  printf("--------\n");
172 
173 }
174 
175 
int Int_t
bool Bool_t
char Char_t
constexpr Bool_t kFALSE
double Double_t
char name[80]
static const Char_t * GetListOfPlugins(const Char_t *base)
Definition: KVBase.cpp:1228
Nuclear Data Table manager.
Definition: KVNDTManager.h:22
Bool_t IsInTable(Int_t zz, Int_t aa, const Char_t *name) const
void PrintTables() const
Double_t GetValue(Int_t zz, Int_t aa, const Char_t *name) const
const Char_t * GetUnit(Int_t zz, Int_t aa, const Char_t *name) const
KVNuclData * GetData(Int_t zz, Int_t aa, const Char_t *name) const
Bool_t IsMeasured(Int_t zz, Int_t aa, const Char_t *name) const
KVNuclDataTable * GetTable(const Char_t *name) const
TObjArray * Arange
Definition: KVNDTManager.h:26
virtual ~KVNDTManager()
Destructor.
void SetValue(Int_t zz, Int_t aa, const Char_t *name, Double_t val)
KVNDTManager()
Default constructor.
TObjArray * Zrange
Definition: KVNDTManager.h:27
Abstract base class for nuclear data table.
void SetValue(Int_t zz, Int_t aa, Double_t val)
Bool_t IsInTable(Int_t zz, Int_t aa) const
Returns kTRUE if there is a couple (Z,A) in the table.
Double_t GetValue(Int_t zz, Int_t aa) const
const Char_t * GetUnit(Int_t zz, Int_t aa) const
KVNuclData * GetData(Int_t zz, Int_t aa) const
Bool_t IsMeasured(Int_t zz, Int_t aa) const
Simple abstract class to store value related to nuclear data.
Definition: KVNuclData.h:18
void Execute(const char *method, const char *params, Int_t *error=0) override
void Add(TObject *obj) override
TObject * FindObject(const char *name) const override
TObject * At(Int_t idx) const override
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:73
void Begin(TString delim) const
Definition: KVString.cpp:565
Bool_t End() const
Definition: KVString.cpp:634
KVString Next(Bool_t strip_whitespace=kFALSE) const
Definition: KVString.cpp:695
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
static TClass * GetClass(Bool_t load=kTRUE, Bool_t silent=kFALSE)
const char * GetName() const override
virtual Int_t GetEntries() const
virtual void Error(const char *method, const char *msgfmt,...) const
virtual const char * GetTitle() const
virtual void Info(const char *method, const char *msgfmt,...) const
ClassImp(TPyArg)