33#include <boost/algorithm/string.hpp>
124 for (UInt_t i=0; i<
fData.size(); i++)
128 for (UInt_t i=0; i<
fErrData.size(); i++)
144 for (UInt_t i=0; i<
fData.size(); i++)
148 for (UInt_t i=0; i<
fErrData.size(); i++)
165 for (UInt_t i=0; i<
fData.size(); i++) {
169 for (UInt_t i=0; i<
fErrData.size(); i++) {
192 std::cerr << std::endl <<
">> PNonMusrRawRunData::SetLabel: **WARNING** idx=" << idx <<
" is out of range [0," <<
fLabels.size() <<
"[.";
193 std::cerr << std::endl;
211 if (idx >=
fData.size()) {
212 std::cerr << std::endl <<
">> PNonMusrRawRunData::AppendSubData: **WARNING** idx=" << idx <<
" is out of range [0," <<
fData.size() <<
"[.";
213 std::cerr << std::endl;
216 fData[idx].push_back(dval);
232 std::cerr << std::endl <<
">> PNonMusrRawRunData::AppendSubErrData: **WARNING** idx=" << idx <<
" is out of range [0," <<
fErrData.size() <<
"[.";
233 std::cerr << std::endl;
264 fName = TString(
"n/a");
295 for (UInt_t i=0; i<
fDataVec.size(); i++) {
296 if (
fDataVec[i].GetHistoNo() ==
static_cast<Int_t
>(histoNo)) {
345 for (UInt_t i=0; i<
fDataVec.size(); i++) {
346 if (
fDataVec[i].GetHistoNo() ==
static_cast<Int_t
>(histoNo)) {
388 for (UInt_t i=0; i<
fDataVec.size(); i++) {
389 if (
fDataVec[i].GetHistoNo() ==
static_cast<Int_t
>(histoNo)) {
412 Double_t result=-1.0;
414 for (UInt_t i=0; i<
fDataVec.size(); i++) {
415 if (
fDataVec[i].GetHistoNo() ==
static_cast<Int_t
>(histoNo)) {
416 result =
fDataVec[i].GetTimeZeroBin();
440 for (UInt_t i=0; i<
fDataVec.size(); i++) {
441 if (
fDataVec[i].GetHistoNo() ==
static_cast<Int_t
>(histoNo)) {
442 result =
fDataVec[i].GetTimeZeroBinEstimated();
466 for (UInt_t i=0; i<
fDataVec.size(); i++) {
467 if (
fDataVec[i].GetHistoNo() ==
static_cast<Int_t
>(histoNo)) {
468 bkg.first =
fDataVec[i].GetFirstBkgBin();
469 bkg.second =
fDataVec[i].GetLastBkgBin();
493 for (UInt_t i=0; i<
fDataVec.size(); i++) {
494 if (
fDataVec[i].GetHistoNo() ==
static_cast<Int_t
>(histoNo)) {
495 gdb.first =
fDataVec[i].GetFirstGoodBin();
496 gdb.second =
fDataVec[i].GetLastGoodBin();
520 if (idx >=
static_cast<Int_t
>(
fDataVec.size()))
561 fCryo = TString(
"n/a");
602 char *p_char = strptime(date_time,
"%Y-%m-%d %H:%M:%S", &tmStruct);
603 if (*p_char !=
'\0') {
607 dt = mktime(&tmStruct);
628 char *p_char = strptime(date_time,
"%Y-%m-%d %H:%M:%S", &tmStruct);
629 if (*p_char !=
'\0') {
633 dt = mktime(&tmStruct);
651 if (idx >=
fTemp.size()) {
652 std::cerr << std::endl <<
">> PRawRunData::GetTemperature: **WARNING** idx=" << idx <<
" is out of range [0," <<
fTemp.size() <<
"[.";
653 std::cerr << std::endl;
656 return fTemp[idx].first;
673 if (idx >=
fTemp.size()) {
674 std::cerr << std::endl <<
">> PRawRunData::GetTempError: **WARNING** idx=" << idx <<
" is out of range [0," <<
fTemp.size() <<
"[.";
675 std::cerr << std::endl;
678 return fTemp[idx].second;
696 std::cerr << std::endl <<
">> PRawRunData::GetRingAnode: **WARNING** idx=" << idx <<
" is out of range [0," <<
fRingAnode.size() <<
"[.";
697 std::cerr << std::endl;
722 UInt_t idx = histoNo - 1;
728 std::cerr << std::endl <<
">> PRawRunData::GetDeadTimeParam: **WARNING** histoNo=" << histoNo <<
" maps onto idx=" << idx;
729 std::cerr <<
" which is out of range [0," <<
fDeadTimeParam.size() <<
"[. Will not dead time correct this histogram.";
730 std::cerr << std::endl;
755 return fData.GetSet(idx);
803 if (idx >=
fTemp.size()) {
806 fTemp[idx].first = temp;
807 fTemp[idx].second = errTemp;
821 if (idx >=
fTemp.size()) {
825 fTemp[idx].second = errTemp;
846 for (UInt_t i=0; i<4; i++) {
870 TString unitStr = unit;
872 if (!unitStr.CompareTo(
"MHz", TString::kIgnoreCase))
874 else if (!unitStr.CompareTo(
"Mc", TString::kIgnoreCase))
876 else if (!unitStr.CompareTo(
"T", TString::kIgnoreCase))
912 TString unitStr = unit;
914 if (!unitStr.CompareTo(
"MHz", TString::kIgnoreCase))
916 else if (!unitStr.CompareTo(
"Mc", TString::kIgnoreCase))
918 else if (!unitStr.CompareTo(
"T", TString::kIgnoreCase))
921 std::cerr << std::endl <<
">> PMsrGlobalBlock::SetRRFFreq: **ERROR** found undefined RRF unit '" << unit <<
"'!";
922 std::cerr << std::endl <<
">> Will set RRF frequency to 0.0." << std::endl;
943 unit = TString(
"??");
946 unit = TString(
"kHz");
949 unit = TString(
"MHz");
952 unit = TString(
"Mc");
961 unit = TString(
"??");
979 std::cerr << std::endl <<
"PMsrGlobalBlock::SetRRFPacking: **WARNING** found RRF packing <= 0. Likely doesn't make any sense." << std::endl;
1018 std::cerr << std::endl <<
">> PMsrGlobalBlock::SetDataRange: **WARNING** idx=" << idx <<
", only idx=0..3 are sensible.";
1019 std::cerr << std::endl;
1040 if (idx >=
fT0.size())
1058 fT0.push_back(dval);
1062 if (idx >=
static_cast<Int_t
>(
fT0.size()))
1085 if (addRunIdx >=
fAddT0.size())
1088 return fAddT0[addRunIdx].size();
1109 if (addRunIdx >=
fAddT0.size())
1112 if (
fAddT0[addRunIdx].empty())
1115 if (histoIdx >=
fAddT0[addRunIdx].size())
1118 return fAddT0[addRunIdx][histoIdx];
1133 if (addRunIdx >=
fAddT0.size())
1134 fAddT0.resize(addRunIdx+1);
1136 if (histoNoIdx >=
fAddT0[addRunIdx].size())
1137 fAddT0[addRunIdx].resize(histoNoIdx+1);
1139 fAddT0[addRunIdx][histoNoIdx] = dval;
1235 for (UInt_t i=0; i<2; i++) {
1239 for (UInt_t i=0; i<4; i++) {
1292 for (UInt_t i=0; i<4; i++) {
1315 for (UInt_t i=0; i<
fAddT0.size(); i++)
1359 if (idx >=
static_cast<Int_t
>(
fRunName.size()))
1401 if (idx >=
static_cast<Int_t
>(
fBeamline.size()))
1443 if (idx >=
static_cast<Int_t
>(
fInstitute.size()))
1485 if (idx >=
static_cast<Int_t
>(
fFileFormat.size()))
1593 if (idx>
fMap.size())
1611 fMap.push_back(mapVal);
1615 if (idx >=
static_cast<Int_t
>(
fMap.size()))
1655 std::cerr << std::endl <<
">> PMsrRunBlock::SetBkgEstimated: **WARNING** idx=" << idx <<
", only idx=0,1 are sensible.";
1656 std::cerr << std::endl;
1695 std::cerr << std::endl <<
">> PMsrRunBlock::SetBkgFix: **WARNING** idx=" << idx <<
", only idx=0,1 are sensible.";
1696 std::cerr << std::endl;
1736 std::cerr << std::endl <<
">> PMsrRunBlock::SetBkgRange: **WARNING** idx=" << idx <<
", only idx=0..3 are sensible.";
1737 std::cerr << std::endl;
1778 std::cerr << std::endl <<
">> PMsrRunBlock::SetDataRange: **WARNING** idx=" << idx <<
", only idx=0..3 are sensible.";
1779 std::cerr << std::endl;
1800 if (idx >=
fT0.size())
1818 fT0.push_back(dval);
1822 if (idx >=
static_cast<Int_t
>(
fT0.size()))
1845 if (addRunIdx >=
fAddT0.size())
1848 return fAddT0[addRunIdx].size();
1869 if (addRunIdx >=
fAddT0.size())
1872 if (
fAddT0[addRunIdx].empty())
1875 if (histoIdx >=
fAddT0[addRunIdx].size())
1878 return fAddT0[addRunIdx][histoIdx];
1893 if (addRunIdx >=
fAddT0.size())
1894 fAddT0.resize(addRunIdx+1);
1896 if (histoNoIdx >=
fAddT0[addRunIdx].size())
1897 fAddT0[addRunIdx].resize(histoNoIdx+1);
1899 fAddT0[addRunIdx][histoNoIdx] = dval;
2004 if (idx <
fMap.size() &&
fMap[idx] > 0)
2044 std::vector<std::string> splitVec;
2051 split(splitVec,
fString, is_any_of(
" "), token_compress_on);
2053 unsigned int start=0;
2054 if (ignoreFirstToken)
2057 for (
unsigned int i=start; i<splitVec.size(); i++) {
2058 if (splitVec[i].length() != 0) {
2059 if (splitVec[i].find(
"-") != std::string::npos) {
2060 std::vector<std::string> subSplitVec;
2062 split(subSplitVec, splitVec[i], is_any_of(
"-"), token_compress_on);
2064 int start=-1, end=-1;
2065 unsigned int count=0;
2066 for (
unsigned int j=0; j<subSplitVec.size(); j++) {
2067 if (subSplitVec[j].length() != 0) {
2073 start = atoi(subSplitVec[j].c_str());
2074 else if (count == 2)
2075 end = atoi(subSplitVec[j].c_str());
2081 if ((start < 0) || (end < 0)) {
2082 errorMsg =
"**ERROR** start or end of a range is not valid";
2088 std::cerr <<
"**WARNING** start=" << start <<
" > end=" << end <<
", hence I will swap them" << std::endl;
2092 for (
int j=start; j<=end; j++)
2095 }
else if (splitVec[i].find(
":") != std::string::npos) {
2096 std::vector<std::string> subSplitVec;
2098 split(subSplitVec, splitVec[i], is_any_of(
":"), token_compress_on);
2100 int start=-1, end=-1, step=-1;
2101 unsigned int count=0;
2102 for (
unsigned int j=0; j<subSplitVec.size(); j++) {
2103 if (subSplitVec[j].length() != 0) {
2109 start = atoi(subSplitVec[j].c_str());
2110 else if (count == 2)
2111 end = atoi(subSplitVec[j].c_str());
2112 else if (count == 3)
2113 step = atoi(subSplitVec[j].c_str());
2119 if ((start < 0) || (end < 0) || (step < 0)) {
2120 errorMsg =
"**ERROR** start, end, or step of a sequence is not valid";
2126 std::cerr <<
"**WARNING** start=" << start <<
" > end=" << end <<
", hence I will swap them" << std::endl;
2130 for (
int j=start; j<=end; j+=step)
2133 }
else if (
IsNumber(splitVec[i])) {
2134 ival = atoi(splitVec[i].c_str());
2135 fList.push_back(ival);
2137 errorMsg =
"**ERROR** invalid token: " + splitVec[i];
2159 for (
int i=str.size(); i>=0; --i) {
2160 if ((str[i] ==
' ') && (pos == -1)) {
2162 }
else if ((str[i] ==
'-') || (str[i] ==
':')) {
2164 str.erase(i+1, pos-i);
2166 }
else if (str[i] !=
' ') {
2171 for (
unsigned int i=0; i<str.size(); i++) {
2172 if ((str[i] ==
' ') && (pos == -1)) {
2174 }
else if ((str[i] ==
'-') || (str[i] ==
':')) {
2176 str.erase(pos, i-pos);
2179 }
else if (str[i] !=
' ') {
#define RRF_UNIT_MHz
Frequency in MHz (megahertz)
std::pair< Int_t, Int_t > PIntPair
#define PERIOD_HISTO_OFFSET
#define RRF_UNIT_Mcs
Angular frequency in Mc/s (Mega-cycles per second)
#define RRF_UNIT_G
Equivalent magnetic field in Gauss (G)
#define RRF_UNIT_kHz
Frequency in kHz (kilohertz)
#define RRF_UNIT_T
Equivalent magnetic field in Tesla (T)
#define RRF_UNIT_UNDEF
RRF unit undefined.
std::vector< Double_t > PDoubleVector
virtual void SetT0Bin(Double_t dval, Int_t idx=-1)
Bool_t fFitRangeInBins
flag telling if fit range is given in time or in bins
virtual void SetRRFFreq(Double_t freq, const char *unit)
virtual void SetFitRange(Double_t dval, UInt_t idx)
Double_t fFitRange[2]
fit range in (us)
Int_t fDataRange[4]
data bin range (fit type 0, 1, 2, 4)
virtual Double_t GetAddT0Bin(UInt_t addRunIdx, UInt_t histoIdx)
Int_t fFitType
fit type: 0=single histo fit, 1=single histo RRF fit, 2=asymmetry fit, 4=mu^- single histo fit,...
virtual Int_t GetAddT0BinSize(UInt_t addRunIdx)
std::vector< PDoubleVector > fAddT0
addt0 bins (fit type 0, 1, 2, 4). if fit type 0 -> f0, f1, f2, ...; if fit type 2,...
virtual Double_t GetFitRange(UInt_t idx)
Int_t fFitRangeOffset[2]
if fit range is given in bins it can have the form fit fgb+n0 lgb-n1. This variable holds the n0 and ...
Bool_t fGlobalPresent
flag showing if a GLOBAL block is present at all.
Int_t fRRFUnitTag
RRF unit tag.
virtual Int_t GetDataRange(UInt_t idx)
virtual void SetDataRange(Int_t ival, Int_t idx)
Int_t fRRFPacking
RRF packing.
virtual TString GetRRFUnit()
Double_t fRRFPhase
RRF phase in (°)
PDoubleVector fT0
t0 bins (fit type 0, 1, 2, 4). if fit type 0 -> f0, f1, f2, ...; if fit type 2, 4 -> f0,...
Int_t fPacking
packing/rebinning
virtual void SetRRFPacking(Int_t pack)
Double_t fRRFFreq
RRF frequency given in units of (MHz, Mc, T)
virtual void SetFitRangeOffset(Int_t ival, UInt_t idx)
virtual void SetAddT0Bin(Double_t dval, UInt_t addRunIdx, UInt_t histoNoIdx)
virtual Int_t GetFitRangeOffset(UInt_t idx)
virtual Double_t GetT0Bin(UInt_t idx=0)
virtual Double_t GetRRFFreq(const char *unit)
PStringVector fInstitute
e.g. psi, ral, triumf (former: run format)
virtual PIntVector * GetMap()
Int_t fBkgRange[4]
background bin range (fit type 0, 2, 4)
Int_t fNormParamNo
N0 parameter number (fit type 0)
virtual TString * GetInstitute(UInt_t idx=0)
Double_t fAlpha
estimated alpha value from F/B counts
Double_t fBkgEstimated[2]
keeps estimated background values (if present)
Int_t fAlphaParamNo
alpha parameter number (fit type 2, 4)
virtual Int_t GetDataRange(UInt_t idx)
virtual void SetFitRangeOffset(Int_t ival, UInt_t idx)
virtual TString * GetFileFormat(UInt_t idx=0)
virtual void SetBeamline(TString &str, Int_t idx=-1)
virtual void SetBkgFix(Double_t dval, Int_t idx)
virtual TString * GetBeamline(UInt_t idx=0)
Int_t fDataRange[4]
data bin range (fit type 0, 2, 4)
virtual Double_t GetFitRange(UInt_t idx)
virtual Int_t GetAddT0BinSize(UInt_t addRunIdx)
Int_t fLifetimeParamNo
muon lifetime parameter number (fit type 0)
virtual Double_t GetBkgEstimated(UInt_t idx)
virtual void SetFitRange(Double_t dval, UInt_t idx)
virtual void SetBkgEstimated(Double_t dval, Int_t idx)
PDoubleVector fT0
t0 bins (fit type 0, 2, 4). if fit type 0 -> f0, f1, f2, ...; if fit type 2, 4 -> f0,...
Int_t fBkgFitParamNo
background fit parameter number (fit type 0)
virtual void SetFileFormat(TString &str, Int_t idx=-1)
virtual void SetEstimatedAlpha(Double_t dval)
virtual Double_t GetAddT0Bin(UInt_t addRunIdx, UInt_t histoIdx)
PStringVector fBeamline
e.g. mue4, mue1, pim3, emu, m15, ... (former: run type)
Int_t fBetaParamNo
beta parameter number (fit type 2, 4)
virtual TString * GetRunName(UInt_t idx=0)
Bool_t fLifetimeCorrection
lifetime correction flag for viewing (fit type 0)
virtual void SetMap(Int_t mapVal, Int_t idx=-1)
TString fXYDataLabel[2]
used to get the indices via labels when using db-files (fit type 8)
PStringVector fFileFormat
e.g. root, nexus, psi-bin, mud, ascii, db
virtual void SetParGlobal(const TString &str, Int_t ival)
PStringVector fRunName
name of the run file
virtual void SetMapGlobal(UInt_t idx, Int_t ival)
PIntVector fMapGlobal
here is stored if the maps used in the RUN block are global or not
virtual Double_t GetBkgFix(UInt_t idx)
virtual void SetT0Bin(Double_t dval, Int_t idx=-1)
Int_t fXYDataIndex[2]
used to get the data indices when using db-files (fit type 8)
virtual Int_t GetForwardHistoNo(UInt_t idx=0)
Bool_t fFitRangeInBins
flag telling if fit range is given in time or in bins
virtual Int_t GetFitRangeOffset(UInt_t idx)
virtual void SetBackwardHistoNo(Int_t histoNo, Int_t idx=-1)
virtual void SetDataRange(Int_t ival, Int_t idx)
virtual Int_t GetBkgRange(UInt_t idx)
virtual Int_t GetBackwardHistoNo(UInt_t idx=0)
virtual void SetRunName(TString &str, Int_t idx=-1)
std::map< TString, Int_t > fParGlobal
here is stored if the parameters used in the RUN block are global or not
PIntVector fBackwardHistoNo
backward histogram number (fit type 2, 4)
Double_t fFitRange[2]
fit range in (us)
Double_t fBkgFix[2]
fixed background in (1/ns) (fit type 0, 2, 4)
virtual void SetBkgRange(Int_t ival, Int_t idx)
PIntVector fMap
map vector needed to switch parameters for different runs within a single theory
Int_t fFitRangeOffset[2]
if fit range is given in bins it can have the form fit fgb+n0 lgb-n1. This variable holds the n0 and ...
virtual void SetInstitute(TString &str, Int_t idx=-1)
Int_t fFitType
fit type: 0=single histo fit, 2=asymmetry fit, 4=mu^- single histo fit, 8=non muSR fit
virtual Double_t GetT0Bin(UInt_t idx=0)
PIntVector fForwardHistoNo
forward histogram number (fit type 0, 2, 4)
virtual void SetForwardHistoNo(Int_t histoNo, Int_t idx=-1)
Int_t fPacking
packing/rebinning
virtual void SetAddT0Bin(Double_t dval, UInt_t addRunIdx, UInt_t histoNoIdx)
std::vector< PDoubleVector > fAddT0
t0 bins for addrun's
std::vector< PDoubleVector > fData
vector of all data
virtual void AppendSubErrData(const UInt_t idx, const Double_t dval)
PStringVector fLabels
vector of all labels (used for x-, y-axis title in view)
virtual ~PNonMusrRawRunData()
Bool_t fFromAscii
if true: data file was an ascii input file, otherwise it is a db/dat input file
virtual void AppendSubData(const UInt_t idx, const Double_t dval)
PStringVector fDataTags
vector of all data tags
virtual void SetSize(const UInt_t size)
std::vector< PDoubleVector > fErrData
vector of all data errors
virtual void SetLabel(const UInt_t idx, const TString str)
virtual void Clear()
Clears all data from this histogram set.
Int_t fLastGoodBin
keeps the last good bin of the data set
Int_t fFirstBkgBin
keeps the first background bin of the data set
Double_t fTimeZeroBin
keeps the time zero bin
TString fTitle
histogram title.
PDoubleVector fData
keeps the histogram data
Int_t fLastBkgBin
keeps the last background bin of the data set
Int_t fHistoNo
corresponds to the histogram number in the data file
Int_t fFirstGoodBin
keeps the first good bin of the data set
Double_t fTimeZeroBinEstimated
keeps the estimated time zero bin
TString fName
keeps the histogram name.
virtual PRawRunDataSet * GetSet(UInt_t idx)
virtual PRawRunDataSet * Get(UInt_t histoNo)
virtual Double_t GetT0BinEstimated(UInt_t histoNo)
std::vector< PRawRunDataSet > fDataVec
virtual PIntPair GetGoodDataBin(UInt_t histoNo)
virtual Double_t GetT0Bin(UInt_t histoNo)
virtual PRawRunDataSet * operator[](UInt_t histoNo)
virtual PDoubleVector * GetData(UInt_t histoNo)
virtual Bool_t IsPresent(UInt_t histoNo)
virtual PIntPair GetBkgBin(UInt_t histoNo)
virtual void Set(PRawRunDataSet dataSet, Int_t idx=-1)
TString fRunTitle
run title
virtual PRawRunDataSet * GetDataSet(const UInt_t idx, Bool_t wantHistoNo=true)
Double_t fMuonBeamMomentum
given in MeV/c, for LEM this is the momentum of the secondary beamline and NOT the momentum of the lo...
TString fVersion
keeps the version information of the data file
TString fSetup
description of the setup of this run
TString fStartTime
start time of the run
virtual void SetRingAnode(const UInt_t idx, const Double_t dval)
Int_t fRunNumber
run number
TString fStartDate
start date of the run
TString fFileName
keeps the name of the original data file
UInt_t fNoOfHistosPerPeriod
number of histos per period (Red/Green mode); 0 means the run has no periods
PRawRunDataVector fData
keeps the histos together with the histo related properties such as T0, first good bin,...
time_t fStopDateTimeSec
stop run given as time_t object
TString fStopTime
stop time of the run
TString fSample
description of the sample
virtual const PDoubleVector GetRingAnode()
TString fComment
keeps the data file comment
virtual const Double_t GetTempError(const UInt_t idx)
TString fBeamline
keeps the name of the be beamline, e.g. muE4, piM3.1, ...
PDoublePairVector fTemp
measured temperatures and standard deviations during the run
PIntVector fRedGreenOffset
keeps the Red/Green offsets
TString fMagnet
name of the sample magnet
virtual const Bool_t DeadTimeCorrectionReady()
TString fRunName
name of the run as found in the msr-file
Int_t fNumberOfGoodFrames
needed to correct dead times at pulsed sources
virtual void SetTemperature(const UInt_t idx, const Double_t temp, const Double_t errTemp)
virtual const time_t CalcStopDateTime(bool &ok)
Double_t fEnergy
implantation energy of the muon
TString fGenericValidatorURL
keeps the generic validator MusrRoot URL
TString fGenerator
keeps the data file generator name
Double_t fField
magnetic field value in (G)
time_t fStartDateTimeSec
start run given as time_t object
virtual void SetTempError(const UInt_t idx, const Double_t errTemp)
std::vector< float > fDeadTimeParam
dead time parameter vector needed for pulsed sources
Double_t fTimeResolution
time resolution of the run in (ns)
Double_t fTransport
LEM transport settings (Moderator HV)
TString fCryo
name of the cryo
TString fMuonSource
keeps the type of muon source, e.g. continous surface beam, pulsed beam, low energy muon beam
Double_t fMuonSpinAngle
gives the muon spin angle in degrees (reference frame depends on the instrument)
virtual const std::vector< float > GetDeadTimeParam()
TString fMuonSpecies
positive muon or negative muon
virtual const PDoublePairVector * GetTemperature() const
PDoubleVector fRingAnode
LEM ring anode HVs (L,R[,T,B])
TString fInstrument
keeps the name of the instrument, e.g. LEM, GPS, MUSR, EMU, ...
TString fLaboratory
keeps the name of the laboratory, e.g. PSI, ISIS, TRIUMF, JPARC
TString fStopDate
stop date of the run
virtual const time_t CalcStartDateTime(bool &ok)
TString fSpecificValidatorURL
keeps the instrument specific validator MusrRoot URL
TString fOrientation
description of the orientation
Double_t fTheoryTimeStep
time step of the theory, i.e. the time length of a bin
Double_t fTheoryTimeStart
start time of the theory
PDoubleVector fXTheory
x-axis vector. Only used for non-muSR
PDoubleVector fX
x-axis vector. Only used for non-muSR
PDoubleVector fValue
data vector
Double_t fDataTimeStart
start time for the data set
PDoubleVector fTheory
theory vector
virtual void ReplaceTheory(const PDoubleVector &theo)
PDoubleVector fError
data error vector
Double_t fDataTimeStep
time step for the data set, i.e. the time length of a bin
virtual void SetTheoryValue(UInt_t i, Double_t dval)
virtual void StripSpaces()
virtual bool IsNumber(std::string &str)
virtual bool Parse(std::string &errorMsg, bool ignoreFirstToken=false)