3 #include "GridStepper.h"
8 //______________________________________________________________________
11 // Provide position coordinates for regular-grid placement of objects.
16 GridStepper::GridStepper(Int_t sm) :
18 nx(0), ny(0), nz(0), Nx(0), Ny(0), Nz(0),
19 Dx(0), Dy(0), Dz(0), Ox(0), Oy(0), Oz(0)
24 ls[0] = &Nx; ls[1] = &Ny; ls[2] = &Nz;
25 ns[0] = &nx; ns[1] = &ny; ns[2] = &nz;
28 ls[0] = &Ny; ls[1] = &Nx; ls[2] = &Nz;
29 ns[0] = &ny; ns[1] = &nx; ns[2] = &nz;
32 ls[0] = &Nx; ls[1] = &Nz; ls[2] = &Ny;
33 ns[0] = &nx; ns[1] = &nz; ns[2] = &ny;
43 void GridStepper::Reset()
48 void GridStepper::Subtract(GridStepper& s)
50 Ox = -(s.Ox + s.nx*s.Dx);
51 Oy = -(s.Oy + s.ny*s.Dy);
52 Oz = -(s.Oz + s.nz*s.Dz);
54 /**************************************************************************/
56 Bool_t GridStepper::Step()
59 if (*ns[0] >= *ls[0]) {
60 *ns[0] = 0; (*ns[1])++;
61 if (*ns[1] >= *ls[1]) {
62 *ns[1] = 0; (*ns[2])++;
63 if (*ns[2] >= *ls[2]) {
71 /**************************************************************************/
73 void GridStepper::GetPosition(Float_t* p)
75 p[0] = Ox + nx*Dx; p[1] = Oy + ny*Dy; p[2] = Oz + nz*Dz;
78 void GridStepper::SetTrans(ZTrans* mx)
80 mx->SetPos(Ox + nx*Dx, Oy + ny*Dy, Oz + nz*Dz);
83 void GridStepper::SetTransAdvance(ZTrans* mx)