00001 // @(#)root/table:$Id: TVolumeViewIter.h 20882 2007-11-19 11:31:26Z rdm $ 00002 // Author: Valery Fine(fine@bnl.gov) 25/01/99 00003 00004 /************************************************************************* 00005 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * 00006 * All rights reserved. * 00007 * * 00008 * For the licensing terms see $ROOTSYS/LICENSE. * 00009 * For the list of contributors see $ROOTSYS/README/CREDITS. * 00010 *************************************************************************/ 00011 00012 #ifndef ROOT_TVolumeViewIter 00013 #define ROOT_TVolumeViewIter 00014 00015 #include "TDataSetIter.h" 00016 #include "TVolumePosition.h" 00017 00018 class TObjArray; 00019 class TVolumeView; 00020 00021 class TVolumeViewIter : public TDataSetIter { 00022 private: 00023 protected: 00024 friend class TVolumeView; 00025 TObjArray *fPositions; // the array of the Node position in the absolute system 00026 virtual const TVolumePosition *GetPosition(Int_t level=0) const; 00027 virtual TVolumePosition *SetPositionAt(TVolume *node,Double_t x=0, Double_t y=0, Double_t z=0, TRotMatrix *matrix=0); 00028 virtual TVolumePosition *SetPositionAt(TVolumePosition &curPosition); 00029 public: 00030 TVolumeViewIter(TVolumeView *view, Int_t depth=1, Bool_t dir=kIterForward); 00031 ~TVolumeViewIter(); 00032 virtual Bool_t Notify(); 00033 virtual void Notify(TDataSet *set); 00034 virtual void Reset(TDataSet *l=0,Int_t depth=0); 00035 00036 virtual TDataSet *operator[](const Char_t *path); 00037 TVolumePosition *operator[](Int_t level); 00038 00039 TVolumePosition *UpdateTempMatrix(TVolumePosition *curPosition); 00040 void ResetPosition(Int_t level=0, TVolumePosition *newPosition=0); 00041 ClassDef(TVolumeViewIter,0) // Volume view iterator 00042 }; 00043 00044 inline Bool_t TVolumeViewIter::Notify() { return TDataSetIter::Notify();} 00045 inline TDataSet *TVolumeViewIter::operator[](const Char_t *path) 00046 {return TDataSetIter::operator[](path); } 00047 00048 #endif 00049