66 double sliX = (edu).
x();
67 double sliY = (edu).
y();
68 double sliZ = (edu).
z();
74 double pathFraction = 0., pathValue = 0.;
75 double tanShiftAngleX = 0., tanShiftAngleY = 0., tanShiftAngleZ = 0.;
76 double xDriftDueToField = 0., yDriftDueToField = 0., zDriftDueToField = 0.;
78 std::cout <<
"=============================================================" 81 std::cout <<
"ChargeDrifterFP420: xytype= " << xytype << std::endl;
84 std::cout <<
"1currX = " << currX <<
" 1currY = " << currY <<
" 1currZ = " << currZ << std::endl;
101 pathValue = fabs(pathValue);
104 std::cout <<
"==================================" << std::endl;
106 std::cout <<
"fabs(sliX/(2*ldriftcurrX))+0.5= " << fabs(sliX / (2 *
ldriftcurrX)) + 0.5 << std::endl;
107 std::cout <<
"int(fabs(sliX/(2*ldriftcurrX))+0.5)*(2*ldriftcurrX)= " 109 std::cout <<
"pathValue= " << pathValue << std::endl;
110 std::cout <<
"pathFraction= " << pathFraction << std::endl;
111 std::cout <<
"==================================" << std::endl;
114 pathFraction = pathFraction > 0. ? pathFraction : 0.;
115 pathFraction = pathFraction < 1. ? pathFraction : 1.;
118 = pathValue * tanShiftAngleY;
120 = pathValue * tanShiftAngleZ;
122 currY = sliY + yDriftDueToField;
123 currZ = sliZ + zDriftDueToField;
128 else if (xytype == 1) {
134 pathValue = fabs(pathValue);
140 std::cout <<
"==================================" << std::endl;
142 std::cout <<
"fabs(sliY/(2*ldriftcurrY))+0.5= " << fabs(sliY / (2 *
ldriftcurrY)) + 0.5 << std::endl;
143 std::cout <<
"int(fabs(sliY/(2*ldriftcurrY))+0.5)*(2*ldriftcurrY)= " 145 std::cout <<
"pathValue= " << pathValue << std::endl;
146 std::cout <<
"pathFraction= " << pathFraction << std::endl;
147 std::cout <<
"==================================" << std::endl;
150 if (pathFraction < 0. || pathFraction > 1.)
151 std::cout <<
"ChargeDrifterFP420: ERROR:pathFraction=" << pathFraction << std::endl;
152 pathFraction = pathFraction > 0. ? pathFraction : 0.;
153 pathFraction = pathFraction < 1. ? pathFraction : 1.;
155 = pathValue * tanShiftAngleX;
158 = pathValue * tanShiftAngleZ;
160 currX = sliX + xDriftDueToField;
161 currZ = sliZ + zDriftDueToField;
183 double bbb = 1. - 2 *
depV * pathFraction / (
depV +
appV);
185 std::cout <<
"ChargeDrifterFP420:ERROR: check your Voltage for log(bbb) bbb=" << bbb << std::endl;
190 double sigma =
sqrt(2. *
constDe * driftTime * 100.);
196 std::cout <<
"ChargeDrifterFP420: drift: xytype=" << xytype <<
"pathFraction=" << pathFraction << std::endl;
197 std::cout <<
" constTe= " <<
constTe <<
" driftTime = " << driftTime <<
" startT0 = " << startT0 << std::endl;
202 std::cout <<
"ChargeDrifterFP420: drift: xytype=" << xytype <<
"pathValue=" << pathValue << std::endl;
203 std::cout <<
" tanShiftAngleX = " << tanShiftAngleX <<
" tanShiftAngleY = " << tanShiftAngleY
204 <<
" tanShiftAngleZ = " << tanShiftAngleZ << std::endl;
205 std::cout <<
"sliX = " << sliX <<
" sliY = " << sliY <<
" sliZ = " << sliZ << std::endl;
206 std::cout <<
"pathFraction = " << pathFraction <<
" driftTime = " << driftTime << std::endl;
207 std::cout <<
"sigma = " << sigma << std::endl;
208 std::cout <<
"xDriftDueToField = " << xDriftDueToField <<
" yDriftDueToField = " << yDriftDueToField
209 <<
" zDriftDueToField = " << zDriftDueToField << std::endl;
210 std::cout <<
"2currX = " << currX <<
" 2currY = " << currY <<
" 2currZ = " << currZ << std::endl;
211 std::cout <<
"ChargeDrifterFP420: drift; finally, rETURN AmplitudeSlimentFP420" << std::endl;
212 std::cout <<
"===================================================================" << std::endl;
CDrifterFP420::collection_type drift(const CDrifterFP420::ionization_type &, const G4ThreeVector &, const int &) override