30 theta = atan(sqrt(xg*xg + yg*yg)/fabs(zg-fVz));
62 float logE = log(0.1);
63 if (E > 0.1) logE = log(E);
65 float cosT = fabs(zV) / sqrt(xA * xA + yA * yA + zV * zV);
67 zC = (zA - DZ) + (D + X0 * logE) * cosT;
106 const float par1 = 0.938;
107 const float par2 = 0.50;
108 const float par3 = 0.067;
111 if (Ecore < 0.01)
return;
114 Tower2Global(Ecore / 0.91, x, y, xA, yA, zA);
115 float tanT = sqrt(xA * xA + yA * yA) / fabs(zA - fVz);
116 corr = par1 * (1 - tanT * tanT * tanT * (par2 + par3 * log(Ecore)));
125 float& xc,
float& yc)
133 float xZero, yZero, bx, by;
141 if (Energy < 0.01)
return;
144 Tower2Global(Energy, x, y, xA, yA, zA);
148 float sinTy = xA / sqrt(xA * xA + zA * zA);
149 float sinTx = yA / sqrt(yA * yA + zA * zA);
150 float sin2Tx = sinTx * sinTx;
151 float sin2Ty = sinTy * sinTy;
154 xZero = -0.417 * sinTx - 1.500 * sin2Tx;
156 xZero = -0.417 * sinTx + 1.500 * sin2Tx;
159 yZero = -0.417 * sinTy - 1.500 * sin2Ty;
161 yZero = -0.417 * sinTy + 1.500 * sin2Ty;
163 t = 0.98 + 0.98 * sqrt(Energy);
165 bx = 0.17 - 0.009 * log(Energy) + t * sin2Tx;
166 by = 0.17 - 0.009 * log(Energy) + t * sin2Ty;
176 x0 = (ix0 - xZero) + bx * asinh(2. * (x0 - ix0) * sinh(0.5 / bx));
182 cout <<
"????? Something wrong in BEmcRecFEMC::CorrectPosition: x = "
183 << x <<
", dx = " << x0 - ix0 << endl;
191 y0 = (iy0 - yZero) + by * asinh(2. * (y0 - iy0) * sinh(0.5 / by));
197 cout <<
"????? Something wrong in BEmcRecFEMC::CorrectPosition: y = "
198 << y <<
", dy = " << y0 - iy0 << endl;