Pluto v6.3.0
Loading...
Searching...
No Matches
PDataBase.h
Go to the documentation of this file.
1// Author: I. Froehlich
2// Written: 11.04.2007
3// Revised:
4// PDataBase
5// Replacement for the particle data base in PData
6
7#ifndef _PDATABASE_H_
8#define _PDATABASE_H_
9
10#include "TROOT.h"
11#include <iostream>
12#include "PDefines.h"
13
14#define PDATABASE_MAX_DOUBLE_PARAM 20
15#define PDATABASE_MAX_STRING_PARAM 20
16#define PDATABASE_MAX_INT_PARAM 150
17#define PDATABASE_MAX_TOBJ_PARAM 10
18
19#define PDATABASE_MAX_LINES 5000
20
21using namespace std;
22
23class PDataBase;
26
27class PDataBase : public TObject {
28
29 private:
30
31 //Entries properties
32 const char *param_double_name[PDATABASE_MAX_DOUBLE_PARAM]; //the parameter name matching the ID
33 const char *param_string_name[PDATABASE_MAX_STRING_PARAM];
34 const char *param_int_name[PDATABASE_MAX_INT_PARAM];
35 const char *param_tobj_name[PDATABASE_MAX_INT_PARAM];
36 const char *param_double_descr[PDATABASE_MAX_DOUBLE_PARAM]; //the parameter long description
37 const char *param_string_descr[PDATABASE_MAX_STRING_PARAM];
38 const char *param_int_descr[PDATABASE_MAX_INT_PARAM];
39 const char *param_tobj_descr[PDATABASE_MAX_INT_PARAM];
40 Int_t param_double_pointer;
41 Int_t param_string_pointer;
42 Int_t param_int_pointer;
43 Int_t param_tobj_pointer;
44
45 //TODO: Params need description
46
47 Int_t *param_int_key[PDATABASE_MAX_INT_PARAM];
48 Int_t param_int_key_max[PDATABASE_MAX_INT_PARAM];
49
50 //The entries array itself
51 //for each entry, we add the pointer array to our params
56
57 Int_t lastkey;
58
59 Bool_t CheckEntry(Int_t key); //check if key with unique name already existing
60 Int_t ConvertParamKey(const char * &newparamname, Int_t key);
61
62 public:
63
64 //constructor
66
67 void Performance(void);
68
69 void SetFastKey(Int_t pkey, Int_t maxkey);
70 //return value of the makeParam's: the param_id of -1 on failure
71 Int_t MakeParamDouble(const char *paramname,
72 const char *descr);//add "paramname" to double database
73 Int_t MakeParamString(const char *paramname,
74 const char *descr); //add "paramname" to string database
75 Int_t MakeParamInt(const char *paramname,
76 const char *descr); //add "paramname" to int database
77 Int_t MakeParamTObj(const char *paramname,
78 const char *descr); //add "paramname" to object database
79
80 Int_t GetParamDouble(const char *paramname); //get "paramname" from double database
81 Int_t GetParamString(const char *paramname); //get "paramname" from string database
82 Int_t GetParamInt (const char *paramname, Int_t length=-1); //get "paramname" from string database
83 Int_t GetParamTObj (const char *paramname);
84
85 char *GetDescription(const char* paramname);
86
87 void GetFastParamInt(const char* paramname, Int_t *pkey) {
88 if ((*pkey)<0) *pkey = GetParamInt(paramname);
89 };
90 void GetFastParamString(const char* paramname, Int_t *pkey) {
91 if ((*pkey)<0) *pkey = GetParamString(paramname);
92 };
93 void GetFastParamDouble(const char* paramname, Int_t *pkey) {
94 if ((*pkey)<0) *pkey = GetParamDouble(paramname);
95 };
96 void GetFastParamTObj(const char* paramname, Int_t *pkey) {
97 if ((*pkey)<0) *pkey = GetParamTObj(paramname);
98 };
99
100 using TObject::GetName;
101 const char *GetName(Int_t key);
102 //getting particle/decay properties from data base
103 //return kFALSE if 1.) key not existing or 2.) Param not existing or 3.) Param not used for entry
104 Bool_t GetParamDouble (Int_t key, const char *paramname, Double_t **result);
105 Bool_t GetParamString (Int_t key, const char *paramname, const char **result);
106 Bool_t GetParamInt (Int_t key, const char *paramname, Int_t **result, Int_t length=-1);
107 Bool_t GetParamTObj (Int_t key, const char *paramname, TObject **result);
108
109 //same as above but with the pkey as obtained by the getFastParam's
110 Bool_t GetParamInt (Int_t key, Int_t pkey, Int_t **result);
111 Bool_t GetParamString (Int_t key, Int_t pkey, const char **result);
112 Bool_t GetParamDouble (Int_t key, Int_t pkey, Double_t **result);
113 Bool_t GetParamTObj (Int_t key, Int_t pkey, TObject **result);
114
115 //setting value instead of pointer
116 Bool_t GetParamInt (Int_t key, Int_t pkey, Int_t *result) {
117 Int_t *p;
118 Bool_t b = GetParamInt (key, pkey, &p);
119 if (b && p)
120 *result = *p;
121 else
122 *result = 0;
123 return b;
124 };
125
126 //getting param by primary name
127 Bool_t GetParamInt(const char *name, const char *paramname, Int_t **result) {
128 return GetParamInt(GetEntry(name), paramname, result);
129 };
130 Bool_t GetParamDouble(const char *name, const char *paramname, Double_t **result) {
131 return GetParamDouble(GetEntry(name), paramname, result);
132 };
133 Bool_t GetParamString(const char *name, const char *paramname, const char **result) {
134 return GetParamString(GetEntry(name), paramname, result);
135 };
136 Bool_t GetParamTObj(const char *name, const char *paramname, TObject **result) {
137 return GetParamTObj(GetEntry(name), paramname, result);
138 };
139
140 //Getting param by matching integer value
141 Bool_t GetParamInt(const char *paramname1, Int_t value1, const char *paramname2, Int_t **result) {
142 return GetParamInt(GetEntryInt(paramname1,value1), paramname2, result);
143 };
144 Bool_t GetParamDouble(const char *paramname1, Int_t value1, const char *paramname2, Double_t **result) {
145 return GetParamDouble(GetEntryInt(paramname1,value1), paramname2, result);
146 };
147 Bool_t GetParamString(const char *paramname1, Int_t value1, const char *paramname2, const char **result) {
148 return GetParamString (GetEntryInt(paramname1,value1), paramname2, result);
149 };
150 Bool_t GetParamTObj(const char *paramname1, Int_t value1, const char *paramname2, TObject **result) {
151 return GetParamTObj(GetEntryInt(paramname1,value1), paramname2, result);
152 };
153
154 //same as above when the pkey are known...
155 Bool_t GetParamInt (Int_t pkey1, Int_t value1, Int_t pkey2, Int_t **result) {
156 return GetParamInt(GetEntryInt(pkey1,value1), pkey2, result);
157 };
158 Bool_t GetParamDouble(Int_t pkey1, Int_t value1, Int_t pkey2, Double_t **result) {
159 return GetParamDouble(GetEntryInt(pkey1,value1), pkey2, result);
160 };
161 Bool_t GetParamString(Int_t pkey1, Int_t value1, Int_t pkey2, const char **result) {
162 return GetParamString(GetEntryInt(pkey1,value1), pkey2, result);
163 };
164 Bool_t GetParamTObj(Int_t pkey1, Int_t value1, Int_t pkey2, TObject **result) {
165 return GetParamTObj(GetEntryInt(pkey1,value1), pkey2, result);
166 };
167
168
169 Bool_t SetParamDouble (Int_t key, const char *paramname, Double_t *result);
170 Bool_t SetParamString (Int_t key, const char *paramname, char *result);
171 Bool_t SetParamInt (Int_t key, const char *paramname, Int_t *result);
172 Bool_t SetParamTObj (Int_t key, const char *paramname, TObject *result);
173
174 //faster:
175 Bool_t SetParamTObj(Int_t key, Int_t pp, TObject *result);
176
177 Bool_t SetParamDouble(const char *name, const char *paramname, Double_t result) {
178 Int_t key = GetEntry(name);
179 if (key<0) return kFALSE;
180 return SetParamDouble(key, paramname, new Double_t(result));
181 }
182 Bool_t SetParamInt(const char *name, const char *paramname, Int_t result) {
183 Int_t key = GetEntry(name);
184 if (key<0) return kFALSE;
185 return SetParamInt(key, paramname, new Int_t(result));
186 }
187 Bool_t SetParamString(const char *name, const char *paramname, char *result) {
188 Int_t key = GetEntry(name);
189 if (key<0) return kFALSE;
190 return SetParamString(key, paramname, result);
191 };
192 Bool_t SetParamTObj(const char *name, const char *paramname, TObject *result) {
193 Int_t key = GetEntry(name);
194 if (key<0) return kFALSE;
195 return SetParamTObj(key, paramname, result);
196 };
197
198 //Dealing with the entries
199 Bool_t AddEntry(Int_t key, const char *name);
200 Int_t AddEntry(const char *name);
201 Int_t GetEntry(const char *name);
202 Int_t GetEntryInt(const char *paramname, Int_t value);
203 Int_t GetEntryInt(Int_t pkey, Int_t value);
204
205 //listings
206 Int_t AddListEntry(const char *name, const char *count, const char *link, const char *newname);
207 Bool_t MakeListIterator(Int_t key, const char *count, const char *link, Int_t *listkey);
208 Bool_t MakeListIterator(Int_t key, Int_t count, Int_t link, Int_t *listkey);
209
210 Bool_t ListEntries(Int_t key=-1, Int_t option=0, const char *pattern=NULL);
211
212 void Print(const Option_t* delme=NULL) const ;
213
214
215 ClassDef(PDataBase, 0) //Relational data base for pluto
216};
217
218#endif
#define PDATABASE_MAX_INT_PARAM
Definition PDataBase.h:16
#define PDATABASE_MAX_TOBJ_PARAM
Definition PDataBase.h:17
#define PDATABASE_MAX_LINES
Definition PDataBase.h:19
#define PDATABASE_MAX_STRING_PARAM
Definition PDataBase.h:15
PDataBase & fDataBase()
PDataBase * makeDataBase()
#define PDATABASE_MAX_DOUBLE_PARAM
Definition PDataBase.h:14
Bool_t GetParamTObj(Int_t key, const char *paramname, TObject **result)
Bool_t SetParamTObj(Int_t key, const char *paramname, TObject *result)
Bool_t SetParamInt(const char *name, const char *paramname, Int_t result)
Definition PDataBase.h:182
Bool_t GetParamString(const char *name, const char *paramname, const char **result)
Definition PDataBase.h:133
Bool_t ListEntries(Int_t key=-1, Int_t option=0, const char *pattern=NULL)
Int_t MakeParamDouble(const char *paramname, const char *descr)
void GetFastParamDouble(const char *paramname, Int_t *pkey)
Definition PDataBase.h:93
Bool_t GetParamDouble(const char *name, const char *paramname, Double_t **result)
Definition PDataBase.h:130
Bool_t SetParamTObj(const char *name, const char *paramname, TObject *result)
Definition PDataBase.h:192
Bool_t GetParamTObj(Int_t pkey1, Int_t value1, Int_t pkey2, TObject **result)
Definition PDataBase.h:164
Bool_t AddEntry(Int_t key, const char *name)
Int_t MakeParamTObj(const char *paramname, const char *descr)
Bool_t MakeListIterator(Int_t key, Int_t count, Int_t link, Int_t *listkey)
Bool_t GetParamTObj(const char *paramname1, Int_t value1, const char *paramname2, TObject **result)
Definition PDataBase.h:150
Bool_t GetParamDouble(Int_t key, const char *paramname, Double_t **result)
Int_t GetParamDouble(const char *paramname)
Int_t GetParamString(const char *paramname)
Int_t GetParamTObj(const char *paramname)
Bool_t SetParamString(const char *name, const char *paramname, char *result)
Definition PDataBase.h:187
Int_t MakeParamInt(const char *paramname, const char *descr)
Bool_t GetParamInt(Int_t key, Int_t pkey, Int_t *result)
Definition PDataBase.h:116
void GetFastParamInt(const char *paramname, Int_t *pkey)
Definition PDataBase.h:87
Bool_t SetParamDouble(Int_t key, const char *paramname, Double_t *result)
Bool_t GetParamInt(const char *name, const char *paramname, Int_t **result)
Definition PDataBase.h:127
Int_t MakeParamString(const char *paramname, const char *descr)
Bool_t SetParamTObj(Int_t key, Int_t pp, TObject *result)
Bool_t GetParamString(const char *paramname1, Int_t value1, const char *paramname2, const char **result)
Definition PDataBase.h:147
Int_t GetEntry(const char *name)
void Performance(void)
void SetFastKey(Int_t pkey, Int_t maxkey)
Bool_t GetParamTObj(Int_t key, Int_t pkey, TObject **result)
Int_t AddListEntry(const char *name, const char *count, const char *link, const char *newname)
char * GetDescription(const char *paramname)
Int_t GetEntryInt(Int_t pkey, Int_t value)
Bool_t GetParamString(Int_t pkey1, Int_t value1, Int_t pkey2, const char **result)
Definition PDataBase.h:161
Bool_t GetParamDouble(const char *paramname1, Int_t value1, const char *paramname2, Double_t **result)
Definition PDataBase.h:144
void GetFastParamString(const char *paramname, Int_t *pkey)
Definition PDataBase.h:90
Int_t AddEntry(const char *name)
Bool_t SetParamDouble(const char *name, const char *paramname, Double_t result)
Definition PDataBase.h:177
Bool_t GetParamDouble(Int_t key, Int_t pkey, Double_t **result)
const char * GetName(Int_t key)
Bool_t GetParamInt(Int_t key, const char *paramname, Int_t **result, Int_t length=-1)
Bool_t GetParamString(Int_t key, Int_t pkey, const char **result)
Bool_t GetParamInt(Int_t key, Int_t pkey, Int_t **result)
Bool_t MakeListIterator(Int_t key, const char *count, const char *link, Int_t *listkey)
Bool_t GetParamInt(const char *paramname1, Int_t value1, const char *paramname2, Int_t **result)
Definition PDataBase.h:141
Bool_t GetParamString(Int_t key, const char *paramname, const char **result)
Bool_t GetParamTObj(const char *name, const char *paramname, TObject **result)
Definition PDataBase.h:136
Bool_t SetParamString(Int_t key, const char *paramname, char *result)
Int_t GetEntryInt(const char *paramname, Int_t value)
void Print(const Option_t *delme=NULL) const
Int_t GetParamInt(const char *paramname, Int_t length=-1)
void GetFastParamTObj(const char *paramname, Int_t *pkey)
Definition PDataBase.h:96
Bool_t SetParamInt(Int_t key, const char *paramname, Int_t *result)
Bool_t GetParamInt(Int_t pkey1, Int_t value1, Int_t pkey2, Int_t **result)
Definition PDataBase.h:155
Bool_t GetParamDouble(Int_t pkey1, Int_t value1, Int_t pkey2, Double_t **result)
Definition PDataBase.h:158
PParticle * p
Definition dp_mult.C:24