62 auto take_until = [&](std::string_view& sv) -> std::string_view {
63 const std::string_view delim =
"END ";
64 const auto pos = sv.find(delim);
65 if (pos == std::string_view::npos) {
66 throw std::runtime_error(
"RpcCalibDBEntry: malformed payload (missing 'END ')");
68 auto out = sv.substr(0, pos);
69 sv.remove_prefix(pos + delim.size());
73 const auto etaRec = take_until(payLoad);
74 const auto etaDet = take_until(payLoad);
75 const auto phiRec1 = take_until(payLoad);
76 const auto phiRec2 = take_until(payLoad);
77 const auto phiDet1 = take_until(payLoad);
78 const auto phiDet2 = take_until(payLoad);
80 initData(std::string(etaRec), std::string(etaDet),
81 std::string(phiRec1), std::string(phiRec2),
82 std::string(phiDet1), std::string(phiDet2));
87 std::string_view phiRec1, std::string_view phiRec2, std::string_view phiDet1,
88 std::string_view phiDet2){
89 NumberParser etaRecParser{etaRec};
90 NumberParser etaDetParser{etaDet};
91 NumberParser phiRec1Parser{phiRec1};
92 NumberParser phiRec2Parser{phiRec2};
93 NumberParser phiDet1Parser{phiDet1};
94 NumberParser phiDet2Parser{phiDet2};
104 const float eff = etaRecParser.next<
float>();
105 const float errEff = etaRecParser.next<
float>();
106 const float res1 = etaRecParser.next<
float>();
107 const float errRes1 = etaRecParser.next<
float>();
108 const float res2 = etaRecParser.next<
float>();
109 const float errRes2 = etaRecParser.next<
float>();
110 const float resX = etaRecParser.next<
float>();
111 const float errResX = etaRecParser.next<
float>();
112 const float time = etaRecParser.next<
float>();
113 const float errTime = etaRecParser.next<
float>();
115 const float noise = etaDetParser.next<
float>();
116 const float errNoise = etaDetParser.next<
float>();
117 const float noiseC = etaDetParser.next<
float>();
118 const float errNoiseC = etaDetParser.next<
float>();
119 const float cs = etaDetParser.next<
float>();
120 const float errCs = etaDetParser.next<
float>();
122 auto etaData = std::make_unique<RpcCalibData>();
125 etaData->setEff(eff);
126 etaData->setErrEff(errEff);
127 etaData->setRes1(res1);
128 etaData->setRes2(res2);
129 etaData->setResX(resX);
130 etaData->setErrRes1(errRes1);
131 etaData->setErrRes2(errRes2);
132 etaData->setErrResX(errResX);
133 etaData->setTime(time);
134 etaData->setErrTime(errTime);
135 etaData->setNoise(noise);
136 etaData->setNoiseC(noiseC);
137 etaData->setErrNoise(errNoise);
138 etaData->setErrNoiseC(errNoiseC);
140 etaData->setErrCs(errCs);
146 const float eff = phiRec1Parser.next<
float>();
147 const float res1 = phiRec1Parser.next<
float>();
148 const float res2 = phiRec1Parser.next<
float>();
149 const float resX = phiRec1Parser.next<
float>();
150 const float time = phiRec1Parser.next<
float>();
152 const float errEff = phiRec2Parser.next<
float>();
153 const float errRes1 = phiRec2Parser.next<
float>();
154 const float errRes2 = phiRec2Parser.next<
float>();
155 const float errResX = phiRec2Parser.next<
float>();
156 const float errTime = phiRec2Parser.next<
float>();
158 const float noise = phiDet1Parser.next<
float>();
159 const float errNoise = phiDet1Parser.next<
float>();
160 const float noiseC = phiDet1Parser.next<
float>();
161 const float errNoiseC = phiDet1Parser.next<
float>();
162 const float cs = phiDet1Parser.next<
float>();
163 const float errCs = phiDet1Parser.next<
float>();
165 auto phiData = std::make_unique<RpcCalibData>();
168 phiData->setEff(eff);
169 phiData->setErrEff(errEff);
170 phiData->setRes1(res1);
171 phiData->setRes2(res2);
172 phiData->setResX(resX);
173 phiData->setErrRes1(errRes1);
174 phiData->setErrRes2(errRes2);
175 phiData->setErrResX(errResX);
176 phiData->setTime(time);
177 phiData->setErrTime(errTime);
178 phiData->setNoise(noise);
179 phiData->setNoiseC(noiseC);
180 phiData->setErrNoise(errNoise);
181 phiData->setErrNoiseC(errNoiseC);
183 phiData->setErrCs(errCs);
204 void RpcCalibDBEntry::getColumns(std::string &recEta, std::string &detEta,std::string &recPhi1, std::string &recPhi2, std::string &detPhi1,std::string &detPhi2)
const{
207 std::ostringstream recEta_str,detEta_str,recPhi1_str,recPhi2_str,detPhi1_str,detPhi2_str;
209 float eff, errEff, res1, res2, resX, errRes1, errRes2, errResX, time, errTime, noise, errNoise, noiseC, errNoiseC, cs, errCs;
226 eff=theData->getEff();
227 errEff=theData->getErrEff();
228 res1=theData->getRes1();
229 res2=theData->getRes2();
230 resX=theData->getResX();
231 errRes1=theData->getErrRes1();
232 errRes2=theData->getErrRes2();
233 errResX=theData->getErrResX();
234 time=theData->getTime();
235 errTime=theData->getErrTime();
236 noise=theData->getNoise();
237 noiseC=theData->getNoiseC();
238 errNoise=theData->getErrNoise();
239 errNoiseC=theData->getErrNoiseC();
241 errCs=theData->getErrCs();
243 recEta_str<< eff<<
' '<<errEff<<
' '<<res1<<
' '<<errRes1<<
' '<<res2<<
' '<<errRes2<<
' '<<resX<<
' '<<errResX<<
' '<<time<<
' '<<errTime<<
' ';
244 detEta_str<<noise<<
' '<<errNoise<<
' '<<noiseC<<
' '<<errNoiseC<<
' '<<cs<<
' '<<errCs<<
' ';
253 eff=theData->getEff();
254 errEff=theData->getErrEff();
255 res1=theData->getRes1();
256 res2=theData->getRes2();
257 resX=theData->getResX();
258 errRes1=theData->getErrRes1();
259 errRes2=theData->getErrRes2();
260 errResX=theData->getErrResX();
261 time=theData->getTime();
262 errTime=theData->getErrTime();
263 noise=theData->getNoise();
264 noiseC=theData->getNoiseC();
265 errNoise=theData->getErrNoise();
266 errNoiseC=theData->getErrNoiseC();
268 errCs=theData->getErrCs();
270 recPhi1_str<<eff<<
' ' <<res1<<
' ' <<res2<<
' ' <<resX<<
' ' <<time<<
' ';
271 recPhi2_str<<errEff<<
' ' <<errRes1<<
' ' <<errRes2<<
' ' <<errResX<<
' ' <<errTime<<
' ';
272 detPhi1_str<<noise<<
' ' <<errNoise<<
' ' <<noiseC<<
' ' <<errNoiseC<<
' ' <<cs<<
' ' <<errCs<<
' ';
279 recEta=recEta_str.str();
280 detEta=detEta_str.str();
281 recPhi1=recPhi1_str.str();
282 recPhi2=recPhi2_str.str();
283 detPhi1=detPhi1_str.str();
284 detPhi2=detPhi2_str.str();
void initData(std::string_view etaRec, std::string_view etaDet, std::string_view phiRec1, std::string_view phiRec2, std::string_view phiDet1, std::string_view phiDet2)
std::vector< std::unique_ptr< RpcCalibData > > m_thePhiData
void getColumns(std::string &recEta, std::string &detEta, std::string &recPhi1, std::string &recPhi2, std::string &detPhi1, std::string &detPhi2) const
std::vector< std::unique_ptr< RpcCalibData > > m_theEtaData