ROOT logo
// $Id: SGridStepper.h 2088 2008-11-23 20:26:46Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

#ifndef GledCore_SGridStepper_H
#define GledCore_SGridStepper_H

#include <TObject.h>
class ZNode;

class SGridStepper : public TObject
{
public:
  enum StepMode_e { SM_XYZ, SM_YXZ, SM_XZY };

protected:
  Int_t *ls[3], *ns[3];

  void _init_internals(StepMode_e mode);

public:
  StepMode_e Mode;

  Int_t   nx, ny, nz;
  Int_t   Nx, Ny, Nz;
  Float_t Dx, Dy, Dz;
  Float_t Ox, Oy, Oz;

  SGridStepper(Int_t sm=SM_XYZ);
  SGridStepper(const SGridStepper& s, Bool_t as_parent=false);
  virtual ~SGridStepper() {}

  void Reset();
  void Subtract(const SGridStepper& s);
  void SetNs(Int_t nx, Int_t ny, Int_t nz=1)
  { Nx = nx; Ny = ny; Nz = nz; }
  void SetDs(Float_t dx, Float_t dy, Float_t dz=0)
  { Dx = dx; Dy = dy; Dz = dz; }
  void SetOs(Float_t ox, Float_t oy, Float_t oz=0)
  { Ox = ox; Oy = oy; Oz = oz; }

  bool Step();

  void GetPosition(Float_t* p);
  void SetNode(ZNode* node);
  void SetNodeAdvance(ZNode* node);

  ClassDef(SGridStepper, 1); // Provides iteration over node positions of a rectangular grid.
}; // endclass SGridStepper

#endif
 SGridStepper.h:1
 SGridStepper.h:2
 SGridStepper.h:3
 SGridStepper.h:4
 SGridStepper.h:5
 SGridStepper.h:6
 SGridStepper.h:7
 SGridStepper.h:8
 SGridStepper.h:9
 SGridStepper.h:10
 SGridStepper.h:11
 SGridStepper.h:12
 SGridStepper.h:13
 SGridStepper.h:14
 SGridStepper.h:15
 SGridStepper.h:16
 SGridStepper.h:17
 SGridStepper.h:18
 SGridStepper.h:19
 SGridStepper.h:20
 SGridStepper.h:21
 SGridStepper.h:22
 SGridStepper.h:23
 SGridStepper.h:24
 SGridStepper.h:25
 SGridStepper.h:26
 SGridStepper.h:27
 SGridStepper.h:28
 SGridStepper.h:29
 SGridStepper.h:30
 SGridStepper.h:31
 SGridStepper.h:32
 SGridStepper.h:33
 SGridStepper.h:34
 SGridStepper.h:35
 SGridStepper.h:36
 SGridStepper.h:37
 SGridStepper.h:38
 SGridStepper.h:39
 SGridStepper.h:40
 SGridStepper.h:41
 SGridStepper.h:42
 SGridStepper.h:43
 SGridStepper.h:44
 SGridStepper.h:45
 SGridStepper.h:46
 SGridStepper.h:47
 SGridStepper.h:48
 SGridStepper.h:49
 SGridStepper.h:50
 SGridStepper.h:51
 SGridStepper.h:52
 SGridStepper.h:53