Utility class to apply calibrations from /TDAQ/OLC/CALIBRATIONS folder.
More...
#include <OnlineLumiCalibrator.h>
|
| float | getMuVis (float rawPerBX, float sigo, float siga) const |
| float | getMuVis2 (float rawPerBX, float sigo, float siga) const |
Utility class to apply calibrations from /TDAQ/OLC/CALIBRATIONS folder.
- Author
- E.Torrence
Definition at line 20 of file OnlineLumiCalibrator.h.
◆ OnlineLumiCalibrator() [1/3]
| OnlineLumiCalibrator::OnlineLumiCalibrator |
( |
| ) |
|
◆ OnlineLumiCalibrator() [2/3]
◆ OnlineLumiCalibrator() [3/3]
◆ calibrateLumi() [1/2]
| bool OnlineLumiCalibrator::calibrateLumi |
( |
const std::vector< float > & | rawLumi, |
|
|
std::vector< float > & | calLumi ) const |
Definition at line 87 of file OnlineLumiCalibrator.cxx.
88{
89 calLumi.clear();
91 float calValue;
92 for (float val : rawLumi) {
93 calValue = 0;
96 calLumi.push_back(0.);
97 } else {
98 calLumi.push_back(calValue);
99 }
100 }
102}
bool calibrateLumi(float rawLumi, float &calLumi) const
◆ calibrateLumi() [2/2]
| bool OnlineLumiCalibrator::calibrateLumi |
( |
float | rawLumi, |
|
|
float & | calLumi ) const |
Definition at line 125 of file OnlineLumiCalibrator.cxx.
126{
127 calLumi = 0;
128 float calMu = 0.;
131 return true;
132}
bool calibrateMu(float rawLumi, float &calMu) const
◆ calibrateMu() [1/2]
| bool OnlineLumiCalibrator::calibrateMu |
( |
const std::vector< float > & | rawLumi, |
|
|
std::vector< float > & | calMu ) const |
Definition at line 106 of file OnlineLumiCalibrator.cxx.
107{
108 calMu.clear();
110 float calValue;
111 for (float val : rawLumi) {
112 calValue = 0;
115 calMu.push_back(0.);
116 } else {
117 calMu.push_back(calValue);
118 }
119 }
121}
◆ calibrateMu() [2/2]
| bool OnlineLumiCalibrator::calibrateMu |
( |
float | rawLumi, |
|
|
float & | calMu ) const |
Definition at line 136 of file OnlineLumiCalibrator.cxx.
137{
138 calMu = 0.;
139
141
142
143 if (
m_parVec.size() < 1)
return false;
144
146
147
148 if (
m_parVec.size() < (8*nrange + 1))
return false;
149
150 for (
unsigned int i=0;
i<nrange;
i++) {
153 if (rawLumi < rmax and rawLumi >= rmin) {
160 break;
161 }
162 }
163 return true;
164 }
165
167
168
169 if (
m_parVec.size() != 1)
return false;
170
171
172 if ((1.-rawLumi) <= 0.) return false;
173
174
175 if (rawLumi < 0.) return false;
176
178 return true;
179 }
180
181 if (
m_fType ==
"HitLogarithm") {
182
183
184 if (
m_parVec.size() != 4)
return false;
185
186
187 if (
m_parVec[1] <= 0.)
return false;
188
189
190 if ((1.-rawLumi/
m_parVec[1]) <= 0.)
return false;
191
192
193 if (rawLumi < 0.) return false;
194
196 return true;
197 }
198
199 if (
m_fType ==
"LookupTable_EventAND_Lin") {
200
201
202 if (
m_parVec.size() != 6)
return false;
203
204 if (rawLumi < 0.) return false;
205
209
210 if (calMu < 0.) {
212 }
213
214 if (calMu < 0.) {
215 calMu = 0.;
216 return false;
217 }
218
219 return true;
220 }
221
222 if (
m_fType ==
"LookupTable_EventAND_Log") {
223
224
225 if (
m_parVec.size() != 8)
return false;
226
227 if (rawLumi < 0.) return false;
228
232
233 if (calMu < 0.) {
235 }
236
237 if (calMu < 0.) {
238 calMu = 0.;
239 return false;
240 }
241
242 return true;
243 }
244
245
246 return false;
247}
constexpr int pow(int base, int exp) noexcept
float getMuVis2(float rawPerBX, float sigo, float siga) const
float getMuVis(float rawPerBX, float sigo, float siga) const
◆ dump()
| MsgStream & OnlineLumiCalibrator::dump |
( |
MsgStream & | stream | ) |
const |
◆ getMuToLumi()
| float OnlineLumiCalibrator::getMuToLumi |
( |
| ) |
const |
◆ getMuVis()
| float OnlineLumiCalibrator::getMuVis |
( |
float | rawPerBX, |
|
|
float | sigo, |
|
|
float | siga ) const |
|
private |
Definition at line 251 of file OnlineLumiCalibrator.cxx.
252{
253
254
255
257 float munew = 0.01;
258 float a = (sigo/siga + 1) / 2.;
260
261
262 for (
int i=0;
i<30;
i++) {
264 y = rawPerBX - 1. -
exp(-b * mu) + 2. *
exp(-
a * mu);
267
268
269
270
271
272 if (munew <= 0.) return -1.;
273 if (fabs(munew-mu)/munew < 1.E-5) break;
274 }
275
276 return munew;
277}
◆ getMuVis2()
| float OnlineLumiCalibrator::getMuVis2 |
( |
float | rawPerBX, |
|
|
float | sigo, |
|
|
float | siga ) const |
|
private |
Definition at line 285 of file OnlineLumiCalibrator.cxx.
286{
288 float muvu=100.;
289 float muvm=10.;
291 float rbxl=
rpbx(sr,muvl);
292 float rbxu=
rpbx(sr,muvu);
293 float rbxm=
rpbx(sr,muvm);
294
295
296 if (rawPerBX < rbxl || rawPerBX > rbxu) return -1.;
297
299 while (++i <= 50) {
300 if (rbxl<rawPerBX && rbxm>rawPerBX) {
301 rbxu=rbxm;
302 muvu=muvm;
303 muvm=0.5*(muvu+muvl);
304 } else {
305 rbxl=rbxm;
306 muvl=muvm;
307 muvm=0.5*(muvu+muvl);
308 }
309
310 rbxm =
rpbx(sr, muvm);
311
312
313 if ((muvu-muvl)/muvl < 1e-5) return muvm;
314 }
315
316
317 return -1.;
318}
float rpbx(float sr, float mu)
◆ operator=() [1/2]
◆ operator=() [2/2]
◆ setCalibration()
| bool OnlineLumiCalibrator::setCalibration |
( |
const coral::AttributeList & | attrList | ) |
|
Definition at line 53 of file OnlineLumiCalibrator.cxx.
54{
55 if (attrList["NumOfParameters"].isNull()) return false;
57
58 if (attrList["Function"].isNull()) return false;
59 m_fType = attrList[
"Function"].data<std::string>();
60
61 if (attrList["MuToLumi"].isNull()) return false;
62 m_muToLumi = attrList[
"MuToLumi"].data<
float>();
63
64 if (attrList["Parameters"].isNull()) return false;
65 const coral::Blob&
blob = attrList[
"Parameters"].data<coral::Blob>();
66
67
68
70
71
72 const float*
p =
static_cast<const float*
>(
blob.startingAddress());
73 for (
unsigned int i=0;
i<
m_nPar;
i++,
p++)
75
76 return true;
77}
◆ m_fType
| std::string OnlineLumiCalibrator::m_fType |
|
private |
◆ m_muToLumi
| float OnlineLumiCalibrator::m_muToLumi |
|
private |
◆ m_nPar
| unsigned int OnlineLumiCalibrator::m_nPar |
|
private |
◆ m_parVec
| std::vector<float> OnlineLumiCalibrator::m_parVec |
|
private |
The documentation for this class was generated from the following files: