TkN 2.1
Toolkit for Nuclei
tkelement_builder.h
1/********************************************************************************
2 * Copyright (c) : Université de Lyon 1, CNRS/IN2P3, UMR5822, *
3 * IP2I, F-69622 Villeurbanne Cedex, France *
4 * Normandie Université, ENSICAEN, UNICAEN, CNRS/IN2P3, *
5 * LPC Caen, F-14000 Caen, France *
6 * Contibutor(s) : *
7 * Jérémie Dudouet jeremie.dudouet@cnrs.fr [2020] *
8 * Diego Gruyer diego.gruyer@cnrs.fr [2020] *
9 * *
10 * This software is governed by the CeCILL-B license under French law and *
11 * abiding by the rules of distribution of free software. You can use, *
12 * modify and/ or redistribute the software under the terms of the *
13 * CeCILL-B license as circulated by CEA, CNRS and INRIA at the following *
14 * URL \"http://www.cecill.info\". *
15 * *
16 * As a counterpart to the access to the source code and rights to copy, *
17 * modify and redistribute granted by the license, users are provided *
18 * only with a limited warranty and the software's author, the holder of *
19 * the economic rights, and the successive licensors have only limited *
20 * liability. *
21 * *
22 * In this respect, the user's attention is drawn to the risks associated *
23 * with loading, using, modifying and/or developing or reproducing the *
24 * software by the user in light of its specific status of free software, *
25 * that may mean that it is complicated to manipulate, and that also *
26 * therefore means that it is reserved for developers and experienced *
27 * professionals having in-depth computer knowledge. Users are therefore *
28 * encouraged to load and test the software's suitability as regards *
29 * their requirements in conditions enabling the security of their *
30 * systems and/or data to be ensured and, more generally, to use and *
31 * operate it in the same conditions as regards security. *
32 * *
33 * The fact that you are presently reading this means that you have had *
34 * knowledge of the CeCILL-B license and that you accept its terms. *
35 ********************************************************************************/
36
37#ifndef tkelement_builder_H
38#define tkelement_builder_H
39
40#include <vector>
41#include <set>
42
43#include "tkn_config.h"
44#include "tkdatabase.h"
45
46#ifdef HAS_ROOT
47#include "TClass.h"
48#endif
49
50using namespace std;
51
52namespace tkn {
53
55
56private:
57 using atomic_properties = std::tuple<tkstring,tkstring,tkstring,tkstring>;
58 using atomic_xray = std::tuple<tkstring,tkstring,double>;
59
60 tkdatabase *fDataBase = nullptr;
61 tkstring fTableName;
62
63 map<int,map<tkstring,atomic_properties>> fmap_of_atomic_properties;
64 vector<tkstring> columns;
65 vector<tkstring> units;
66 vector<tkstring> types;
67 vector<int> indexes;
68
69 map<int,vector<atomic_xray>> fmap_of_xrays;
70 set<tkstring> fxrays_possible_names;
71
72public:
73 tkelement_builder(tkdatabase *_database, const char* _table_name="ELEMENT");
75
76public:
77 int fill_database(const char* _atomic_db, const char* _xrays_db, int _only_charge=0);
78
79private:
80
81 void read_atomic_db(const char *_atomic_db);
82 void read_xrays_db(const char *_xrays_db);
83
84#ifdef HAS_ROOT
86 ClassDef(tkelement_builder,0);
87#endif
88};
89
90}
91#endif
92
93
Interface to the sqlite database.
Definition: tkdatabase.h:57
Decoding of the element properties.
virtual ~tkelement_builder()
int fill_database(const char *_atomic_db, const char *_xrays_db, int _only_charge=0)
tkelement_builder(tkdatabase *_database, const char *_table_name="ELEMENT")
std::string with usefull tricks from TString (ROOT) and KVString (KaliVeda) and more....
Definition: tkstring.h:54
Definition: tklog.cpp:39