various changes: comment and whitespace handling in the msr-files. Some more work in the direction of musrview
This commit is contained in:
@ -52,8 +52,7 @@ short term:
|
|||||||
|
|
||||||
* something is strange with the coordinate system in TPaveText! **CHECK**
|
* something is strange with the coordinate system in TPaveText! **CHECK**
|
||||||
|
|
||||||
* check problem with the mathmore implementation of 1F1(m;n;z)
|
* need a CLEAN concept for handling data/theory generation for kView!!
|
||||||
2008-04-07 cannot reproduce Bastians problem!?!?!
|
|
||||||
|
|
||||||
---------------------
|
---------------------
|
||||||
intermediate term:
|
intermediate term:
|
||||||
|
@ -134,7 +134,7 @@ int PMsrHandler::ReadMsrFile()
|
|||||||
current.fLineNo = line_no;
|
current.fLineNo = line_no;
|
||||||
current.fLine = line;
|
current.fLine = line;
|
||||||
|
|
||||||
if (line.BeginsWith("#")) { // if the line is not a comment line keep it
|
if (line.BeginsWith("#") || line.IsWhitespace()) { // if the line is a comment/empty line keep it
|
||||||
fComments.push_back(current);
|
fComments.push_back(current);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -270,8 +270,6 @@ int PMsrHandler::WriteMsrLogFile()
|
|||||||
tokens = 0;
|
tokens = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//cout << endl << "log file name = " << str.Data() << endl << endl;
|
|
||||||
|
|
||||||
ofstream f;
|
ofstream f;
|
||||||
|
|
||||||
// open mlog-file
|
// open mlog-file
|
||||||
@ -281,20 +279,16 @@ int PMsrHandler::WriteMsrLogFile()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// write mlog-file
|
// write mlog-file
|
||||||
|
|
||||||
int lineNo = 1;
|
int lineNo = 1;
|
||||||
|
|
||||||
// write title
|
// write title
|
||||||
f << fTitle.Data();
|
f << fTitle.Data();
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
CheckAndWriteComment(f, ++lineNo);
|
||||||
// f << endl << "###############################################################";
|
|
||||||
|
|
||||||
// write fit parameter block
|
// write fit parameter block
|
||||||
f << endl << "FITPARAMETER";
|
f << endl << "FITPARAMETER";
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
CheckAndWriteComment(f, ++lineNo);
|
||||||
// f << endl << "# No Name Value Step Pos_Error Boundaries";
|
|
||||||
f << endl;
|
f << endl;
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
|
||||||
PMsrParamList::iterator param_iter;
|
PMsrParamList::iterator param_iter;
|
||||||
for (param_iter = fParam.begin(); param_iter != fParam.end(); ++param_iter) {
|
for (param_iter = fParam.begin(); param_iter != fParam.end(); ++param_iter) {
|
||||||
// parameter no
|
// parameter no
|
||||||
@ -336,11 +330,10 @@ int PMsrHandler::WriteMsrLogFile()
|
|||||||
f << left << param_iter->fUpperBoundary;
|
f << left << param_iter->fUpperBoundary;
|
||||||
f << " ";
|
f << " ";
|
||||||
}
|
}
|
||||||
// terminate line
|
// terminate parameter line
|
||||||
f << endl;
|
f << endl;
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
CheckAndWriteComment(f, ++lineNo);
|
||||||
}
|
}
|
||||||
// f << endl << "###############################################################";
|
|
||||||
|
|
||||||
// write theory block
|
// write theory block
|
||||||
PMsrLines::iterator theo_iter;
|
PMsrLines::iterator theo_iter;
|
||||||
@ -348,9 +341,6 @@ int PMsrHandler::WriteMsrLogFile()
|
|||||||
f << endl << theo_iter->fLine.Data();
|
f << endl << theo_iter->fLine.Data();
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
CheckAndWriteComment(f, ++lineNo);
|
||||||
}
|
}
|
||||||
f << endl;
|
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
|
||||||
// f << endl << "###############################################################";
|
|
||||||
|
|
||||||
// write functions block
|
// write functions block
|
||||||
f << endl << "FUNCTIONS";
|
f << endl << "FUNCTIONS";
|
||||||
@ -361,9 +351,6 @@ int PMsrHandler::WriteMsrLogFile()
|
|||||||
f << endl << str.Data();
|
f << endl << str.Data();
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
CheckAndWriteComment(f, ++lineNo);
|
||||||
}
|
}
|
||||||
f << endl;
|
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
|
||||||
// f << endl << "###############################################################";
|
|
||||||
|
|
||||||
// write run block
|
// write run block
|
||||||
PMsrRunList::iterator run_iter;
|
PMsrRunList::iterator run_iter;
|
||||||
@ -586,11 +573,7 @@ int PMsrHandler::WriteMsrLogFile()
|
|||||||
f << endl << left << "packing";
|
f << endl << left << "packing";
|
||||||
f << run_iter->fPacking;
|
f << run_iter->fPacking;
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
CheckAndWriteComment(f, ++lineNo);
|
||||||
// run block done
|
|
||||||
f << endl;
|
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
|
||||||
}
|
}
|
||||||
// f << endl << "###############################################################";
|
|
||||||
|
|
||||||
// write command block
|
// write command block
|
||||||
f << endl << "COMMANDS";
|
f << endl << "COMMANDS";
|
||||||
@ -600,9 +583,6 @@ int PMsrHandler::WriteMsrLogFile()
|
|||||||
f << endl << cmd_iter->fLine.Data();
|
f << endl << cmd_iter->fLine.Data();
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
CheckAndWriteComment(f, ++lineNo);
|
||||||
}
|
}
|
||||||
f << endl;
|
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
|
||||||
// f << endl << "###############################################################";
|
|
||||||
|
|
||||||
// write plot block
|
// write plot block
|
||||||
PMsrPlotList::iterator plot_iter;
|
PMsrPlotList::iterator plot_iter;
|
||||||
@ -646,10 +626,7 @@ int PMsrHandler::WriteMsrLogFile()
|
|||||||
f << " " << plot_iter->fYmin << " " << plot_iter->fYmax;
|
f << " " << plot_iter->fYmin << " " << plot_iter->fYmax;
|
||||||
}
|
}
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
CheckAndWriteComment(f, ++lineNo);
|
||||||
f << endl;
|
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
|
||||||
}
|
}
|
||||||
// f << endl << "###############################################################";
|
|
||||||
|
|
||||||
// write statistic block
|
// write statistic block
|
||||||
TDatime dt;
|
TDatime dt;
|
||||||
@ -684,10 +661,6 @@ int PMsrHandler::WriteMsrLogFile()
|
|||||||
f << endl << stat_iter->fLine.Data();
|
f << endl << stat_iter->fLine.Data();
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
CheckAndWriteComment(f, ++lineNo);
|
||||||
}
|
}
|
||||||
f << endl;
|
|
||||||
CheckAndWriteComment(f, ++lineNo);
|
|
||||||
// f << endl << "###############################################################";
|
|
||||||
|
|
||||||
|
|
||||||
// close mlog-file
|
// close mlog-file
|
||||||
f.close();
|
f.close();
|
||||||
|
@ -685,8 +685,8 @@ void PMusrCanvas::HandleSingleHistoDataSet(unsigned int runNo, PRunData *data)
|
|||||||
// fill histogram
|
// fill histogram
|
||||||
int pack = fMsrHandler->GetMsrRunList()->at(runNo).fPacking;
|
int pack = fMsrHandler->GetMsrRunList()->at(runNo).fPacking;
|
||||||
for (unsigned int i=0; i<data->fValue.size(); i++) {
|
for (unsigned int i=0; i<data->fValue.size(); i++) {
|
||||||
dataHisto->SetBinContent(i, pack*data->fValue[i]);
|
dataHisto->SetBinContent(i, data->fValue[i]);
|
||||||
dataHisto->SetBinError(i, TMath::Sqrt(pack)*data->fError[i]);
|
dataHisto->SetBinError(i, data->fError[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -717,6 +717,8 @@ void PMusrCanvas::HandleSingleHistoDataSet(unsigned int runNo, PRunData *data)
|
|||||||
start = data->fTheoryTimeStart;
|
start = data->fTheoryTimeStart;
|
||||||
end = data->fTheoryTimeStart + (data->fTheory.size()-1)*data->fTheoryTimeStep;
|
end = data->fTheoryTimeStart + (data->fTheory.size()-1)*data->fTheoryTimeStep;
|
||||||
|
|
||||||
|
cout << endl << ">> start = " << start << ", end = " << end << endl;
|
||||||
|
|
||||||
// invoke histo
|
// invoke histo
|
||||||
theoHisto = new TH1F(name, name, data->fTheory.size(), start, end);
|
theoHisto = new TH1F(name, name, data->fTheory.size(), start, end);
|
||||||
|
|
||||||
@ -728,8 +730,8 @@ void PMusrCanvas::HandleSingleHistoDataSet(unsigned int runNo, PRunData *data)
|
|||||||
} else { // no lifetimecorrection
|
} else { // no lifetimecorrection
|
||||||
// fill histogram
|
// fill histogram
|
||||||
int pack = fMsrHandler->GetMsrRunList()->at(runNo).fPacking;
|
int pack = fMsrHandler->GetMsrRunList()->at(runNo).fPacking;
|
||||||
for (unsigned int i=0; i<data->fValue.size(); i++) {
|
for (unsigned int i=0; i<data->fTheory.size(); i++) {
|
||||||
theoHisto->SetBinContent(i, pack*data->fTheory[i]);
|
theoHisto->SetBinContent(i, data->fTheory[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,9 +257,38 @@ void PRunSingleHisto::CalcTheory()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// calculate theory
|
// calculate theory
|
||||||
|
unsigned int size;
|
||||||
|
double start;
|
||||||
|
double resolution;
|
||||||
double time;
|
double time;
|
||||||
for (unsigned int i=0; i<fData.fValue.size(); i++) {
|
PRawRunData* runData; // only used for kView
|
||||||
time = fData.fDataTimeStart + (double)i*fData.fDataTimeStep;
|
unsigned int histoNo; // only used for kView
|
||||||
|
switch (fHandleTag) {
|
||||||
|
case kFit:
|
||||||
|
size = fData.fValue.size();
|
||||||
|
start = fData.fDataTimeStart;
|
||||||
|
resolution = fData.fDataTimeStep;
|
||||||
|
break;
|
||||||
|
case kView:
|
||||||
|
runData = fRawData->GetRunData(fRunInfo->fRunName);
|
||||||
|
if (fRunInfo->fFileFormat.Contains("ppc")) {
|
||||||
|
histoNo = runData->fDataBin.size()/2 + fRunInfo->fForwardHistoNo-1;
|
||||||
|
} else {
|
||||||
|
histoNo = fRunInfo->fForwardHistoNo-1;
|
||||||
|
}
|
||||||
|
size = runData->fDataBin[histoNo].size();
|
||||||
|
start = -fT0s[0]*fTimeResolution;
|
||||||
|
resolution = fTimeResolution;
|
||||||
|
fData.fTheoryTimeStart = start;
|
||||||
|
fData.fTheoryTimeStep = resolution;
|
||||||
|
break;
|
||||||
|
case kEmpty:
|
||||||
|
default:
|
||||||
|
size = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
for (unsigned int i=0; i<size; i++) {
|
||||||
|
time = start + (double)i*resolution;
|
||||||
fData.fTheory.push_back(N0*TMath::Exp(-time/tau)*(1+fTheory->Func(time, par, fFuncValues))+bkg);
|
fData.fTheory.push_back(N0*TMath::Exp(-time/tau)*(1+fTheory->Func(time, par, fFuncValues))+bkg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -382,7 +411,7 @@ bool PRunSingleHisto::PrepareData()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// everything looks fine, hence fill data set
|
// everything looks fine, hence fill data set
|
||||||
double value = 0.0;
|
double value = 0.0;
|
||||||
// data start at data_start-t0
|
// data start at data_start-t0
|
||||||
// time shifted so that packing is included correctly, i.e. t0 == t0 after packing
|
// time shifted so that packing is included correctly, i.e. t0 == t0 after packing
|
||||||
fData.fDataTimeStart = fTimeResolution*(((double)start-t0)+(double)fRunInfo->fPacking/2.0);
|
fData.fDataTimeStart = fTimeResolution*(((double)start-t0)+(double)fRunInfo->fPacking/2.0);
|
||||||
@ -412,28 +441,8 @@ bool PRunSingleHisto::PrepareData()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// fill theory vector for kView
|
// fill theory vector for kView
|
||||||
if (kView) {
|
if (fHandleTag == kView) {
|
||||||
// feed the parameter vector
|
CalcTheory();
|
||||||
std::vector<double> par;
|
|
||||||
PMsrParamList *paramList = fMsrInfo->GetMsrParamList();
|
|
||||||
for (unsigned int i=0; i<paramList->size(); i++)
|
|
||||||
par.push_back((*paramList)[i].fValue);
|
|
||||||
|
|
||||||
|
|
||||||
fData.fTheoryTimeStart = -t0*fTimeResolution;
|
|
||||||
fData.fTheoryTimeStep = fTimeResolution;
|
|
||||||
for (unsigned int i=0; i<runData->fDataBin[histoNo].size(); i++) {
|
|
||||||
if ((int)i-(int)t0 < 0) {
|
|
||||||
fData.fTheory.push_back(0.0);
|
|
||||||
} else {
|
|
||||||
time = fData.fTheoryTimeStart + i*fTimeResolution;
|
|
||||||
value = fTheory->Func(time, par, fFuncValues);
|
|
||||||
fData.fTheory.push_back(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// clean up
|
|
||||||
par.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -55,7 +55,7 @@ using namespace std;
|
|||||||
void musrview_syntax()
|
void musrview_syntax()
|
||||||
{
|
{
|
||||||
cout << endl << "usage: musrview <msr-file> | --version | --help";
|
cout << endl << "usage: musrview <msr-file> | --version | --help";
|
||||||
cout << endl << " <msr-file>: msr input file";
|
cout << endl << " <msr-file>: msr/mlog input file";
|
||||||
cout << endl << " 'musrview <msr-file>' will execute msrfit";
|
cout << endl << " 'musrview <msr-file>' will execute msrfit";
|
||||||
cout << endl << " 'musrview' or 'msrfit --help' will show this help";
|
cout << endl << " 'musrview' or 'msrfit --help' will show this help";
|
||||||
cout << endl << " 'musrview --version' will print the msrfit version";
|
cout << endl << " 'musrview --version' will print the msrfit version";
|
||||||
@ -81,9 +81,9 @@ int main(int argc, char *argv[])
|
|||||||
} else if (strstr(argv[1], "--help")) {
|
} else if (strstr(argv[1], "--help")) {
|
||||||
show_syntax = true;
|
show_syntax = true;
|
||||||
} else {
|
} else {
|
||||||
// check if filename has extension msr
|
// check if filename has extension msr or mlog
|
||||||
if (!strstr(argv[1], ".msr")) {
|
if (!strstr(argv[1], ".msr") && !strstr(argv[1], ".mlog")) {
|
||||||
cout << endl << "**ERROR** " << argv[1] << " is not a msr-file!" << endl;
|
cout << endl << "**ERROR** " << argv[1] << " is not a msr/mlog-file!" << endl;
|
||||||
show_syntax = true;
|
show_syntax = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user