6 #include <calobase/RawTowerDefs.h>
25 theta = atan(sqrt(xg*xg + yg*yg)/fabs(zg-
fVz));
59 const float X0 = -0.91;
63 float logE = log(0.1);
64 if (E > 0.1) logE = log(E);
66 float cosT = fabs(zV) / sqrt(xA * xA + yA * yA + zV * zV);
68 zC = (zA - DZ) + (D + X0 * logE) * cosT;
77 const float D = -15.25;
78 const float X0 = -2.275;
82 float logE = log(0.1);
83 if (E > 0.1) logE = log(E);
85 float cosT = fabs(zV) / sqrt(xA * xA + yA * yA + zV * zV);
87 zC = (zA - DZ) + (D + X0 * logE) * cosT;
130 float& xc,
float& yc)
138 float xZero, yZero, bx, by;
146 if (Energy < 0.01)
return;
153 float sinTy = xA / sqrt(xA * xA + zA * zA);
154 float sinTx = yA / sqrt(yA * yA + zA * zA);
155 float sin2Tx = sinTx * sinTx;
156 float sin2Ty = sinTy * sinTy;
159 xZero = -0.6 * sinTx - 1.500 * sin2Tx;
161 xZero = -0.6 * sinTx + 1.500 * sin2Tx;
164 yZero = -0.6 * sinTy - 1.5 * sin2Ty;
166 yZero = -0.6 * sinTy + 1.5 * sin2Ty;
170 t = 0.98 + 0.98 * sqrt(Energy);
172 bx = 0.20 - 0.009 * log(Energy) + t * sin2Tx;
173 by = 0.20 - 0.009 * log(Energy) + t * sin2Ty;
182 x0 = (ix0 - xZero) + bx * asinh(2. * (x0 - ix0) * sinh(0.5 / bx));
188 std::cout <<
"????? Something wrong in BEmcRecEEMC::CorrectPosition: x = "
189 << x <<
", dx = " << x0 - ix0 << std::endl;
197 y0 = (iy0 - yZero) + by * asinh(2. * (y0 - iy0) * sinh(0.5 / by));
203 std::cout <<
"????? Something wrong in BEmcRecEEMC::CorrectPosition: y = "
204 << y <<
", dy = " << y0 - iy0 << std::endl;