51 G4int noIntegrationVariables,
54 fLastStepLength(-1.0), fAuxStepper(nullptr)
56 const G4int numberOfVariables = noIntegrationVariables;
74 const G4int numStateVars =
std::max(noIntegrationVariables, 8);
166 b71 = 29443841.0/614563906.0 ,
169 b74 = 77736538.0/692538347.0 ,
170 b75 = -28693883.0/1125000000.0 ,
171 b76 = 23124283.0/1800000000.0 ,
173 b81 = 16016141.0/946692911.0 ,
176 b84 = 61564180.0/158732637.0 ,
177 b85 = 22789713.0/633445777.0 ,
178 b86 = 545815736.0/2771057229.0 ,
179 b87 = -180193667.0/1043307555.0 ,
181 b91 = 39632708.0/573591083.0 ,
184 b94 = -433636366.0/683701615.0 ,
185 b95 = -421739975.0/2616292301.0 ,
186 b96 = 100302831.0/723423059.0 ,
187 b97 = 790204164.0/839813087.0 ,
188 b98 = 800635310.0/3783071287.0 ,
190 b101 = 246121993.0/1340847787.0 ,
193 b104 = -37695042795.0/15268766246.0 ,
194 b105 = -309121744.0/1061227803.0 ,
195 b106 = -12992083.0/490766935.0 ,
196 b107 = 6005943493.0/2108947869.0 ,
197 b108 = 393006217.0/1396673457.0 ,
198 b109 = 123872331.0/1001029789.0 ,
200 b111 = -1028468189.0/846180014.0 ,
203 b114 = 8478235783.0/508512852.0 ,
204 b115 = 1311729495.0/1432422823.0 ,
205 b116 = -10304129995.0/1701304382.0 ,
206 b117 = -48777925059.0/3047939560.0 ,
207 b118 = 15336726248.0/1032824649.0 ,
208 b119 = -45442868181.0/3398467696.0 ,
209 b1110 = 3065993473.0/597172653.0 ,
211 b121 = 185892177.0/718116043.0 ,
214 b124 = -3185094517.0/667107341.0 ,
215 b125 = -477755414.0/1098053517.0 ,
216 b126 = -703635378.0/230739211.0 ,
217 b127 = 5731566787.0/1027545527.0 ,
218 b128 = 5232866602.0/850066563.0 ,
219 b129 = -4093664535.0/808688257.0 ,
220 b1210 = 3962137247.0/1805957418.0 ,
221 b1211 = 65686358.0/487910083.0 ,
223 b131 = 403863854.0/491063109.0 ,
226 b134 = -5068492393.0/434740067.0 ,
227 b135 = -411421997.0/543043805.0 ,
228 b136 = 652783627.0/914296604.0 ,
229 b137 = 11173962825.0/925320556.0 ,
230 b138 = -13158990841.0/6184727034.0 ,
231 b139 = 3936647629.0/1978049680.0 ,
232 b1310 = -160528059.0/685178525.0 ,
233 b1311 = 248638103.0/1413531060.0 ,
236 c1 = 14005451.0/335480064.0 ,
241 c6 = -59238493.0/1068277825.0 ,
242 c7 = 181606767.0/758867731.0 ,
243 c8 = 561292985.0/797845732.0 ,
244 c9 = -1041891430.0/1371343529.0 ,
245 c10 = 760417239.0/1151165299.0 ,
246 c11 = 118820643.0/751138087.0 ,
247 c12 = - 528747749.0/2220607170.0 ,
250 c_1 = 13451932.0/455176623.0 ,
255 c_6 = -808719846.0/976000145.0 ,
256 c_7 = 1757004468.0/5645159321.0 ,
257 c_8 = 656045339.0/265891186.0 ,
258 c_9 = -3867574721.0/1518517206.0 ,
259 c_10 = 465885868.0/322736535.0 ,
260 c_11 = 53011238.0/667516719.0 ,
286 for(i=0;i<numberOfVariables;i++)
294 for(i=0;i<numberOfVariables;i++)
296 yTemp[i] =
yIn[i] + b21*Step*dydx[i] ;
300 for(i=0;i<numberOfVariables;i++)
302 yTemp[i] =
yIn[i] + Step*(b31*dydx[i] + b32*
ak2[i]) ;
306 for(i=0;i<numberOfVariables;i++)
308 yTemp[i] =
yIn[i] + Step*(b41*dydx[i] + b42*
ak2[i] + b43*
ak3[i]) ;
312 for(i=0;i<numberOfVariables;i++)
319 for(i=0;i<numberOfVariables;i++)
322 b64*
ak4[i] + b65*
ak5[i]) ;
326 for(i=0;i<numberOfVariables;i++)
333 for(i=0;i<numberOfVariables;i++)
341 for(i=0;i<numberOfVariables;i++)
345 b97*
ak7[i] + b98*
ak8[i] );
349 for(i=0;i<numberOfVariables;i++)
351 yTemp[i] =
yIn[i] + Step*(b101*dydx[i] + b102*
ak2[i] + b103*
ak3[i] +
352 b104*
ak4[i] + b105*
ak5[i] + b106*
ak6[i] +
353 b107*
ak7[i] + b108*
ak8[i] + b109*
ak9[i]);
357 for(i=0;i<numberOfVariables;i++)
359 yTemp[i] =
yIn[i] + Step*(b111*dydx[i] + b112*
ak2[i] + b113*
ak3[i] +
360 b114*
ak4[i] + b115*
ak5[i] + b116*
ak6[i] +
361 b117*
ak7[i] + b118*
ak8[i] + b119*
ak9[i] +
366 for(i=0;i<numberOfVariables;i++)
368 yTemp[i] =
yIn[i] + Step*(b121*dydx[i] + b122*
ak2[i] + b123*
ak3[i] +
369 b124*
ak4[i] + b125*
ak5[i] + b126*
ak6[i] +
370 b127*
ak7[i] + b128*
ak8[i] + b129*
ak9[i] +
375 for(i=0;i<numberOfVariables;i++)
377 yTemp[i] =
yIn[i] + Step*(b131*dydx[i] + b132*
ak2[i] + b133*
ak3[i] +
378 b134*
ak4[i] + b135*
ak5[i] + b136*
ak6[i] +
379 b137*
ak7[i] + b138*
ak8[i] + b139*
ak9[i] +
384 for(i=0;i<numberOfVariables;i++)
388 yOut[i] =
yIn[i] + Step*(c1*dydx[i] +
397 yErr[i] = Step*(dc1*dydx[i] +
440 if (initialPoint != finalPoint)
443 distChord = distLine;
447 distChord = (midPoint-initialPoint).mag();
T max(const T t1, const T t2)
brief Return the largest of the two arguments
CLHEP::Hep3Vector G4ThreeVector
static G4double Distline(const G4ThreeVector &OtherPnt, const G4ThreeVector &LinePntA, const G4ThreeVector &LinePntB)
G4DormandPrinceRK78(G4EquationOfMotion *EqRhs, G4int numberOfVariables=6, G4bool primary=true)
G4DormandPrinceRK78 * fAuxStepper
G4double DistChord() const
void Stepper(const G4double y[], const G4double dydx[], G4double h, G4double yout[], G4double yerr[])
void RightHandSide(const double y[], double dydx[]) const
G4double * fLastInitialVector
G4int GetNumberOfVariables() const
G4double * fLastFinalVector