20 using std::stringstream;
56 Int_t nCharges[2] = {0, 0};
57 for (Int_t side = 0; side < 2; side++) {
59 for (Int_t strip = 0; strip <
GetNofStrips(side); strip++) {
70 nSignals = 1000 * nCharges[0] + nCharges[1];
80 ss << GetName() <<
": Charge status: \n";
81 for (Int_t side = 0; side < 2; side++) {
82 for (Int_t strip = 0; strip <
GetNofStrips(side); strip++) {
84 ss <<
" " << (side ?
"Back " :
"Front ") <<
"strip " << strip
88 ss <<
" Total: front side " << (
fStripCharge[0]).GetSum()
98 for (Int_t side = 0; side < 2; side++) {
107 (1. - ctcoeff) * qCurrent + ctcoeff *
fStripCharge[side][1];
110 for (Int_t strip = 1; strip < nStrips - 1; strip++) {
115 + (1. - 2. * ctcoeff) * qCurrent;
122 ctcoeff * qLeft + (1. - ctcoeff) * qCurrent;
131 if (
x < -
fDx / 2.)
return kFALSE;
132 if (
x >
fDx / 2.)
return kFALSE;
133 if (
y < -
fDy / 2.)
return kFALSE;
134 if (
y >
fDy / 2.)
return kFALSE;
145 assert(chargeType == 0 || chargeType == 1);
149 assert(chargeType == 0 || chargeType == 1);
150 Double_t driftZ = 0.;
152 driftZ =
fDz / 2. - z;
153 else if (chargeType == 1)
154 driftZ =
fDz / 2. + z;
179 Double_t shift = muHall * bY * driftZ * 1.e-4;
195 Double_t chargeTotal =
201 Double_t xP = 0.5 * (point->
GetX1() + point->
GetX2());
202 Double_t yP = 0.5 * (point->
GetY1() + point->
GetY2());
203 Double_t zP = 0.5 * (point->
GetZ1() + point->
GetZ2());
205 xP, yP, zP, chargeTotal, point->
GetBy(), 0);
207 xP, yP, zP, chargeTotal, point->
GetBy(), 1);
214 TMath::Sqrt(point->
GetP() * point->
GetP() + mass * mass) - mass;
217 Double_t trajLx = point->
GetX2() - point->
GetX1();
218 Double_t trajLy = point->
GetY2() - point->
GetY1();
219 Double_t trajLz = point->
GetZ2() - point->
GetZ1();
220 Double_t trajLength =
221 TMath::Sqrt(trajLx * trajLx + trajLy * trajLy + trajLz * trajLz);
225 Double_t stepSizeTarget = 3.e-4;
226 Int_t nSteps = TMath::Nint(trajLength / stepSizeTarget);
227 if (nSteps == 0) nSteps = 1;
228 Double_t stepSize = trajLength / nSteps;
229 Double_t stepSizeX = trajLx / nSteps;
230 Double_t stepSizeY = trajLy / nSteps;
231 Double_t stepSizeZ = trajLz / nSteps;
234 Double_t chargePerStep = chargeTotal / nSteps;
243 Double_t chargeSum = 0.;
244 Double_t xStep = point->
GetX1() - 0.5 * stepSizeX;
245 Double_t yStep = point->
GetY1() - 0.5 * stepSizeY;
246 Double_t zStep = point->
GetZ1() - 0.5 * stepSizeZ;
247 for (Int_t iStep = 0; iStep < nSteps; iStep++) {
253 Double_t chargeInStep = chargePerStep;
258 chargeSum += chargeInStep;
262 xStep, yStep, zStep, chargeInStep, point->
GetBy(), 0);
264 xStep, yStep, zStep, chargeInStep, point->
GetBy(), 1);
274 for (Int_t side = 0; side < 2; side++) {
275 for (Int_t strip = 0; strip <
GetNofStrips(side); strip++)
287 Double_t time)
const {