Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/root/TEveGridStepper.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // @(#)root/eve:$Id$
0002 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
0003 
0004 /*************************************************************************
0005  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
0006  * All rights reserved.                                                  *
0007  *                                                                       *
0008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
0010  *************************************************************************/
0011 
0012 #ifndef ROOT_TEveGridStepper
0013 #define ROOT_TEveGridStepper
0014 
0015 #include "TEveUtil.h"
0016 
0017 #include "TObject.h"
0018 
0019 class TEveTrans;
0020 
0021 class TEveGridStepper : public TObject
0022 {
0023    friend class TEveGridStepperSubEditor;
0024 
0025 private:
0026    Int_t *fLimitArr[3], *fValueArr[3]; //! Internal traversal variables.
0027 
0028    TEveGridStepper(const TEveGridStepper&);            // Not implemented
0029    TEveGridStepper& operator=(const TEveGridStepper&); // Not implemented
0030 
0031 public:
0032    enum EStepMode_e { kSM_XYZ, kSM_YXZ, kSM_XZY };
0033 
0034 protected:
0035    EStepMode_e fMode;       // Stepping mode, order of filling.
0036 
0037    Int_t   fCx, fCy, fCz;   // Current positions during filling / traversal.
0038    Int_t   fNx, fNy, fNz;   // Number of slots in each direction.
0039    Float_t fDx, fDy, fDz;   // Step size in each direction.
0040    Float_t fOx, fOy, fOz;   // Initial offset for each direction.
0041 
0042 public:
0043    TEveGridStepper(Int_t sm=kSM_XYZ);
0044    ~TEveGridStepper() override {}
0045 
0046    void Reset();
0047    void Subtract(TEveGridStepper& s);
0048    void SetNs(Int_t nx, Int_t ny, Int_t nz=1)
0049    { fNx = nx; fNy = ny; fNz = nz; }
0050    void SetDs(Float_t dx, Float_t dy, Float_t dz=0)
0051    { fDx = dx; fDy = dy; fDz = dz; }
0052    void SetOs(Float_t ox, Float_t oy, Float_t oz=0)
0053    { fOx = ox; fOy = oy; fOz = oz; }
0054 
0055    Bool_t Step();
0056 
0057    void GetPosition(Float_t* p);
0058 
0059    void SetTrans(TEveTrans* mx);
0060    void SetTransAdvance(TEveTrans* mx);
0061 
0062    Int_t   GetCx() const { return fCx; }
0063    Int_t   GetCy() const { return fCy; }
0064    Int_t   GetCz() const { return fCz; }
0065    Int_t   GetNx() const { return fNx; }
0066    Int_t   GetNy() const { return fNy; }
0067    Int_t   GetNz() const { return fNz; }
0068    Float_t GetDx() const { return fDx; }
0069    Float_t GetDy() const { return fDy; }
0070    Float_t GetDz() const { return fDz; }
0071    Float_t GetOx() const { return fOx; }
0072    Float_t GetOy() const { return fOy; }
0073    Float_t GetOz() const { return fOz; }
0074 
0075    ClassDefOverride(TEveGridStepper, 1); // Provide discrete position coordinates for placement of objects on regular grids.
0076 }; // end class TEveGridStepper
0077 
0078 #endif