GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
GValue.h
Go to the documentation of this file.
1#ifndef TGRUTVARIABLE_H
2#define TGRUTVARIABLE_H
3
4#include <map>
5#include <utility>
6
7#include "TList.h"
8#include "TNamed.h"
9
10class GValue : public TNamed {
11public:
12 enum class EPriority { kUser = 0,
13 kValFile = 1,
14 kRootFile = 2,
15 kDefault = 999999 };
16
17 GValue() = default;
18 explicit GValue(const char* name);
19 GValue(const char* name, double value, EPriority priority = EPriority::kUser);
20 GValue(const GValue& val);
21 GValue(GValue&& val) noexcept = default;
22 GValue& operator=(const GValue& val) = default;
23 GValue& operator=(GValue&& val) noexcept = default;
24 ~GValue() = default;
25
26 double GetValue() const { return fValue; }
27 const char* GetInfo() const { return info.c_str(); }
28
29 void SetValue(double value) { fValue = value; }
30 void SetInfo(const char* temp) { info.assign(temp); }
31
32 static int ReadValFile(const char* filename = "", Option_t* opt = "replace");
33 static int WriteValFile(const std::string& filename = "", Option_t* opt = "");
34
35 static GValue* GetDefaultValue() { return fDefaultValue; }
36 // Search fValueVector for GValue with name given by string
37 static GValue* FindValue(const std::string& = "");
38 static void SetReplaceValue(const std::string& name, double value, EPriority priority = EPriority::kUser);
39 static GValue* Get(const std::string& name = "") { return FindValue(name); }
40 static double Value(const std::string&); // get the named value, returns sqrt(-1) = NaN
41 static double Value(const std::string&, const double&); // try and find the named value, otherwise return the provided default
42 static TList* AllValues()
43 {
44 auto* output = new TList;
45 output->SetOwner(false);
46 for(auto& item : fValueVector) {
47 output->Add(item.second);
48 }
49 return output;
50 }
51
52 // Add value into static vector fValueVector
53 static bool AddValue(GValue*, Option_t* opt = "");
54
55 bool AppendValue(GValue*);
56 bool ReplaceValue(GValue*);
57
58 using TNamed::Clear;
59 void Print(Option_t* opt = "") const override;
60 void Copy(TObject& obj) const override;
61 // virtual bool Notify();
62
63 static int Size() { return static_cast<int>(fValueVector.size()); }
64 std::string PrintToString() const;
65 static std::string WriteToBuffer(Option_t* opt = "");
66 static void Clear();
67
68private:
69 double fValue{0.};
71 std::string info;
73 static std::map<std::string, GValue*> fValueVector;
74 static int ParseInputData(const std::string& input, EPriority priority, Option_t* opt = "");
75
76 /// \cond CLASSIMP
77 ClassDefOverride(GValue, 1) // NOLINT(readability-else-after-return)
78 /// \endcond
79};
80
81#endif
static GValue * fDefaultValue
Definition GValue.h:72
static bool AddValue(GValue *, Option_t *opt="")
Definition GValue.cxx:106
static TList * AllValues()
Definition GValue.h:42
static void SetReplaceValue(const std::string &name, double value, EPriority priority=EPriority::kUser)
Definition GValue.cxx:52
GValue()=default
void SetValue(double value)
Definition GValue.h:29
~GValue()=default
static std::map< std::string, GValue * > fValueVector
Definition GValue.h:73
static int ReadValFile(const char *filename="", Option_t *opt="replace")
Definition GValue.cxx:194
EPriority
Definition GValue.h:12
void Copy(TObject &obj) const override
Definition GValue.cxx:32
const char * GetInfo() const
Definition GValue.h:27
bool ReplaceValue(GValue *)
Definition GValue.cxx:97
static int Size()
Definition GValue.h:63
static int WriteValFile(const std::string &filename="", Option_t *opt="")
Definition GValue.cxx:149
static GValue * FindValue(const std::string &="")
Definition GValue.cxx:64
EPriority fPriority
Definition GValue.h:70
bool AppendValue(GValue *)
Definition GValue.cxx:76
std::string info
Definition GValue.h:71
static int ParseInputData(const std::string &input, EPriority priority, Option_t *opt="")
Definition GValue.cxx:230
static GValue * GetDefaultValue()
Definition GValue.h:35
GValue(GValue &&val) noexcept=default
static GValue * Get(const std::string &name="")
Definition GValue.h:39
GValue & operator=(const GValue &val)=default
static void Clear()
Definition GValue.cxx:184
double fValue
Definition GValue.h:69
static std::string WriteToBuffer(Option_t *opt="")
Definition GValue.cxx:171
static double Value(const std::string &)
Definition GValue.cxx:39
GValue & operator=(GValue &&val) noexcept=default
void SetInfo(const char *temp)
Definition GValue.h:30
std::string PrintToString() const
Definition GValue.cxx:128
double GetValue() const
Definition GValue.h:26
void Print(Option_t *opt="") const override
Definition GValue.cxx:144
EPriority