BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnOfflineQaSteering.h
Go to the documentation of this file.
1#include <BmnCSCStationSet.h>
2#include <BmnGemStripStationSet.h>
3#include <BmnSiliconStationSet.h>
4#include <TMath.h>
5#include <TNamed.h>
6#include <TObjArray.h>
7#include <TObjString.h>
8#include <TSystem.h>
9#include <TVector3.h>
10#include <fstream>
11#include <iostream>
12#include <sstream>
13#include <vector>
14
15#ifndef BMNOFFLINEQASTEERING_H
16#define BMNOFFLINEQASTEERING_H 1
17
18using namespace std;
19using namespace TMath;
20
21class BmnOfflineQaSteering : public TNamed
22{
23 public:
25 // BmnOfflineQaSteering(TString) {};
26
28
29 pair<Int_t, Int_t> GetCanvasSizes(Int_t run, TString setup, TString name, TString dim)
30 {
31 for (auto it : fCanvasAttributes) {
32 if (TString(it[0]).Atoi() == run && it[1] == setup && name.Contains(TString(it[2]).Data())) {
33 return (dim == "1d") ? make_pair(TString(it[3]).Atoi(), TString(it[4]).Atoi())
34 : (dim == "2d") ? make_pair(TString(it[5]).Atoi(), TString(it[6]).Atoi())
35 : make_pair(-1, -1);
36 }
37 }
38 return make_pair(-1, -1);
39 }
40
42
44
45 vector<TString> GetListOfReleases() { return fListReleases; }
46
47 vector<TString> GetListOfCanvases() { return fListCanvases; }
48
49 pair<Int_t, Int_t> GetBorderRuns(Int_t period, TString setup = "BM@N")
50 {
51 if (period == 6 && setup == "SRC")
52 return make_pair(-1, -1);
53 return fBorderRuns.find(make_pair(period, setup))->second;
54 }
55
56 vector<TString> GetDetectors(Int_t period, TString setup = "BM@N")
57 {
58 if (period == 6 && setup == "SRC") {
59 // Configuration does not exist !!!
60 vector<TString> tmp;
61 tmp.resize(0);
62 return tmp;
63 } else
64 return fDetectors.find(make_pair(period, setup))->second;
65 }
66
67 vector<TString> GetTriggers(Int_t period, TString setup = "BM@N")
68 {
69 if (period == 6 && setup == "SRC") {
70 // Configuration does not exist !!!
71 vector<TString> tmp;
72 tmp.resize(0);
73 return tmp;
74 } else
75 return fTriggers.find(make_pair(period, setup))->second;
76 }
77
78 pair<Int_t, TString> GetRunAndSetupByRunId(Int_t id)
79 {
80 const Int_t nPeriods = 2;
81 const Int_t nSetups = 2;
82
83 Int_t runPeriods[nPeriods] = {6, 7};
84 TString setups[nSetups] = {"BM@N", "SRC"};
85
86 for (Int_t iPeriod = 0; iPeriod < nPeriods; iPeriod++)
87 for (Int_t iSetup = 0; iSetup < nSetups; iSetup++)
88 if (id >= GetBorderRuns(runPeriods[iPeriod], setups[iSetup]).first
89 && id <= GetBorderRuns(runPeriods[iPeriod], setups[iSetup]).second)
90 return make_pair(runPeriods[iPeriod], setups[iSetup]);
91
92 return make_pair(-1, "");
93 }
94
96 {
97 // Possible det. types are: coordinate, time, calorimeter
98 if (type != "coordinate" && type != "time" && type != "calorimeter")
99 return -1;
100 Int_t detCounter = 0;
101 for (size_t iDet = 0; iDet < GetDetectors(period, setup).size(); iDet++) {
102 TString det = GetDetectors(period, setup)[iDet];
103
104 if (type == "coordinate") {
105 if (det.Contains("GEM") || det.Contains("SILICON") || det.Contains("CSC"))
106 detCounter++;
107 } else if (type == "time") {
108 if (det.Contains("TOF400") || det.Contains("TOF700") || det.Contains("MWPC") || det.Contains("DCH"))
109 detCounter++;
110 } else if (type == "calorimeter") {
111 if (det.Contains("ECAL") || det.Contains("ZDC"))
112 detCounter++;
113 }
114 }
115 return detCounter;
116 }
117
120 BmnSiliconStationSet*& silicon,
121 BmnCSCStationSet*& csc)
122 {
123 TString gPathConfig = gSystem->Getenv("VMCWORKDIR");
124
125 TString gPathGemConfig = gPathConfig + "/parameters/gem/XMLConfigs/";
126 TString gPathSilConfig = gPathConfig + "/parameters/silicon/XMLConfigs/";
127 TString gPathCscConfig = gPathConfig + "/parameters/csc/XMLConfigs/";
128
129 const Int_t nPeriods = 2;
130 const Int_t nSetups = 2;
131
132 Int_t runPeriods[nPeriods] = {6, 7};
133 TString setups[nSetups] = {"BM@N", "SRC"};
134
135 TString confGEM = "";
136 TString confSIL = "";
137 TString confCSC = "";
138
139 for (Int_t iPeriod = 0; iPeriod < nPeriods; iPeriod++)
140 for (Int_t iSetup = 0; iSetup < nSetups; iSetup++)
141 if (id >= GetBorderRuns(runPeriods[iPeriod], setups[iSetup]).first
142 && id <= GetBorderRuns(runPeriods[iPeriod], setups[iSetup]).second)
143 {
144
145 if (iPeriod == 0 && iSetup == 0) {
146 // RUN6, BM@N
147
148 confGEM = "GemRunSpring2017.xml";
149 confSIL = "SiliconRunSpring2017.xml";
150 } else if (iPeriod == 1 && iSetup == 0) {
151 // RUN7, BM@N
152
153 confGEM = "GemRunSpring2018.xml";
154 confSIL = "SiliconRunSpring2018.xml";
155 confCSC = "CSCRunSpring2018.xml";
156 } else if (iPeriod == 1 && iSetup == 1) {
157 // RUN7, SRC
158
159 confGEM = "GemRunSRCSpring2018.xml";
160 confSIL = "SiliconRunSRCSpring2018.xml";
161 confCSC = "CSCRunSRCSpring2018.xml";
162 }
163
164 if (!gem)
165 gem = new BmnGemStripStationSet(gPathGemConfig + confGEM);
166
167 if (!silicon)
168 silicon = new BmnSiliconStationSet(gPathSilConfig + confSIL);
169
170 if (!confCSC.IsNull() && !csc)
171 csc = new BmnCSCStationSet(gPathCscConfig + confCSC);
172 }
173 }
174
175 vector<Double_t> GetAxisAttributes(TString);
176
177 private:
178 void ParseSteerFile(TString f = "qaOffline.dat");
179
182
183 vector<TString> fListCanvases;
184 vector<TString> fListReleases;
185
186 vector<vector<TString>> fCanvasAttributes;
187
188 map<pair<Int_t, TString>, pair<Int_t, Int_t>> fBorderRuns; // (period, setup) --> (start, finish)
189 map<pair<Int_t, TString>, vector<TString>> fDetectors; // (period, setup) --> list of detectors
190 map<pair<Int_t, TString>, vector<TString>> fTriggers; // (period, setup) --> list of triggers
191
193};
194
195#endif
int Int_t
#define ClassDef(name, id)
R__EXTERN TSystem * gSystem
map< pair< Int_t, TString >, vector< TString > > fDetectors
void SetGeometriesByRunId(Int_t id, BmnGemStripStationSet *&gem, BmnSiliconStationSet *&silicon, BmnCSCStationSet *&csc)
vector< TString > fListReleases
pair< Int_t, Int_t > GetCanvasSizes(Int_t run, TString setup, TString name, TString dim)
Int_t GetNumberOfDets(Int_t period, TString setup, TString type)
vector< TString > GetListOfReleases()
vector< TString > GetDetectors(Int_t period, TString setup="BM@N")
vector< Double_t > GetAxisAttributes(TString)
virtual ~BmnOfflineQaSteering()
vector< vector< TString > > fCanvasAttributes
pair< Int_t, TString > GetRunAndSetupByRunId(Int_t id)
map< pair< Int_t, TString >, vector< TString > > fTriggers
vector< TString > GetTriggers(Int_t period, TString setup="BM@N")
map< pair< Int_t, TString >, pair< Int_t, Int_t > > fBorderRuns
void ParseSteerFile(TString f="qaOffline.dat")
pair< Int_t, Int_t > GetBorderRuns(Int_t period, TString setup="BM@N")
vector< TString > fListCanvases
vector< TString > GetListOfCanvases()
Bool_t IsNull() const
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
const UInt_t dim
Definition json.hpp:4446