ROOT logo
// $Id: ZGeoOvlMgr.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 RootGeo_ZGeoOverlap_H
#define RootGeo_ZGeoOverlap_H

#include <Glasses/ZNode.h>
#include <Glasses/ZGeoOvl.h>
#include <Stones/ZColor.h>

#include <TObject.h>
#include <TGeoNode.h>


class ZGeoOvlMgr : public ZGeoNode
{
  MAC_RNR_FRIENDS(ZGeoOvlMgr);

private:
  void _init();

  // Overlap import / markup.
protected:
  ZColor		mMotherCol;        // X{GSP} 7 ColorButt()
  ZColor                mExtrCol;          // X{GSP} 7 ColorButt()
  ZColor		mOvlpCol1;         // X{GSP} 7 ColorButt()
  ZColor		mOvlpCol2;         // X{GSP} 7 ColorButt()
  ZColor                mPMExtrCol;        // X{GSP} 7 ColorButt()
  ZColor                mPMOvlpCol;        // X{GSP} 7 ColorButt()
  Float_t               mResol;            // X{GS}  7 Value(-range=>[0,100,1,1000], -join=>1)
public:
  void                  RecalculateOvl();  // X{Ed}  7 MButt()

  // Selection of displayed overlaps.
protected:
  Float_t               mMinOvl;           // X{GS}  7 Value(-range=>[0,100,1,1000], -join=>1)
  Float_t               mMaxOvl;           // X{GS}  7 Value(-range=>[0,100,1,1000])
public:
  void                  RnrOvlInterval();  // X{ED}  7 MButt()

  typedef list<TGeoNode*>                   lgn_t;
  typedef list<TGeoNode*>::iterator         lgn_i;
  typedef list<TGeoNode*>::reverse_iterator lgn_ri;

protected:
  ZTrans      get_ztrans(TGeoMatrix* gm);
  Bool_t      locate_first_from_top(TGeoNode* cur_node, TGeoVolume* v,
				    ZGeoNode* zn, lgn_t& result);
  TString     setup_absolute_matrix(TGeoNode* top_node, TGeoVolume* v,
				    ZGeoNode* zn);
  ZGeoNode*   create_standalone_node(const Text_t* n, const Text_t* t,
				     TGeoNode* gnode=0, TGeoMatrix* gmatrix=0);
  void        set_tnode_by_path(TString path, TGeoNode*& gn);

public:
  ZGeoOvlMgr(const Text_t* n="ZGeoOvlMgr", const Text_t* t=0) :
    ZGeoNode(n,t) { _init(); }
  virtual ~ZGeoOvlMgr() {}

  void         ImportOverlaps(TObjArray* lOverlaps, TGeoNode* top_node);

  virtual void Restore();    // X{Ed}

  void         DumpOvlMgr(); //! X{E} 7 MButt()

#include "ZGeoOvlMgr.h7"
  ClassDef(ZGeoOvlMgr, 1);
}; // endclass ZGeoOvlMgr


#endif
 ZGeoOvlMgr.h:1
 ZGeoOvlMgr.h:2
 ZGeoOvlMgr.h:3
 ZGeoOvlMgr.h:4
 ZGeoOvlMgr.h:5
 ZGeoOvlMgr.h:6
 ZGeoOvlMgr.h:7
 ZGeoOvlMgr.h:8
 ZGeoOvlMgr.h:9
 ZGeoOvlMgr.h:10
 ZGeoOvlMgr.h:11
 ZGeoOvlMgr.h:12
 ZGeoOvlMgr.h:13
 ZGeoOvlMgr.h:14
 ZGeoOvlMgr.h:15
 ZGeoOvlMgr.h:16
 ZGeoOvlMgr.h:17
 ZGeoOvlMgr.h:18
 ZGeoOvlMgr.h:19
 ZGeoOvlMgr.h:20
 ZGeoOvlMgr.h:21
 ZGeoOvlMgr.h:22
 ZGeoOvlMgr.h:23
 ZGeoOvlMgr.h:24
 ZGeoOvlMgr.h:25
 ZGeoOvlMgr.h:26
 ZGeoOvlMgr.h:27
 ZGeoOvlMgr.h:28
 ZGeoOvlMgr.h:29
 ZGeoOvlMgr.h:30
 ZGeoOvlMgr.h:31
 ZGeoOvlMgr.h:32
 ZGeoOvlMgr.h:33
 ZGeoOvlMgr.h:34
 ZGeoOvlMgr.h:35
 ZGeoOvlMgr.h:36
 ZGeoOvlMgr.h:37
 ZGeoOvlMgr.h:38
 ZGeoOvlMgr.h:39
 ZGeoOvlMgr.h:40
 ZGeoOvlMgr.h:41
 ZGeoOvlMgr.h:42
 ZGeoOvlMgr.h:43
 ZGeoOvlMgr.h:44
 ZGeoOvlMgr.h:45
 ZGeoOvlMgr.h:46
 ZGeoOvlMgr.h:47
 ZGeoOvlMgr.h:48
 ZGeoOvlMgr.h:49
 ZGeoOvlMgr.h:50
 ZGeoOvlMgr.h:51
 ZGeoOvlMgr.h:52
 ZGeoOvlMgr.h:53
 ZGeoOvlMgr.h:54
 ZGeoOvlMgr.h:55
 ZGeoOvlMgr.h:56
 ZGeoOvlMgr.h:57
 ZGeoOvlMgr.h:58
 ZGeoOvlMgr.h:59
 ZGeoOvlMgr.h:60
 ZGeoOvlMgr.h:61
 ZGeoOvlMgr.h:62
 ZGeoOvlMgr.h:63
 ZGeoOvlMgr.h:64
 ZGeoOvlMgr.h:65
 ZGeoOvlMgr.h:66
 ZGeoOvlMgr.h:67
 ZGeoOvlMgr.h:68
 ZGeoOvlMgr.h:69
 ZGeoOvlMgr.h:70
 ZGeoOvlMgr.h:71
 ZGeoOvlMgr.h:72
 ZGeoOvlMgr.h:73
 ZGeoOvlMgr.h:74