11#include "TCollection.h"
69 if(!
ReadSettings(settingsFile)) {
throw std::runtime_error(
"Failed to read user settings file!"); }
84 T
Get(
const std::string& parameter)
const
86 if(std::is_same<T, bool>::value) {
return GetBool(parameter); }
87 if(std::is_same<T, int>::value) {
return GetInt(parameter); }
88 if(std::is_same<T, double>::value) {
return GetDouble(parameter); }
89 if(std::is_same<T, std::string>::value) {
return GetString(parameter); }
90 if(std::is_same<T, std::vector<bool>>::value) {
return GetBoolVector(parameter); }
91 if(std::is_same<T, std::vector<int>>::value) {
return GetIntVector(parameter); }
92 if(std::is_same<T, std::vector<double>>::value) {
return GetDoubleVector(parameter); }
93 if(std::is_same<T, std::vector<std::string>>::value) {
return GetStringVector(parameter); }
94 throw std::runtime_error(
"Unknown type, only bool, int, double, std::string or vectors of those types allowed");
97 bool GetBool(
const std::string& parameter,
bool quiet =
false)
const;
98 int GetInt(
const std::string& parameter,
bool quiet =
false)
const;
99 double GetDouble(
const std::string& parameter,
bool quiet =
false)
const;
100 std::string
GetString(
const std::string& parameter,
bool quiet =
false)
const;
101 std::vector<bool>
GetBoolVector(
const std::string& parameter,
bool quiet =
false)
const;
102 std::vector<int>
GetIntVector(
const std::string& parameter,
bool quiet =
false)
const;
103 std::vector<double>
GetDoubleVector(
const std::string& parameter,
bool quiet =
false)
const;
104 std::vector<std::string>
GetStringVector(
const std::string& parameter,
bool quiet =
false)
const;
108 int GetInt(
const std::string& parameter,
int def)
const
111 return fInt.at(parameter);
112 }
catch(std::out_of_range& e) {
116 double GetDouble(
const std::string& parameter,
double def)
const
120 }
catch(std::out_of_range& e) {
124 std::string
GetString(
const std::string& parameter, std::string def)
const
128 }
catch(std::out_of_range& e) {
134 void SetBool(
const std::string& parameter,
bool value) {
fBool[parameter] = value; }
135 void SetInt(
const std::string& parameter,
int value) {
fInt[parameter] = value; }
137 void SetString(
const std::string& parameter,
const std::string& value) {
fString[parameter] = value; }
143 void Print(Option_t* opt =
"")
const override;
157 Long64_t
Merge(TCollection* list, Option_t* =
"");
160 using TObject::Compare;
163 void ParseValue(
const std::string& name,
const std::string& value,
bool vector);
166 std::map<std::string, int>
fInt;
void Print(Option_t *opt="") const override
TUserSettings(TUserSettings &&) noexcept=default
std::map< std::string, double > fDouble
void SetString(const std::string ¶meter, const std::string &value)
void Clear(Option_t *="") override
bool Compare(const TUserSettings *settings) const
std::string GetString(const std::string ¶meter, std::string def) const
std::map< std::string, std::vector< bool > > fBoolVector
std::vector< double > GetDoubleVector(const std::string ¶meter, bool quiet=false) const
std::string GetString(const std::string ¶meter, bool quiet=false) const
std::vector< std::string > GetStringVector(const std::string ¶meter, bool quiet=false) const
std::map< std::string, int > fInt
bool GetBool(const std::string ¶meter, bool quiet=false) const
std::vector< bool > GetBoolVector(const std::string ¶meter, bool quiet=false) const
void SetInt(const std::string ¶meter, int value)
void SetStringVector(const std::string ¶meter, const std::vector< std::string > &value)
void SetDouble(const std::string ¶meter, double value)
std::vector< int > GetIntVector(const std::string ¶meter, bool quiet=false) const
std::map< std::string, std::vector< std::string > > fStringVector
std::map< std::string, bool > fBool
std::vector< std::string > fSettingsFiles
void SetDoubleVector(const std::string ¶meter, const std::vector< double > &value)
void SetBool(const std::string ¶meter, bool value)
std::map< std::string, std::vector< int > > fIntVector
TUserSettings(const std::string &settingsFile)
void SetIntVector(const std::string ¶meter, const std::vector< int > &value)
int GetInt(const std::string ¶meter, int def) const
std::map< std::string, std::vector< double > > fDoubleVector
TUserSettings(const TUserSettings &)=default
int GetInt(const std::string ¶meter, bool quiet=false) const
std::map< std::string, std::string > fString
double GetDouble(const std::string ¶meter, bool quiet=false) const
bool ReadSettings(const std::string &settingsFile)
Long64_t Merge(TCollection *list, Option_t *="")
T Get(const std::string ¶meter) const
double GetDouble(const std::string ¶meter, double def) const
void ParseValue(const std::string &name, const std::string &value, bool vector)
void SetBoolVector(const std::string ¶meter, const std::vector< bool > &value)