53 G4double& tFrac)
const
59 auto x1 = (G4int)std::floor(xArrayCoords);
60 auto y1 = (G4int)std::floor(yArrayCoords);
61 auto z1 = (G4int)std::floor(zArrayCoords);
62 auto t1 = (G4int)std::floor(tArrayCoords);
63 xFrac = xArrayCoords - x1;
64 yFrac = yArrayCoords - y1;
65 zFrac = zArrayCoords - z1;
66 tFrac = tArrayCoords - t1;
68 std::array<G4int, 2> indexArrX = {x1, x1+1};
69 std::array<G4int, 2> indexArrY = {y1, y1+1};
70 std::array<G4int, 2> indexArrZ = {z1, z1+1};
71 std::array<G4int, 2> indexArrT = {t1, t1+1};
72 G4int indexOriginalX, indexOriginalY, indexOriginalZ, indexOriginalT;
73 G4int indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT;
74 for (G4int i = 0; i < 2; i++)
76 for (G4int j = 0; j < 2; j++)
78 for (G4int k = 0; k < 2; k++)
80 for (G4int l = 0; l < 2; l++)
82 indexOriginalX = indexArrX[i];
83 indexTransformedX = indexOriginalX;
84 indexOriginalY = indexArrY[j];
85 indexTransformedY = indexOriginalY;
86 indexOriginalZ = indexArrZ[k];
87 indexTransformedZ = indexOriginalZ;
88 indexOriginalT = indexArrT[l];
89 indexTransformedT = indexOriginalT;
90 indexOperator->
Apply(indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT);
91 BDSFieldValue v =
GetConst(indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT);
92 localData[i][j][k][l] = valueOperator->
Apply(v, indexOriginalX, indexOriginalY, indexOriginalZ, indexOriginalT);
107 G4double& tFrac)
const
109 G4double xArrayCoords, yArrayCoords, zArrayCoords, tArrayCoords;
111 auto x1 = (G4int)std::floor(xArrayCoords);
112 auto y1 = (G4int)std::floor(yArrayCoords);
113 auto z1 = (G4int)std::floor(zArrayCoords);
114 auto t1 = (G4int)std::floor(tArrayCoords);
115 xFrac = xArrayCoords - x1;
116 yFrac = yArrayCoords - y1;
117 zFrac = zArrayCoords - z1;
118 tFrac = tArrayCoords - t1;
120 std::array<G4int, 4> indexArrX = {x1-1, x1, x1+1, x1+2};
121 std::array<G4int, 4> indexArrY = {y1-1, y1, y1+1, y1+2};
122 std::array<G4int, 4> indexArrZ = {z1-1, z1, z1+1, z1+2};
123 std::array<G4int, 4> indexArrT = {t1-1, t1, t1+1, t1+2};
124 G4int indexOriginalX, indexOriginalY, indexOriginalZ, indexOriginalT;
125 G4int indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT;
126 for (G4int i = 0; i < 4; i++)
128 for (G4int j = 0; j < 4; j++)
130 for (G4int k = 0; k < 4; k++)
132 for (G4int l = 0; l < 4; l++)
134 indexOriginalX = indexArrX[i];
135 indexTransformedX = indexOriginalX;
136 indexOriginalY = indexArrY[j];
137 indexTransformedY = indexOriginalY;
138 indexOriginalZ = indexArrZ[k];
139 indexTransformedZ = indexOriginalZ;
140 indexOriginalT = indexArrT[l];
141 indexTransformedT = indexOriginalT;
142 indexOperator->
Apply(indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT);
143 BDSFieldValue v =
GetConst(indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT);
144 localData[i][j][k][l] = valueOperator->
Apply(v, indexOriginalX, indexOriginalY, indexOriginalZ, indexOriginalT);
160 G4int indexTransformedX = indexOriginalX;
161 G4int indexTransformedY = indexOriginalY;
162 G4int indexTransformedZ = indexOriginalZ;
163 G4int indexTransformedT = indexOriginalT;
164 indexOperator->
Apply(indexTransformedX, indexTransformedY, indexTransformedZ, indexTransformedT);
165 BDSFieldValue v =
GetConst(indexTransformedX, indexTransformedY, indexTransformedT, indexTransformedZ);
166 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.