52 G4double& tFrac)
const
58 auto x1 = (G4int)std::floor(xArrayCoords);
59 auto y1 = (G4int)std::floor(yArrayCoords);
60 auto z1 = (G4int)std::floor(zArrayCoords);
61 auto t1 = (G4int)std::floor(tArrayCoords);
62 xFrac = xArrayCoords - x1;
63 yFrac = yArrayCoords - y1;
64 zFrac = zArrayCoords - z1;
65 tFrac = tArrayCoords - t1;
67 std::array<G4int, 2> indexArrX = {x1, x1+1};
68 std::array<G4int, 2> indexArrY = {y1, y1+1};
69 std::array<G4int, 2> indexArrZ = {z1, z1+1};
70 std::array<G4int, 2> indexArrT = {t1, t1+1};
71 G4int indexOriginalX, indexOriginalY, indexOriginalZ, indexOriginalT;
72 G4int indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT;
73 for (G4int i = 0; i < 2; i++)
75 for (G4int j = 0; j < 2; j++)
77 for (G4int k = 0; k < 2; k++)
79 for (G4int l = 0; l < 2; l++)
81 indexOriginalX = indexArrX[i];
82 indexTransformedX = indexOriginalX;
83 indexOriginalY = indexArrY[j];
84 indexTransformedY = indexOriginalY;
85 indexOriginalZ = indexArrZ[k];
86 indexTransformedZ = indexOriginalZ;
87 indexOriginalT = indexArrT[l];
88 indexTransformedT = indexOriginalT;
89 indexOperator->
Apply(indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT);
90 BDSFieldValue v =
GetConst(indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT);
91 localData[i][j][k][l] = valueOperator->
Apply(v, indexOriginalX, indexOriginalY, indexOriginalZ, indexOriginalT);
106 G4double& tFrac)
const
108 G4double xArrayCoords, yArrayCoords, zArrayCoords, tArrayCoords;
110 auto x1 = (G4int)std::floor(xArrayCoords);
111 auto y1 = (G4int)std::floor(yArrayCoords);
112 auto z1 = (G4int)std::floor(zArrayCoords);
113 auto t1 = (G4int)std::floor(tArrayCoords);
114 xFrac = xArrayCoords - x1;
115 yFrac = yArrayCoords - y1;
116 zFrac = zArrayCoords - z1;
117 tFrac = tArrayCoords - t1;
119 std::array<G4int, 4> indexArrX = {x1-1, x1, x1+1, x1+2};
120 std::array<G4int, 4> indexArrY = {y1-1, y1, y1+1, y1+2};
121 std::array<G4int, 4> indexArrZ = {z1-1, z1, z1+1, z1+2};
122 std::array<G4int, 4> indexArrT = {t1-1, t1, t1+1, t1+2};
123 G4int indexOriginalX, indexOriginalY, indexOriginalZ, indexOriginalT;
124 G4int indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT;
125 for (G4int i = 0; i < 4; i++)
127 for (G4int j = 0; j < 4; j++)
129 for (G4int k = 0; k < 4; k++)
131 for (G4int l = 0; l < 4; l++)
133 indexOriginalX = indexArrX[i];
134 indexTransformedX = indexOriginalX;
135 indexOriginalY = indexArrY[j];
136 indexTransformedY = indexOriginalY;
137 indexOriginalZ = indexArrZ[k];
138 indexTransformedZ = indexOriginalZ;
139 indexOriginalT = indexArrT[l];
140 indexTransformedT = indexOriginalT;
141 indexOperator->
Apply(indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT);
142 BDSFieldValue v =
GetConst(indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT);
143 localData[i][j][k][l] = valueOperator->
Apply(v, indexOriginalX, indexOriginalY, indexOriginalZ, indexOriginalT);
159 G4int indexTransformedX = indexOriginalX;
160 G4int indexTransformedY = indexOriginalY;
161 G4int indexTransformedZ = indexOriginalZ;
162 G4int indexTransformedT = indexOriginalT;
163 indexOperator->
Apply(indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT);
164 BDSFieldValue v =
GetConst(indexTransformedX, indexTransformedY, indexTransformedT, indexTransformedZ);
165 v = valueOperator->
Apply(v, indexOriginalX, indexOriginalY, indexOriginalZ, indexOriginalT);
void ArrayCoordsFromXYZT(G4double &x, G4double &xArr, G4double &y, G4double &yArr, G4double &z, G4double &zArr, G4double &t, G4double &tArr) const
Utility version to forward to individual function.