musrfit 1.10.0
TMusrRunHeader.h
Go to the documentation of this file.
1/***************************************************************************
2
3 TMusrRunHeader.h
4
5 Author: Andreas Suter
6 e-mail: andreas.suter@psi.ch
7
8***************************************************************************/
9
10/***************************************************************************
11 * Copyright (C) 2007-2026 by Andreas Suter *
12 * andreas.suter@psi.ch *
13 * *
14 * This program is free software; you can redistribute it and/or modify *
15 * it under the terms of the GNU General Public License as published by *
16 * the Free Software Foundation; either version 2 of the License, or *
17 * (at your option) any later version. *
18 * *
19 * This program is distributed in the hope that it will be useful, *
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
22 * GNU General Public License for more details. *
23 * *
24 * You should have received a copy of the GNU General Public License *
25 * along with this program; if not, write to the *
26 * Free Software Foundation, Inc., *
27 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
28 ***************************************************************************/
29
30#ifndef TMUSRRUNHEADER_H
31#define TMUSRRUNHEADER_H
32
33#include <vector>
34
35#include <TDatime.h>
36#include <TObject.h>
37#include <TQObject.h>
38#include <TObjString.h>
39#include <TObjArray.h>
40#include <TFolder.h>
41#include <TDirectory.h>
42
43#define MRH_UNDEFINED -9.9e99
44
45#define MRH_DOUBLE_PREC 6
46
47#define MRH_TSTRING 0
48#define MRH_INT 1
49#define MRH_DOUBLE 2
50#define MRH_TMUSR_RUN_PHYSICAL_QUANTITY 3
51#define MRH_TSTRING_VECTOR 4
52#define MRH_INT_VECTOR 5
53#define MRH_DOUBLE_VECTOR 6
54
55typedef std::vector<Int_t> TIntVector;
56typedef std::vector<Double_t> TDoubleVector;
57typedef std::vector<TString> TStringVector;
58
59//-------------------------------------------------------------------------
60template <class T> class TMusrRunObject : public TObject
61{
62public:
63 TMusrRunObject() : TObject() { fPathName = "n/a"; fType = "n/a"; }
64 TMusrRunObject(TString pathName, TString type, T value) : TObject(), fPathName(pathName), fType(type), fValue(value) {}
65 virtual ~TMusrRunObject() {}
66
67 virtual TString GetPathName() { return fPathName; }
68 virtual TString GetType() { return fType; }
69 virtual T GetValue() { return fValue; }
70
71 virtual void SetPathName(TString pathName) { fPathName = pathName; }
72 virtual void SetType(TString type) { fType = type; }
73 virtual void SetValue(T value) { fValue = value; }
74
75private:
76 TString fPathName;
77 TString fType;
79};
80
81//-------------------------------------------------------------------------
82class TMusrRunPhysicalQuantity : public TObject
83{
84public:
86 TMusrRunPhysicalQuantity(TString label, Double_t demand, Double_t value, Double_t error, TString unit, TString description = TString("n/a"));
87 TMusrRunPhysicalQuantity(TString label, Double_t demand, Double_t value, TString unit, TString description = TString("n/a"));
88 TMusrRunPhysicalQuantity(TString label, Double_t value, TString unit, TString description = TString("n/a"));
90
91 virtual TString GetLabel() const { return fLabel; }
92 virtual Double_t GetDemand() const { return fDemand; }
93 virtual Double_t GetValue() const { return fValue; }
94 virtual Double_t GetError() const { return fError; }
95 virtual TString GetUnit() const { return fUnit; }
96 virtual TString GetDescription() const { return fDescription; }
97
98 virtual void Set(TString label, Double_t demand, Double_t value, Double_t error, TString unit, TString description = TString("n/a"));
99 virtual void Set(TString label, Double_t demand, Double_t value, TString unit, TString description = TString("n/a"));
100 virtual void Set(TString label, Double_t value, TString unit, TString description = TString("n/a"));
101 virtual void SetLabel(TString &label) { fLabel = label; }
102 virtual void SetLabel(const char *label) { fLabel = label; }
103 virtual void SetDemand(Double_t val) { fDemand = val; }
104 virtual void SetValue(Double_t val) { fValue = val; }
105 virtual void SetError(Double_t err) { fError = err; }
106 virtual void SetUnit(TString &unit) { fUnit = unit; }
107 virtual void SetUnit(const char *unit) { fUnit = unit; }
108 virtual void SetDescription(TString &str) { fDescription = str; }
109 virtual void SetDescription(const char *str) { fDescription = str; }
110
111private:
112 TString fLabel;
113 Double_t fDemand;
114 Double_t fValue;
115 Double_t fError;
116 TString fUnit;
117 TString fDescription;
118
119 ClassDef(TMusrRunPhysicalQuantity, 1)
120};
121
122//-------------------------------------------------------------------------
123class TMusrRunHeader : public TObject
124{
125public:
126 TMusrRunHeader(bool quiet=false);
127 TMusrRunHeader(const char *fileName, bool quiet=false);
128 virtual ~TMusrRunHeader();
129
130 virtual TString GetFileName() { return fFileName; }
131
132 virtual Bool_t FillFolder(TFolder *folder);
133 virtual Bool_t FillDirectory(TDirectory *dir);
134
135 virtual Bool_t ExtractAll(TFolder *folder);
136 virtual Bool_t ExtractAll(TDirectory *dir);
137 virtual Bool_t ExtractHeaderInformationData(TObjString *headerData, TString path);
138 virtual Bool_t ExtractHeaderInformation(TObjArray *headerInfo, TString path);
139
140 virtual TString GetTypeOfPath(TString pathName);
141
142 virtual void Get(TString pathName, TString &value, Bool_t &ok);
143 virtual void Get(TString pathName, Int_t &value, Bool_t &ok);
144 virtual void Get(TString pathName, Double_t &value, Bool_t &ok);
145 virtual void Get(TString pathName, TMusrRunPhysicalQuantity &value, Bool_t &ok);
146 virtual void Get(TString pathName, TStringVector &value, Bool_t &ok);
147 virtual void Get(TString pathName, TIntVector &value, Bool_t &ok);
148 virtual void Get(TString pathName, TDoubleVector &value, Bool_t &ok);
149
150 virtual void SetFileName(TString fln) { fFileName = fln; }
151
152 virtual void Set(TString pathName, TString value);
153 virtual void Set(TString pathName, Int_t value);
154 virtual void Set(TString pathName, Double_t value);
155 virtual void Set(TString pathName, TMusrRunPhysicalQuantity value);
156 virtual void Set(TString pathName, TStringVector value);
157 virtual void Set(TString pathName, TIntVector value);
158 virtual void Set(TString pathName, TDoubleVector value);
159
160 virtual void DumpHeader();
161
162private:
163 bool fQuiet;
164 TString fFileName;
165 TString fVersion;
166
167 std::vector< TMusrRunObject<TString> > fStringObj;
168 std::vector< TMusrRunObject<Int_t> > fIntObj;
169 std::vector< TMusrRunObject<Double_t> > fDoubleObj;
170 std::vector< TMusrRunObject<TMusrRunPhysicalQuantity> > fMusrRunPhysQuantityObj;
171 std::vector< TMusrRunObject<TStringVector> > fStringVectorObj;
172 std::vector< TMusrRunObject<TIntVector> > fIntVectorObj;
173 std::vector< TMusrRunObject<TDoubleVector> > fDoubleVectorObj;
174
175 std::vector< TString > fPathNameOrder;
176
177 virtual void Init(TString str="n/a");
178 virtual void CleanUp();
179
180 virtual UInt_t GetDecimalPlace(Double_t val);
181 virtual UInt_t GetLeastSignificantDigit(Double_t val) const;
182 virtual void SplitPathName(TString pathName, TString &path, TString &name);
183
184 virtual TString GetLabel(TString str);
185 virtual TString GetStrValue(TString str);
186 virtual TString GetType(TString str);
187
188 virtual bool UpdateFolder(TObject *treeObj, TString path);
189 virtual bool UpdateDirTree(TDirectory *topdir);
190 virtual TObject* FindObject(TObject *treeObj, TString path);
191 virtual TObjString GetHeaderString(UInt_t idx);
192
193 virtual bool RemoveFirst(TString &str, const char splitter);
194 virtual TString GetFirst(TString &str, const char splitter);
195
196 ClassDef(TMusrRunHeader, 1)
197};
198
199#endif // TMUSRRUNHEADER_H
std::vector< Int_t > TIntVector
std::vector< TString > TStringVector
std::vector< Double_t > TDoubleVector
std::vector< TMusrRunObject< Double_t > > fDoubleObj
virtual TString GetType(TString str)
virtual TString GetFirst(TString &str, const char splitter)
std::vector< TMusrRunObject< TDoubleVector > > fDoubleVectorObj
virtual TString GetFileName()
std::vector< TMusrRunObject< TIntVector > > fIntVectorObj
std::vector< TMusrRunObject< Int_t > > fIntObj
virtual void Set(TString pathName, TString value)
virtual void Init(TString str="n/a")
TMusrRunHeader(bool quiet=false)
std::vector< TMusrRunObject< TStringVector > > fStringVectorObj
virtual TObject * FindObject(TObject *treeObj, TString path)
virtual void Get(TString pathName, TString &value, Bool_t &ok)
virtual void DumpHeader()
virtual UInt_t GetLeastSignificantDigit(Double_t val) const
std::vector< TMusrRunObject< TMusrRunPhysicalQuantity > > fMusrRunPhysQuantityObj
virtual UInt_t GetDecimalPlace(Double_t val)
virtual Bool_t ExtractHeaderInformation(TObjArray *headerInfo, TString path)
virtual bool RemoveFirst(TString &str, const char splitter)
virtual Bool_t FillFolder(TFolder *folder)
virtual bool UpdateDirTree(TDirectory *topdir)
virtual TObjString GetHeaderString(UInt_t idx)
virtual Bool_t ExtractHeaderInformationData(TObjString *headerData, TString path)
virtual TString GetTypeOfPath(TString pathName)
virtual void SplitPathName(TString pathName, TString &path, TString &name)
virtual void CleanUp()
std::vector< TMusrRunObject< TString > > fStringObj
virtual TString GetStrValue(TString str)
std::vector< TString > fPathNameOrder
keeps the path-name as they were created in ordered to keep ordering
virtual void SetFileName(TString fln)
virtual Bool_t ExtractAll(TFolder *folder)
virtual TString GetLabel(TString str)
virtual ~TMusrRunHeader()
virtual bool UpdateFolder(TObject *treeObj, TString path)
virtual Bool_t FillDirectory(TDirectory *dir)
virtual void SetValue(T value)
virtual TString GetPathName()
virtual ~TMusrRunObject()
virtual void SetType(TString type)
TString fPathName
path name of the variable, e.g. 'RunInfo/Run Number'
virtual T GetValue()
virtual TString GetType()
TString fType
type of value, e.g. TString, or Int_t, etc.
TMusrRunObject(TString pathName, TString type, T value)
virtual void SetPathName(TString pathName)
T fValue
value itself
virtual Double_t GetDemand() const
virtual void SetDescription(const char *str)
TString fUnit
unit of the physical quantity
virtual Double_t GetError() const
virtual void SetDemand(Double_t val)
virtual TString GetLabel() const
virtual void SetDescription(TString &str)
virtual Double_t GetValue() const
Double_t fDemand
demand value of the physical quantity, e.g. temperature setpoint
TString fLabel
property label, like ’Sample Temperature’ etc.
virtual void Set(TString label, Double_t demand, Double_t value, Double_t error, TString unit, TString description=TString("n/a"))
virtual void SetError(Double_t err)
virtual void SetLabel(const char *label)
virtual void SetUnit(TString &unit)
Double_t fValue
measured value of the physical quantity
virtual void SetValue(Double_t val)
virtual void SetLabel(TString &label)
TString fDescription
a more detailed description of the physical quantity
Double_t fError
estimated error (standard deviation) of the measured value
virtual TString GetDescription() const
virtual TString GetUnit() const
virtual void SetUnit(const char *unit)