Logo ROOT   master
Reference Guide
TEveGridStepper.cxx
Go to the documentation of this file.
1 // @(#)root/eve:$Id$
2 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #include "TEveGridStepper.h"
13 #include "TEveTrans.h"
14 
15 /** \class TEveGridStepper
16 \ingroup TEve
17 Provide discrete position coordinates for placement of objects on
18 regular grids.
19 */
20 
22 
23 ////////////////////////////////////////////////////////////////////////////////
24 /// Constructor.
25 
27  fMode(EStepMode_e(sm)),
28  fCx(0), fCy(0), fCz(0), fNx(0), fNy(0), fNz(0),
29  fDx(0), fDy(0), fDz(0), fOx(0), fOy(0), fOz(0)
30 {
31  switch(fMode) {
32  default:
33  case kSM_XYZ:
34  fLimitArr[0] = &fNx; fLimitArr[1] = &fNy; fLimitArr[2] = &fNz;
35  fValueArr[0] = &fCx; fValueArr[1] = &fCy; fValueArr[2] = &fCz;
36  break;
37  case kSM_YXZ:
38  fLimitArr[0] = &fNy; fLimitArr[1] = &fNx; fLimitArr[2] = &fNz;
39  fValueArr[0] = &fCy; fValueArr[1] = &fCx; fValueArr[2] = &fCz;
40  break;
41  case kSM_XZY:
42  fLimitArr[0] = &fNx; fLimitArr[1] = &fNz; fLimitArr[2] = &fNy;
43  fValueArr[0] = &fCx; fValueArr[1] = &fCz; fValueArr[2] = &fCy;
44  break;
45  }
46 
47  fCx = fCy = fCz = 0;
48  fNx = fNy = fNz = 16;
49  fDx = fDy = fDz = 1;
50  fOx = fOy = fOz = 0;
51 }
52 
53 ////////////////////////////////////////////////////////////////////////////////
54 /// Reset position to origin.
55 
57 {
58  fCx = fCy = fCz = 0;
59 }
60 
61 ////////////////////////////////////////////////////////////////////////////////
62 /// Subtract current position of 's' from origin of this.
63 
65 {
66  fOx = -(s.fOx + s.fCx*s.fDx);
67  fOy = -(s.fOy + s.fCy*s.fDy);
68  fOz = -(s.fOz + s.fCz*s.fDz);
69 }
70 
71 ////////////////////////////////////////////////////////////////////////////////
72 /// Move to the next grid position.
73 
75 {
76  (*fValueArr[0])++;
77  if (*fValueArr[0] >= *fLimitArr[0]) {
78  *fValueArr[0] = 0; (*fValueArr[1])++;
79  if (*fValueArr[1] >= *fLimitArr[1]) {
80  *fValueArr[1] = 0; (*fValueArr[2])++;
81  if (*fValueArr[2] >= *fLimitArr[2]) {
82  return kFALSE;
83  }
84  }
85  }
86  return kTRUE;
87 }
88 
89 ////////////////////////////////////////////////////////////////////////////////
90 /// Get current position.
91 
93 {
94  p[0] = fOx + fCx*fDx;
95  p[1] = fOy + fCy*fDy;
96  p[2] = fOz + fCz*fDz;
97 }
98 
99 ////////////////////////////////////////////////////////////////////////////////
100 /// Set position into the translation part of mx.
101 
103 {
104  mx->SetPos(fOx + fCx*fDx, fOy + fCy*fDy, fOz + fCz*fDz);
105 }
106 
107 ////////////////////////////////////////////////////////////////////////////////
108 /// Set position into the translation part of mx and advance to the
109 /// next grid position.
110 
112 {
113  SetTrans(mx);
114  Step();
115 }
TEveTrans is a 4x4 transformation matrix for homogeneous coordinates stored internally in a column-ma...
Definition: TEveTrans.h:26
float Float_t
Definition: RtypesCore.h:55
void SetTrans(TEveTrans *mx)
Set position into the translation part of mx.
void GetPosition(Float_t *p)
Get current position.
void Reset()
Reset position to origin.
void SetTransAdvance(TEveTrans *mx)
Set position into the translation part of mx and advance to the next grid position.
TEveGridStepper(const TEveGridStepper &)
Internal traversal variables.
static constexpr double s
EStepMode_e fMode
const Bool_t kFALSE
Definition: RtypesCore.h:90
void SetPos(Double_t x, Double_t y, Double_t z)
Set position (base-vec 4).
Definition: TEveTrans.cxx:507
Provide discrete position coordinates for placement of objects on regular grids.
#define ClassImp(name)
Definition: Rtypes.h:361
void Subtract(TEveGridStepper &s)
Subtract current position of 's' from origin of this.
Bool_t Step()
Move to the next grid position.
const Bool_t kTRUE
Definition: RtypesCore.h:89
Int_t * fLimitArr[3]
Int_t * fValueArr[3]