ROOT logo
// @(#)root/g4root:$Id: TG4RootNavMgr.h 20882 2007-11-19 11:31:26Z rdm $
// Author: Andrei Gheata   07/08/06

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TG4RootNavMgr
#define ROOT_TG4RootNavMgr


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TG4RootNavMgr                                                        //
//                                                                      //
// Manager class creating a G4Navigator based on a ROOT geometry.       //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TObject
#include "TObject.h"
#endif

class TGeoManager;
class TG4RootNavigator;
class TG4RootDetectorConstruction;
class TVirtualUserPostDetConstruction;

class TG4RootNavMgr : public TObject {

protected:
   TGeoManager          *fGeometry;   // Pointer to TGeo geometry
   TG4RootNavigator     *fNavigator;  // G4 navigator working with TGeo
   TG4RootDetectorConstruction *fDetConstruction; // G4 geometry built based on ROOT one
   Bool_t                fConnected;  // Flags connection to G4

   TG4RootNavMgr();
   TG4RootNavMgr(TGeoManager *geom);   

private:
   static TG4RootNavMgr *fRootNavMgr; // Static pointer to singleton

public:
   static TG4RootNavMgr *GetInstance(TGeoManager *geom=0);
   virtual ~TG4RootNavMgr();
   
   Bool_t                ConnectToG4();
   void                  Initialize(TVirtualUserPostDetConstruction *sdinit=0);
   void                  LocateGlobalPointAndSetup(Double_t *pt, Double_t *dir=0);

   //Test utilities
   void                  PrintG4State() const;
   void                  SetVerboseLevel(Int_t level);

   void                  SetNavigator(TG4RootNavigator *nav);
   TG4RootNavigator     *GetNavigator() const {return fNavigator;}
   TG4RootDetectorConstruction *GetDetConstruction() const {return fDetConstruction;}

   ClassDef(TG4RootNavMgr,0)  // Class crreating a G4Navigator based on ROOT geometry
};
#endif
 TG4RootNavMgr.h:1
 TG4RootNavMgr.h:2
 TG4RootNavMgr.h:3
 TG4RootNavMgr.h:4
 TG4RootNavMgr.h:5
 TG4RootNavMgr.h:6
 TG4RootNavMgr.h:7
 TG4RootNavMgr.h:8
 TG4RootNavMgr.h:9
 TG4RootNavMgr.h:10
 TG4RootNavMgr.h:11
 TG4RootNavMgr.h:12
 TG4RootNavMgr.h:13
 TG4RootNavMgr.h:14
 TG4RootNavMgr.h:15
 TG4RootNavMgr.h:16
 TG4RootNavMgr.h:17
 TG4RootNavMgr.h:18
 TG4RootNavMgr.h:19
 TG4RootNavMgr.h:20
 TG4RootNavMgr.h:21
 TG4RootNavMgr.h:22
 TG4RootNavMgr.h:23
 TG4RootNavMgr.h:24
 TG4RootNavMgr.h:25
 TG4RootNavMgr.h:26
 TG4RootNavMgr.h:27
 TG4RootNavMgr.h:28
 TG4RootNavMgr.h:29
 TG4RootNavMgr.h:30
 TG4RootNavMgr.h:31
 TG4RootNavMgr.h:32
 TG4RootNavMgr.h:33
 TG4RootNavMgr.h:34
 TG4RootNavMgr.h:35
 TG4RootNavMgr.h:36
 TG4RootNavMgr.h:37
 TG4RootNavMgr.h:38
 TG4RootNavMgr.h:39
 TG4RootNavMgr.h:40
 TG4RootNavMgr.h:41
 TG4RootNavMgr.h:42
 TG4RootNavMgr.h:43
 TG4RootNavMgr.h:44
 TG4RootNavMgr.h:45
 TG4RootNavMgr.h:46
 TG4RootNavMgr.h:47
 TG4RootNavMgr.h:48
 TG4RootNavMgr.h:49
 TG4RootNavMgr.h:50
 TG4RootNavMgr.h:51
 TG4RootNavMgr.h:52
 TG4RootNavMgr.h:53
 TG4RootNavMgr.h:54
 TG4RootNavMgr.h:55
 TG4RootNavMgr.h:56
 TG4RootNavMgr.h:57
 TG4RootNavMgr.h:58
 TG4RootNavMgr.h:59
 TG4RootNavMgr.h:60
 TG4RootNavMgr.h:61
 TG4RootNavMgr.h:62
 TG4RootNavMgr.h:63
 TG4RootNavMgr.h:64
 TG4RootNavMgr.h:65