|
1 | | -TRestRun* run0 = nullptr; |
2 | | -TRestAnalysisTree* ana_tree0 = nullptr; |
3 | | -TTree* ev_tree0 = nullptr; |
4 | | -TRestDataSet* dSet0 = nullptr; |
5 | | -std::map<std::string, TRestMetadata*> metadata0; |
| 1 | +TRestRun* run = nullptr; |
| 2 | +TRestAnalysisTree* ana_tree = nullptr; |
| 3 | +TTree* ev_tree = nullptr; |
| 4 | +TRestDataSet* dSet = nullptr; |
6 | 5 |
|
7 | 6 | void REST_OpenInputFile(const std::string& fileName) { |
8 | 7 | if (TRestTools::isRunFile(fileName)) { |
9 | | - printf("\n%s\n", "REST processed file identified. It contains a valid TRestRun."); |
10 | | - run0 = new TRestRun(fileName); |
11 | | - printf("\nAttaching TRestRun %s as run0...\n", fileName.c_str()); |
12 | | - ana_tree0 = run0->GetAnalysisTree(); |
13 | | - printf("\nAttaching TRestAnalysisTree as ana_tree0...\n"); |
14 | | - ev_tree0 = run0->GetEventTree(); |
15 | | - printf("\nAttaching event tree as ev_tree0...\n"); |
16 | | - std::map<std::string, int> metanames; |
17 | | - for (auto& [name, meta] : metadata0) delete meta; |
18 | | - metadata0.clear(); |
19 | | - for (int n = 0; n < run0->GetNumberOfMetadata(); n++) { |
20 | | - std::string metaName = run0->GetMetadataNames()[n]; |
| 8 | + printf("\n%s\n\n", "REST processed file identified. It contains a valid TRestRun."); |
| 9 | + run = new TRestRun(fileName); |
| 10 | + printf("\nAttaching TRestRun %s as run...\n", fileName.c_str()); |
| 11 | + ana_tree = run->GetAnalysisTree(); |
| 12 | + printf("Attaching TRestAnalysisTree as ana_tree...\n"); |
| 13 | + ev_tree = run->GetEventTree(); |
| 14 | + printf("Attaching event tree as ev_tree...\n"); |
| 15 | + std::string eventType = run->GetInputEvent()->ClassName(); |
| 16 | + std::string evcmd = Form("%s* ev = (%s*)run->GetInputEvent();", eventType.c_str(), eventType.c_str()); |
| 17 | + gROOT->ProcessLine(evcmd.c_str()); |
| 18 | + run->GetEntry(0); |
| 19 | + printf("Attaching input event %s as ev...\n", eventType.c_str()); |
| 20 | + for (int n = 0; n < run->GetNumberOfMetadata(); n++) { |
| 21 | + if (n == 0) printf("Attaching Metadata classes:\n"); |
| 22 | + std::string metaName = run->GetMetadataNames()[n]; |
21 | 23 | if (metaName.find("Historic") != string::npos) continue; |
22 | | - TRestMetadata* md = run0->GetMetadata(metaName); |
23 | | - metadata0[metaName] = md; |
24 | | - printf("\nAttaching Metadata class %s as metadata0[\"%s\"]...\n", md->ClassName(), |
25 | | - metaName.c_str()); |
| 24 | + TRestMetadata* md = run->GetMetadata(metaName); |
| 25 | + if (md == nullptr) { |
| 26 | + printf("\nERROR Cannot get metadata pointer for class %s and name%s\n", md->ClassName(), |
| 27 | + metaName.c_str()); |
| 28 | + continue; |
| 29 | + } |
| 30 | + std::string mName = Replace(metaName, " ", ""); |
| 31 | + mName = Replace(mName, ".", "_"); |
| 32 | + std::string mdcmd = Form("%s* %s = (%s*)run->GetMetadata(\"%s\");", md->ClassName(), |
| 33 | + mName.c_str(), md->ClassName(), metaName.c_str()); |
| 34 | + gROOT->ProcessLine(mdcmd.c_str()); |
| 35 | + printf("- %s as %s\n", md->ClassName(), mName.c_str()); |
26 | 36 | } |
| 37 | + printf("\n"); |
27 | 38 |
|
28 | 39 | } else if (TRestTools::isDataSet(fileName)) { |
29 | 40 | printf("\n%s\n", "REST dataset file identified. It contains a valid TRestDataSet."); |
30 | | - printf("\nImporting dataset %s as `dSet0`\n", fileName.c_str()); |
| 41 | + printf("\nImporting dataset %s as `dSet`\n", fileName.c_str()); |
31 | 42 | printf("\n%s\n", "The dataset is ready. You may now access the dataset using:"); |
32 | | - printf("\n%s\n", " - dSet0->PrintMetadata()"); |
33 | | - printf("%s\n", " - dSet0->GetDataFrame().GetColumnNames()"); |
34 | | - printf("%s\n\n", " - dSet0->GetTree()->GetEntries()"); |
35 | | - if (dSet0) delete dSet0; |
36 | | - dSet0 = new TRestDataSet(); |
37 | | - dSet0->Import(fileName); |
| 43 | + printf("\n%s\n", " - dSet->PrintMetadata()"); |
| 44 | + printf("%s\n", " - dSet->GetDataFrame().GetColumnNames()"); |
| 45 | + printf("%s\n\n", " - dSet->GetTree()->GetEntries()"); |
| 46 | + if (dSet) delete dSet; |
| 47 | + dSet = new TRestDataSet(); |
| 48 | + dSet->Import(fileName); |
38 | 49 | } else { |
39 | 50 | printf("\n%s is not a valid TRestRun or TRestDataSet\n", fileName.c_str()); |
40 | 51 | } |
|
0 commit comments