BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnOfflineQaSteering.cxx
Go to the documentation of this file.
2
7
9
11{
12 TString gPathConfig = gSystem->Getenv("VMCWORKDIR");
13 TString gPathFull = gPathConfig + "/macro/steering/qaHisto.dat";
14
15 string line;
16 ifstream f(gPathFull.Data(), ios::in);
17
18 vector<Double_t> axisAttr;
19
20 while (!f.eof()) {
21 getline(f, line);
22
23 TString currString(line);
24
25 if (currString.Contains(histoName.Data())) {
26 TObjArray* arr = currString.Tokenize(" ");
27 for (Int_t iEle = 0; iEle < arr->GetEntriesFast(); iEle++) {
28 TString str = ((TObjString*)arr->UncheckedAt(iEle))->GetString();
29 if (str.Contains("nBins") || str.Contains("nBinsX") || str.Contains("nBinsY") || str.Contains("xLow")
30 || str.Contains("xUp") || str.Contains("yLow") || str.Contains("yUp"))
31 {
32 TString tmp = ((TObjString*)arr->UncheckedAt(iEle + 1))->GetString();
33 axisAttr.push_back(tmp.Atof());
34 }
35 }
36 break;
37 }
38 }
39 return axisAttr;
40}
41
43{
44 TString gPathConfig = gSystem->Getenv("VMCWORKDIR");
45 TString gPathFull = gPathConfig + "/macro/steering/" + fileName;
46
47 TString buff = "";
48 string line;
49 ifstream f(gPathFull.Data(), ios::in);
50
51 getline(f, line); // Line with comments
52 getline(f, line); // get number of canvases to be registered ...
53 f >> buff >> fNCanvases;
54
55 for (Int_t iCanvas = 0; iCanvas < fNCanvases; iCanvas++) {
56 TString setup, name;
57 Int_t run, col1d, col2d, rows1d, rows2d;
58 const Int_t nSetups = 3;
59
60 getline(f, line);
61 for (Int_t iSetup = 0; iSetup < nSetups; iSetup++) {
62 if (iSetup == 0) {
63 f >> name >> run >> setup >> rows1d >> col1d >> rows2d >> col2d;
64 fListCanvases.push_back(name);
65 } else
66 f >> run >> setup >> rows1d >> col1d >> rows2d >> col2d;
67 vector<TString> vec = {TString::Format("%d", run), TString::Format("%s", setup.Data()),
68 TString::Format("%s", name.Data()), TString::Format("%d", rows1d),
69 TString::Format("%d", col1d), TString::Format("%d", rows2d),
70 TString::Format("%d", col2d)};
71
72 fCanvasAttributes.push_back(vec);
73 }
74 }
75
76 // Get period, exp. setup, start and finish run id, set of detectors and triggers ...
77 for (Int_t iLine = 0; iLine < 3; iLine++) {
78 getline(f, line);
79 Int_t period, start, finish, Ndets, Ntrigs;
80 TString setup, detector, trigger;
81 f >> period >> setup >> start >> finish >> buff >> Ndets;
82 fBorderRuns[make_pair(period, setup)] = make_pair(start, finish);
83
84 vector<TString> detectors;
85
86 for (Int_t iDet = 0; iDet < Ndets; iDet++) {
87 f >> detector;
88 detectors.push_back(detector);
89 }
90 fDetectors[make_pair(period, setup)] = detectors;
91
92 vector<TString> triggers;
93 f >> buff >> Ntrigs;
94 for (Int_t iTrigger = 0; iTrigger < Ntrigs; iTrigger++) {
95 f >> trigger;
96 triggers.push_back(trigger);
97 }
98 fTriggers[make_pair(period, setup)] = triggers;
99 }
100
101 // Get releases to be published ...
102 getline(f, line);
103 f >> buff >> fNReleases;
104
105 getline(f, line);
106 for (Int_t iRelease = 0; iRelease < fNReleases; iRelease++) {
107 TString releaseName;
108 if (iRelease == 0)
109 f >> buff >> releaseName;
110 else
111 f >> releaseName;
112 fListReleases.push_back(releaseName);
113 }
114}
int Int_t
R__EXTERN TSystem * gSystem
map< pair< Int_t, TString >, vector< TString > > fDetectors
vector< TString > fListReleases
vector< Double_t > GetAxisAttributes(TString)
vector< vector< TString > > fCanvasAttributes
map< pair< Int_t, TString >, vector< TString > > fTriggers
map< pair< Int_t, TString >, pair< Int_t, Int_t > > fBorderRuns
void ParseSteerFile(TString f="qaOffline.dat")
vector< TString > fListCanvases
Int_t GetEntriesFast() const
TObject * UncheckedAt(Int_t i) const
Double_t Atof() const
const char * Data() const
TObjArray * Tokenize(const TString &delim) const
static TString Format(const char *fmt,...)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const