ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VisExecutive.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4VisExecutive.hh
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 //
28 //
29 // John Allison 2nd February 2005 (based on MyVisManager, 24th January 1998).
30 //
31 // Class description
32 //
33 // Concrete Visualization Manager that implements the virtual
34 // functions RegisterGraphicsSystems and RegisterModelFactories. This
35 // is executed when you Initialise() or Initialize() the vis manager.
36 // It exploits C-pre-processor variables G4VIS_USE_DAWN, etc., which
37 // are set by the GNUmakefiles if environment variables of the same
38 // name are set.
39 //
40 // Include this file and write code to instantiate G4VisExecutive just
41 // once at beginning of operations. Before you compile, set
42 // appropriate environment variables (usually using "./Configure").
43 // If you change your environment you must force recompilation (the
44 // make files will not detect the need to do this).
45 //
46 // Typically, your main program file will contain:
47 //
48 // #ifdef G4VIS_USE
49 // #include "G4VisExecutive.hh"
50 // #endif
51 // ...
52 // int main() {
53 // ...
54 // #ifdef G4VIS_USE
55 // // Instantiate and initialise Visualization Manager.
56 // G4VisManager* visManager = new G4VisExecutive; // See Note (a).
57 // visManager -> SetVerboseLevel (verbosityString); // See Note (b).
58 // visManager -> RegisterGraphicsSystem (new myGS); // See Note (c).
59 // visManager -> Initialize (); // See Note (d).
60 // #endif
61 // ...
62 // #ifdef G4VIS_USE
63 // G4cout << "Deleting vis manager..." << G4endl;
64 // delete visManager;
65 // G4cout << "Vis manager deleted." << G4endl;
66 // #endif
67 //
68 // Notes:
69 // (a) After instantiation, all references to this object should be as
70 // a G4VisManager. The functions RegisterGraphicsSystems and
71 // RegisterModelFactories defined in G4VisExecutive.icc are
72 // virtual functions of G4VisManager. They are invoked by
73 // G4VisManager::Initialise. If you need to initialise in a
74 // separate file, see advice below.
75 // (b) The verbosityString ("quiet", "errors", "warnings",
76 // "confirmations", etc. - "help /vis/verbose" to see options) can be
77 // set here or with /vis/verbose. Alternatively, you can instantiate
78 // with a verbosity string. e.g:
79 // G4VisManager* visManager = new G4VisExecutive("quiet");
80 // (c) You can register your own graphics system like this.
81 // (d) Your can intialise like this with C++ code or use /vis/initialize.
82 //
83 // If you need to perform the instantiation and the initialisation in
84 // separate files, e.g., to establish the verbosity before
85 // initialisation, then the code that initialises must have access, of
86 // course, to the G4VisExecutive object, but this should be as a
87 // G4VisManager object, i.e., #include "G4VisManager.hh".
88 // RegisterGraphicsSystems and RegisterModelFactories are (pure)
89 // virtual methods of G4VisManager called from G4VisManager::Initialize.
90 // First file:
91 // #include "G4VisExecutive.hh"
92 // ...
93 // fpVisManager = new G4VisExecutive;
94 // where fpVisManager is a G4VisManager*.
95 // Second file:
96 // #include "G4VisManager.hh"
97 // ...
98 // fpVisManager -> Initialize ();
99 // where there is some mechanism for getting access to the pointer
100 // fpVisManager.
101 //
102 // The implementation is included as an .icc file because - for those
103 // graphics systems that need external libraries - only those systems
104 // that have been selected by the flags may be instantiated without
105 // causing unresolved references (only the user knows which libraries
106 // are available on his/her computer). It also ensures that libraries
107 // can be linked in the right order, without circular dependencies.
108 // (Note that some graphics systems, notable those that write files
109 // for off-line viewing, do not suffer these restrictions and are
110 // always registered.)
111 //
112 // See class description of G4VisManager for more details.
113 
114 #ifndef G4VISEXECUTIVE_HH
115 #define G4VISEXECUTIVE_HH
116 
117 #include "G4VisManager.hh"
118 
120 
121 public: // With description
122 
123  G4VisExecutive (const G4String& verbosityString = "warnings");
124 
125 private:
126 
128  void RegisterModelFactories();
129 
130 };
131 
132 #include "G4VisExecutive.icc"
133 
134 #endif