Utility class to apply calibrations from /TDAQ/OLC/CALIBRATIONS folder.
More...
#include <LumiCalibrator.h>
|
| static float | getMuVis (float rawPerBX, float sigo, float siga) |
| static float | getMuVis2 (float rawPerBX, float sigo, float siga) |
Utility class to apply calibrations from /TDAQ/OLC/CALIBRATIONS folder.
- Author
- E.Torrence
Definition at line 20 of file LumiCalibrator.h.
◆ LumiCalibrator()
| LumiCalibrator::LumiCalibrator |
( |
| ) |
|
◆ calibrateLumi()
| bool LumiCalibrator::calibrateLumi |
( |
float | rawLumi, |
|
|
float & | calLumi ) const |
Definition at line 54 of file LumiCalibrator.cxx.
55{
56 calLumi = 0;
57 float calMu = 0.;
60 return true;
61}
bool calibrateMu(float rawLumi, float &calMu) const
◆ calibrateMu()
| bool LumiCalibrator::calibrateMu |
( |
float | rawLumi, |
|
|
float & | calMu ) const |
Definition at line 65 of file LumiCalibrator.cxx.
66{
67 calMu = 0.;
68
70
71
73
75
76
77 if (
m_parVec.size() < (8*nrange + 1))
return false;
78
79 for (
unsigned int i=0;
i<nrange;
i++) {
82 if (rawLumi < rmax and rawLumi >= rmin) {
89 break;
90 }
91 }
92 return true;
93 }
94
96
97
98 if (
m_parVec.size() != 1)
return false;
99
100
101 if ((1.-rawLumi) <= 0.) return false;
102
103
104 if (rawLumi < 0.) return false;
105
107 return true;
108 }
109
110 if (
m_fType ==
"HitLogarithm") {
111
112
113 if (
m_parVec.size() != 4)
return false;
114
115
116 if (
m_parVec[1] <= 0.)
return false;
117
118
119 if ((1.-rawLumi/
m_parVec[1]) <= 0.)
return false;
120
121
122 if (rawLumi < 0.) return false;
123
125 return true;
126 }
127
128 if (
m_fType ==
"LookupTable_EventAND_Lin") {
129
130
131 if (
m_parVec.size() != 6)
return false;
132
133 if (rawLumi < 0.) return false;
134
138
139 if (calMu < 0.) {
141 }
142
143 if (calMu < 0.) {
144 calMu = 0.;
145 return false;
146 }
147
148 return true;
149 }
150
151 if (
m_fType ==
"LookupTable_EventAND_Log") {
152
153
154 if (
m_parVec.size() != 8)
return false;
155
156 if (rawLumi < 0.) return false;
157
161
162 if (calMu < 0.) {
164 }
165
166 if (calMu < 0.) {
167 calMu = 0.;
168 return false;
169 }
170
171 return true;
172 }
173
174
175 return false;
176}
constexpr int pow(int base, int exp) noexcept
static float getMuVis(float rawPerBX, float sigo, float siga)
static float getMuVis2(float rawPerBX, float sigo, float siga)
◆ dump()
| MsgStream & LumiCalibrator::dump |
( |
MsgStream & | stream | ) |
const |
◆ getMuToLumi()
| float LumiCalibrator::getMuToLumi |
( |
| ) |
const |
|
inline |
◆ getMuVis()
| float LumiCalibrator::getMuVis |
( |
float | rawPerBX, |
|
|
float | sigo, |
|
|
float | siga ) |
|
staticprivate |
Definition at line 180 of file LumiCalibrator.cxx.
181{
182
183
184
186 float munew = 0.01;
187 float a = (sigo/siga + 1) / 2.;
189
190
191 for (
int i=0;
i<30;
i++) {
193 y = rawPerBX - 1. - std::exp(-b * mu) + 2. * std::exp(-
a * mu);
194 dy =
b * std::exp(-b * mu) - 2. *
a * std::exp(-
a * mu);
196
197
198
199
200
201 if (munew <= 0.) return -1.;
202 if (std::abs(munew-mu)/munew < 1.E-5) break;
203 }
204
205 return munew;
206}
◆ getMuVis2()
| float LumiCalibrator::getMuVis2 |
( |
float | rawPerBX, |
|
|
float | sigo, |
|
|
float | siga ) |
|
staticprivate |
Definition at line 214 of file LumiCalibrator.cxx.
215{
217 float muvu=100.;
218 float muvm=10.;
220 float rbxl=
rpbx(sr,muvl);
221 float rbxu=
rpbx(sr,muvu);
222 float rbxm=
rpbx(sr,muvm);
223
224
225 if (rawPerBX < rbxl || rawPerBX > rbxu) return -1.;
226
228 while (++i <= 50) {
229 if (rbxl<rawPerBX && rbxm>rawPerBX) {
230 rbxu=rbxm;
231 muvu=muvm;
232 muvm=0.5*(muvu+muvl);
233 } else {
234 rbxl=rbxm;
235 muvl=muvm;
236 muvm=0.5*(muvu+muvl);
237 }
238
239 rbxm =
rpbx(sr, muvm);
240
241
242 if ((muvu-muvl)/muvl < 1e-5) return muvm;
243 }
244
245
246 return -1.;
247}
float rpbx(float sr, float mu)
◆ setCalibration()
| bool LumiCalibrator::setCalibration |
( |
const coral::AttributeList & | attrList | ) |
|
Definition at line 26 of file LumiCalibrator.cxx.
27{
28 if (attrList["NumOfParameters"].isNull()) return false;
30
31 if (attrList["Function"].isNull()) return false;
32 m_fType = attrList[
"Function"].data<std::string>();
33
34 if (attrList["MuToLumi"].isNull()) return false;
35 m_muToLumi = attrList[
"MuToLumi"].data<
float>();
36
37 if (attrList["Parameters"].isNull()) return false;
38 const coral::Blob&
blob = attrList[
"Parameters"].data<coral::Blob>();
39
40
41
43
44
45 const float*
p =
static_cast<const float*
>(
blob.startingAddress());
46 for (
unsigned int i=0;
i<
m_nPar;
i++,
p++)
48
49 return true;
50}
◆ m_fType
| std::string LumiCalibrator::m_fType |
|
private |
◆ m_muToLumi
| float LumiCalibrator::m_muToLumi |
|
private |
◆ m_nPar
| unsigned int LumiCalibrator::m_nPar |
|
private |
◆ m_parVec
| std::vector<float> LumiCalibrator::m_parVec |
|
private |
The documentation for this class was generated from the following files: