164{
165
166
167
168
172
173 G4double diff1,diff2,delta,maxDiff,newMin,newMax;
175
177 xMin=xoffset-fRmax;
178 xMax=xoffset+fRmax;
179
181 {
184 {
185 return false;
186 }
187 else
188 {
190 {
192 }
194 {
196 }
197 }
198 }
200 yMin=yoffset-fRmax;
201 yMax=yoffset+fRmax;
202
204 {
207 {
208 return false;
209 }
210 else
211 {
213 {
215 }
217 {
219 }
220 }
221 }
223 zMin=zoffset-fRmax;
224 zMax=zoffset+fRmax;
225
227 {
230 {
231 return false;
232 }
233 else
234 {
236 {
238 }
240 {
242 }
243 }
244 }
245
246
247
248 switch (pAxis)
249 {
251 yoff1=yoffset-yMin;
252 yoff2=yMax-yoffset;
253
254 if ( yoff1 >= 0 && yoff2 >= 0 )
255 {
256
257
258 pMin=xMin;
259 pMax=xMax;
260 }
261 else
262 {
263
264
265
266 delta=fRmax*fRmax-yoff1*yoff1;
267 diff1=(delta>0.) ? std::sqrt(delta) : 0.;
268 delta=fRmax*fRmax-yoff2*yoff2;
269 diff2=(delta>0.) ? std::sqrt(delta) : 0.;
270 maxDiff=(diff1>diff2) ? diff1:diff2;
271 newMin=xoffset-maxDiff;
272 newMax=xoffset+maxDiff;
273 pMin=(newMin<xMin) ? xMin : newMin;
274 pMax=(newMax>xMax) ? xMax : newMax;
275 }
276 break;
278 xoff1=xoffset-xMin;
279 xoff2=xMax-xoffset;
280 if (xoff1>=0&&xoff2>=0)
281 {
282
283
284 pMin=yMin;
285 pMax=yMax;
286 }
287 else
288 {
289
290
291
292 delta=fRmax*fRmax-xoff1*xoff1;
293 diff1=(delta>0.) ? std::sqrt(delta) : 0.;
294 delta=fRmax*fRmax-xoff2*xoff2;
295 diff2=(delta>0.) ? std::sqrt(delta) : 0.;
296 maxDiff=(diff1>diff2) ? diff1:diff2;
297 newMin=yoffset-maxDiff;
298 newMax=yoffset+maxDiff;
299 pMin=(newMin<yMin) ? yMin : newMin;
300 pMax=(newMax>yMax) ? yMax : newMax;
301 }
302 break;
304 pMin=zMin;
305 pMax=zMax;
306 break;
307 default:
308 break;
309 }
310 pMin -= fRmaxTolerance;
311 pMax += fRmaxTolerance;
312
313 return true;
314
315}
G4bool IsYLimited() const
G4double GetMinZExtent() const
G4bool IsXLimited() const
G4double GetMaxYExtent() const
G4double GetMaxZExtent() const
G4double GetMinYExtent() const
G4double GetMinXExtent() const
G4bool IsZLimited() const
G4double GetMaxXExtent() const