improved parsing
This commit is contained in:
parent
bbbab12a1a
commit
5fede09cd1
@ -1103,11 +1103,12 @@ void TPsiRunHeader::Set(TString pathName, TIntVector value)
|
||||
*/
|
||||
Bool_t TPsiRunHeader::ExtractHeaderInformation(TObjArray *headerInfo, TString requestedPath)
|
||||
{
|
||||
TString name(""), path(""), pathName(""), str(""), strValue("");
|
||||
TString headerName(""), name(""), path(""), pathName(""), str(""), strValue("");
|
||||
TObjString *ostr = 0;
|
||||
TObjArray *tokens = 0;
|
||||
Bool_t required=false;
|
||||
UInt_t idx;
|
||||
Ssiz_t idx1, idx2;
|
||||
Int_t intValue;
|
||||
|
||||
// go through all entries of this header information from the PSI-ROOT file
|
||||
@ -1115,12 +1116,19 @@ Bool_t TPsiRunHeader::ExtractHeaderInformation(TObjArray *headerInfo, TString re
|
||||
required=false;
|
||||
ostr = dynamic_cast<TObjString*>(headerInfo->At(i));
|
||||
str = ostr->GetString();
|
||||
// get header name
|
||||
idx1 = str.First('-');
|
||||
idx2 = str.First(':');
|
||||
headerName = TString("");
|
||||
for (Int_t j=idx1+2; j<idx2; j++)
|
||||
headerName += str[j];
|
||||
|
||||
// handle required entry
|
||||
for (UInt_t j=0; j<fEntry.size(); j++) {
|
||||
// check if the XML entry has the right requested path
|
||||
if (fEntry[j].GetPathName().Contains(requestedPath)) {
|
||||
SplitPathName(fEntry[j].GetPathName(), path, name);
|
||||
if (str.Contains(name)) {
|
||||
if (!headerName.CompareTo(name)) {
|
||||
required=true;
|
||||
idx = j;
|
||||
break;
|
||||
@ -1129,7 +1137,6 @@ Bool_t TPsiRunHeader::ExtractHeaderInformation(TObjArray *headerInfo, TString re
|
||||
}
|
||||
if (required) { // handle required entry
|
||||
// get the name
|
||||
Ssiz_t idx1, idx2;
|
||||
idx1 = str.First('-');
|
||||
idx2 = str.First(':');
|
||||
name = TString("");
|
||||
@ -1295,12 +1302,19 @@ Bool_t TPsiRunHeader::ExtractHeaderInformation(TObjArray *headerInfo, TString re
|
||||
required=false;
|
||||
ostr = dynamic_cast<TObjString*>(headerInfo->At(i));
|
||||
str = ostr->GetString();
|
||||
// get header name
|
||||
idx1 = str.First('-');
|
||||
idx2 = str.First(':');
|
||||
headerName = TString("");
|
||||
for (Int_t j=idx1+2; j<idx2; j++)
|
||||
headerName += str[j];
|
||||
|
||||
// handle additional entries, i.e. not required entries
|
||||
for (UInt_t j=0; j<fEntry.size(); j++) {
|
||||
// check if the XML entry has the right requested path
|
||||
if (fEntry[j].GetPathName().Contains(requestedPath)) {
|
||||
SplitPathName(fEntry[j].GetPathName(), path, name);
|
||||
if (str.Contains(name)) {
|
||||
if (!headerName.CompareTo(name)) {
|
||||
required=true;
|
||||
break;
|
||||
}
|
||||
@ -1308,7 +1322,6 @@ Bool_t TPsiRunHeader::ExtractHeaderInformation(TObjArray *headerInfo, TString re
|
||||
}
|
||||
if (!required) { // handle not required but fitting the requested path
|
||||
// get the name
|
||||
Ssiz_t idx1, idx2;
|
||||
idx1 = str.First('-');
|
||||
idx2 = str.First(':');
|
||||
name = TString("");
|
||||
|
@ -132,6 +132,10 @@
|
||||
<name>RunInfo/Red-Green Description</name>
|
||||
<type>TStringVector</type>
|
||||
</entry>
|
||||
<entry>
|
||||
<name>RunInfo/Slow Control Histo Names</name>
|
||||
<type>TStringVector</type>
|
||||
</entry>
|
||||
<entry>
|
||||
<name>SampleEnv/Cryo</name>
|
||||
<type>TString</type>
|
||||
|
@ -74,7 +74,7 @@ int main(int argc, char *argv[])
|
||||
header->Set("RunInfo/Run Start Time", "2011-04-19 14:25:22");
|
||||
header->Set("RunInfo/Run Stop Time", "2011-04-19 19:13:47");
|
||||
|
||||
prop.Set("Time Resolution", 0.193525, "ns", "TDC 9999");
|
||||
prop.Set("Time Resolution", 0.1953125, "ns", "TDC 9999");
|
||||
header->Set("RunInfo/Time Resolution", prop);
|
||||
|
||||
prop.Set("Sample Temperature", 3.2, 3.21, 0.05, "K", "CF1");
|
||||
@ -153,8 +153,8 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
// root file header related things
|
||||
TFolder *runHeader = gROOT->GetRootFolder()->AddFolder("RunHeaderInfo", "PSI Run Header Info");
|
||||
gROOT->GetListOfBrowsables()->Add(runHeader, "RunHeaderInfo");
|
||||
TFolder *runHeader = gROOT->GetRootFolder()->AddFolder("RunHeader", "PSI Run Header Info");
|
||||
gROOT->GetListOfBrowsables()->Add(runHeader, "RunHeader");
|
||||
|
||||
TObjArray runInfo;
|
||||
header->GetHeaderInfo("RunInfo", runInfo);
|
||||
@ -200,9 +200,9 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
runHeader = 0;
|
||||
f->GetObject("RunHeaderInfo", runHeader);
|
||||
f->GetObject("RunHeader", runHeader);
|
||||
if (runHeader == 0) {
|
||||
cerr << endl << ">> **ERROR** Couldn't get top folder RunHeaderInfo";
|
||||
cerr << endl << ">> **ERROR** Couldn't get top folder RunHeader";
|
||||
f->Close();
|
||||
return -1;
|
||||
}
|
||||
@ -213,7 +213,7 @@ int main(int argc, char *argv[])
|
||||
// get RunHeader
|
||||
oarray = (TObjArray*) runHeader->FindObjectAny("RunInfo");
|
||||
if (oarray == 0) {
|
||||
cerr << endl << ">> **ERROR** Couldn't get RunHeader" << endl;
|
||||
cerr << endl << ">> **ERROR** Couldn't get RunInfo" << endl;
|
||||
}
|
||||
header->ExtractHeaderInformation(oarray, "RunInfo");
|
||||
|
||||
|
@ -68,9 +68,9 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
TFolder *runHeader = 0;
|
||||
f->GetObject("RunHeaderInfo", runHeader);
|
||||
f->GetObject("RunHeader", runHeader);
|
||||
if (runHeader == 0) {
|
||||
cerr << endl << ">> **ERROR** Couldn't get top folder RunHeaderInfo";
|
||||
cerr << endl << ">> **ERROR** Couldn't get top folder RunHeader";
|
||||
f->Close();
|
||||
return -1;
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
header->Set("RunInfo/Histo Length", 8192);
|
||||
|
||||
prop.Set("Time Resolution", 0.193525, "ns", "TDC 9999");
|
||||
prop.Set("Time Resolution", 0.1953125, "ns", "TDC 9999");
|
||||
header->Set("RunInfo/Time Resolution", prop);
|
||||
|
||||
TIntVector t0;
|
||||
@ -142,6 +142,11 @@ int main(int argc, char *argv[])
|
||||
redGreenDescription.push_back("E-field/light on/on");
|
||||
header->Set("RunInfo/Red-Green Description", redGreenDescription);
|
||||
|
||||
TStringVector scHistoNames;
|
||||
scHistoNames.push_back("Sample Temperature");
|
||||
scHistoNames.push_back("Sample Magnetic Field");
|
||||
header->Set("RunInfo/Slow Control Histo Names", scHistoNames);
|
||||
|
||||
TStringVector dummyTest;
|
||||
dummyTest.push_back("dummy1");
|
||||
dummyTest.push_back("dummy2");
|
||||
@ -199,8 +204,8 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
// root file header related things
|
||||
TFolder *runHeader = gROOT->GetRootFolder()->AddFolder("RunHeaderInfo", "PSI Run Header Info");
|
||||
gROOT->GetListOfBrowsables()->Add(runHeader, "RunHeaderInfo");
|
||||
TFolder *runHeader = gROOT->GetRootFolder()->AddFolder("RunHeader", "PSI Run Header Info");
|
||||
gROOT->GetListOfBrowsables()->Add(runHeader, "RunHeader");
|
||||
|
||||
TObjArray runInfo;
|
||||
header->GetHeaderInfo("RunInfo", runInfo);
|
||||
|
Loading…
x
Reference in New Issue
Block a user