10#include <TObjString.h>
12#include <BmnGemStripStationSet.h>
13#include <BmnSiliconStationSet.h>
14#include <BmnCSCStationSet.h>
16#ifndef BMNOFFLINEQASTEERING_H
17#define BMNOFFLINEQASTEERING_H 1
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()) :
38 return make_pair(-1, -1);
58 if (period == 6 &&
setup ==
"SRC")
59 return make_pair(-1, -1);
60 return fBorderRuns.find(make_pair(period,
setup))->second;
64 if (period == 6 &&
setup ==
"SRC") {
70 return fDetectors.find(make_pair(period,
setup))->second;
74 if (period == 6 &&
setup ==
"SRC") {
80 return fTriggers.find(make_pair(period,
setup))->second;
84 const Int_t nPeriods = 2;
85 const Int_t nSetups = 2;
87 Int_t runPeriods[nPeriods] = {6, 7};
88 TString setups[nSetups] = {
"BM@N",
"SRC"};
90 for (Int_t iPeriod = 0; iPeriod < nPeriods; iPeriod++)
91 for (Int_t iSetup = 0; iSetup < nSetups; iSetup++)
92 if (
id >=
GetBorderRuns(runPeriods[iPeriod], setups[iSetup]).first &&
id <=
GetBorderRuns(runPeriods[iPeriod], setups[iSetup]).second)
93 return make_pair(runPeriods[iPeriod], setups[iSetup]);
95 return make_pair(-1,
"");
100 if (type !=
"coordinate" && type !=
"time" && type !=
"calorimeter")
102 Int_t detCounter = 0;
106 if (type ==
"coordinate") {
107 if (det.Contains(
"GEM") || det.Contains(
"SILICON") || det.Contains(
"CSC"))
109 }
else if (type ==
"time") {
110 if (det.Contains(
"TOF400") || det.Contains(
"TOF700") || det.Contains(
"MWPC") || det.Contains(
"DCH"))
112 }
else if (type ==
"calorimeter") {
113 if (det.Contains(
"ECAL") || det.Contains(
"ZDC"))
121 TString gPathConfig = gSystem->Getenv(
"VMCWORKDIR");
123 TString gPathGemConfig = gPathConfig +
"/parameters/gem/XMLConfigs/";
124 TString gPathSilConfig = gPathConfig +
"/parameters/silicon/XMLConfigs/";
125 TString gPathCscConfig = gPathConfig +
"/parameters/csc/XMLConfigs/";
127 const Int_t nPeriods = 2;
128 const Int_t nSetups = 2;
130 Int_t runPeriods[nPeriods] = {6, 7};
131 TString setups[nSetups] = {
"BM@N",
"SRC"};
133 TString confGEM =
"";
134 TString confSIL =
"";
135 TString confCSC =
"";
137 for (Int_t iPeriod = 0; iPeriod < nPeriods; iPeriod++)
138 for (Int_t iSetup = 0; iSetup < nSetups; iSetup++)
139 if (
id >=
GetBorderRuns(runPeriods[iPeriod], setups[iSetup]).first &&
id <=
GetBorderRuns(runPeriods[iPeriod], setups[iSetup]).second) {
141 if (iPeriod == 0 && iSetup == 0) {
144 confGEM =
"GemRunSpring2017.xml";
145 confSIL =
"SiliconRunSpring2017.xml";
146 }
else if (iPeriod == 1 && iSetup == 0) {
149 confGEM =
"GemRunSpring2018.xml";
150 confSIL =
"SiliconRunSpring2018.xml";
151 confCSC =
"CSCRunSpring2018.xml";
152 }
else if (iPeriod == 1 && iSetup == 1) {
155 confGEM =
"GemRunSRCSpring2018.xml";
156 confSIL =
"SiliconRunSRCSpring2018.xml";
157 confCSC =
"CSCRunSRCSpring2018.xml";
166 if (!confCSC.IsNull() && !csc)
174 void ParseSteerFile(TString
f =
"qaOffline.dat");
179 vector <TString> fListCanvases;
180 vector <TString> fListReleases;
182 vector <vector <TString>> fCanvasAttributes;
184 map <pair <Int_t, TString>, pair <Int_t, Int_t>> fBorderRuns;
185 map <pair <Int_t, TString>, vector <TString>> fDetectors;
186 map <pair <Int_t, TString>, vector <TString>> fTriggers;
void SetGeometriesByRunId(Int_t id, BmnGemStripStationSet *&gem, BmnSiliconStationSet *&silicon, BmnCSCStationSet *&csc)
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()
pair< Int_t, TString > GetRunAndSetupByRunId(Int_t id)
vector< TString > GetTriggers(Int_t period, TString setup="BM@N")
pair< Int_t, Int_t > GetBorderRuns(Int_t period, TString setup="BM@N")
vector< TString > GetListOfCanvases()