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;
721 return fData.GetSet(idx);
769 if (idx >=
fTemp.size()) {
772 fTemp[idx].first = temp;
773 fTemp[idx].second = errTemp;
787 if (idx >=
fTemp.size()) {
791 fTemp[idx].second = errTemp;
812 for (UInt_t i=0; i<4; i++) {
836 TString unitStr = unit;
838 if (!unitStr.CompareTo(
"MHz", TString::kIgnoreCase))
840 else if (!unitStr.CompareTo(
"Mc", TString::kIgnoreCase))
842 else if (!unitStr.CompareTo(
"T", TString::kIgnoreCase))
878 TString unitStr = unit;
880 if (!unitStr.CompareTo(
"MHz", TString::kIgnoreCase))
882 else if (!unitStr.CompareTo(
"Mc", TString::kIgnoreCase))
884 else if (!unitStr.CompareTo(
"T", TString::kIgnoreCase))
887 std::cerr << std::endl <<
">> PMsrGlobalBlock::SetRRFFreq: **ERROR** found undefined RRF unit '" << unit <<
"'!";
888 std::cerr << std::endl <<
">> Will set RRF frequency to 0.0." << std::endl;
909 unit = TString(
"??");
912 unit = TString(
"kHz");
915 unit = TString(
"MHz");
918 unit = TString(
"Mc");
927 unit = TString(
"??");
945 std::cerr << std::endl <<
"PMsrGlobalBlock::SetRRFPacking: **WARNING** found RRF packing <= 0. Likely doesn't make any sense." << std::endl;
984 std::cerr << std::endl <<
">> PMsrGlobalBlock::SetDataRange: **WARNING** idx=" << idx <<
", only idx=0..3 are sensible.";
985 std::cerr << std::endl;
1006 if (idx >=
fT0.size())
1024 fT0.push_back(dval);
1028 if (idx >=
static_cast<Int_t
>(
fT0.size()))
1051 if (addRunIdx >=
fAddT0.size())
1054 return fAddT0[addRunIdx].size();
1075 if (addRunIdx >=
fAddT0.size())
1078 if (
fAddT0[addRunIdx].empty())
1081 if (histoIdx >=
fAddT0[addRunIdx].size())
1084 return fAddT0[addRunIdx][histoIdx];
1099 if (addRunIdx >=
fAddT0.size())
1100 fAddT0.resize(addRunIdx+1);
1102 if (histoNoIdx >=
fAddT0[addRunIdx].size())
1103 fAddT0[addRunIdx].resize(histoNoIdx+1);
1105 fAddT0[addRunIdx][histoNoIdx] = dval;
1201 for (UInt_t i=0; i<2; i++) {
1205 for (UInt_t i=0; i<4; i++) {
1258 for (UInt_t i=0; i<4; i++) {
1281 for (UInt_t i=0; i<
fAddT0.size(); i++)
1325 if (idx >=
static_cast<Int_t
>(
fRunName.size()))
1367 if (idx >=
static_cast<Int_t
>(
fBeamline.size()))
1409 if (idx >=
static_cast<Int_t
>(
fInstitute.size()))
1451 if (idx >=
static_cast<Int_t
>(
fFileFormat.size()))
1559 if (idx>
fMap.size())
1577 fMap.push_back(mapVal);
1581 if (idx >=
static_cast<Int_t
>(
fMap.size()))
1621 std::cerr << std::endl <<
">> PMsrRunBlock::SetBkgEstimated: **WARNING** idx=" << idx <<
", only idx=0,1 are sensible.";
1622 std::cerr << std::endl;
1661 std::cerr << std::endl <<
">> PMsrRunBlock::SetBkgFix: **WARNING** idx=" << idx <<
", only idx=0,1 are sensible.";
1662 std::cerr << std::endl;
1702 std::cerr << std::endl <<
">> PMsrRunBlock::SetBkgRange: **WARNING** idx=" << idx <<
", only idx=0..3 are sensible.";
1703 std::cerr << std::endl;
1744 std::cerr << std::endl <<
">> PMsrRunBlock::SetDataRange: **WARNING** idx=" << idx <<
", only idx=0..3 are sensible.";
1745 std::cerr << std::endl;
1766 if (idx >=
fT0.size())
1784 fT0.push_back(dval);
1788 if (idx >=
static_cast<Int_t
>(
fT0.size()))
1811 if (addRunIdx >=
fAddT0.size())
1814 return fAddT0[addRunIdx].size();
1835 if (addRunIdx >=
fAddT0.size())
1838 if (
fAddT0[addRunIdx].empty())
1841 if (histoIdx >=
fAddT0[addRunIdx].size())
1844 return fAddT0[addRunIdx][histoIdx];
1859 if (addRunIdx >=
fAddT0.size())
1860 fAddT0.resize(addRunIdx+1);
1862 if (histoNoIdx >=
fAddT0[addRunIdx].size())
1863 fAddT0[addRunIdx].resize(histoNoIdx+1);
1865 fAddT0[addRunIdx][histoNoIdx] = dval;
1970 if (idx <
fMap.size() &&
fMap[idx] > 0)
2010 std::vector<std::string> splitVec;
2017 split(splitVec,
fString, is_any_of(
" "), token_compress_on);
2019 unsigned int start=0;
2020 if (ignoreFirstToken)
2023 for (
unsigned int i=start; i<splitVec.size(); i++) {
2024 if (splitVec[i].length() != 0) {
2025 if (splitVec[i].find(
"-") != std::string::npos) {
2026 std::vector<std::string> subSplitVec;
2028 split(subSplitVec, splitVec[i], is_any_of(
"-"), token_compress_on);
2030 int start=-1, end=-1;
2031 unsigned int count=0;
2032 for (
unsigned int j=0; j<subSplitVec.size(); j++) {
2033 if (subSplitVec[j].length() != 0) {
2039 start = atoi(subSplitVec[j].c_str());
2040 else if (count == 2)
2041 end = atoi(subSplitVec[j].c_str());
2047 if ((start < 0) || (end < 0)) {
2048 errorMsg =
"**ERROR** start or end of a range is not valid";
2054 std::cerr <<
"**WARNING** start=" << start <<
" > end=" << end <<
", hence I will swap them" << std::endl;
2058 for (
int j=start; j<=end; j++)
2061 }
else if (splitVec[i].find(
":") != std::string::npos) {
2062 std::vector<std::string> subSplitVec;
2064 split(subSplitVec, splitVec[i], is_any_of(
":"), token_compress_on);
2066 int start=-1, end=-1, step=-1;
2067 unsigned int count=0;
2068 for (
unsigned int j=0; j<subSplitVec.size(); j++) {
2069 if (subSplitVec[j].length() != 0) {
2075 start = atoi(subSplitVec[j].c_str());
2076 else if (count == 2)
2077 end = atoi(subSplitVec[j].c_str());
2078 else if (count == 3)
2079 step = atoi(subSplitVec[j].c_str());
2085 if ((start < 0) || (end < 0) || (step < 0)) {
2086 errorMsg =
"**ERROR** start, end, or step of a sequence is not valid";
2092 std::cerr <<
"**WARNING** start=" << start <<
" > end=" << end <<
", hence I will swap them" << std::endl;
2096 for (
int j=start; j<=end; j+=step)
2099 }
else if (
IsNumber(splitVec[i])) {
2100 ival = atoi(splitVec[i].c_str());
2101 fList.push_back(ival);
2103 errorMsg =
"**ERROR** invalid token: " + splitVec[i];
2125 for (
int i=str.size(); i>=0; --i) {
2126 if ((str[i] ==
' ') && (pos == -1)) {
2128 }
else if ((str[i] ==
'-') || (str[i] ==
':')) {
2130 str.erase(i+1, pos-i);
2132 }
else if (str[i] !=
' ') {
2137 for (
unsigned int i=0; i<str.size(); i++) {
2138 if ((str[i] ==
' ') && (pos == -1)) {
2140 }
else if ((str[i] ==
'-') || (str[i] ==
':')) {
2142 str.erase(pos, i-pos);
2145 }
else if (str[i] !=
' ') {
#define RRF_UNIT_MHz
Frequency in MHz (megahertz)
std::pair< Int_t, Int_t > PIntPair
#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
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)
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)