Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4GMocrenFileViewer.cc
Go to the documentation of this file.
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// Created: Mar. 31, 2009 Akinori Kimura
30//
31
32
33#define __G_ANSI_C__
34#define G4GMocrenFile_STRUCTURE_PRIORITY 1.
35
36#include "G4ios.hh"
37#include <cstdio>
38#include <cstring>
39#include <cassert>
40
41#include "G4VisManager.hh"
42#include "G4Scene.hh"
43#include "G4Vector3D.hh"
44#include "G4VisExtent.hh"
45#include "G4LogicalVolume.hh"
46#include "G4VSolid.hh"
47
48#include "G4GMocrenFile.hh"
51#include "G4GMocrenMessenger.hh"
52
53
54//----- constants
55
56//-- for a debugging
57const G4bool GFDEBUG = false;
58
59//----- G4GMocrenFileViewer, constructor
62 const G4String& name)
63 : G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name),
64 kSceneHandler (sceneHandler)
65{
66 // Set a g4.gdd-file viewer
67 std::strncpy( kG4GddViewer, "gMocren", 8);
68 if( std::getenv( "G4GMocrenFile_VIEWER" ) != NULL ) {
69 char * env = std::getenv( "G4GMocrenFile_VIEWER" );
70 G4int len = (G4int)std::strlen(env);
71 if(len >= 32) {
72 G4Exception("G4GMocrenFileViewer::G4GMocrenFileViewer(*)",
73 "gMocren1000", FatalException,
74 "Invalid length of string set in G4GMocrenFile_VIEWER");
75 }
76 std::strncpy( kG4GddViewer, env, sizeof(kG4GddViewer) - 1);
77 kG4GddViewer[sizeof(kG4GddViewer) - 1] = '\0';
78 //std::strcpy( kG4GddViewer, getenv( "G4GMocrenFile_VIEWER" ) ) ;
79 }
80
81 // string for viewer invocation
82 if ( !std::strcmp( kG4GddViewer, "NONE" ) ) {
83
84 //std::strcpy( kG4GddViewerInvocation, "" );
85 kG4GddViewerInvocation[0] = '\0';
86 } else {
87
88 std::strncpy( kG4GddViewerInvocation, kG4GddViewer,
89 sizeof(kG4GddViewerInvocation) - 1);
90 kG4GddViewerInvocation[sizeof(kG4GddViewerInvocation) - 1] = '\0';
91 G4int n = sizeof(kG4GddViewerInvocation)
92 - (G4int)std::strlen(kG4GddViewerInvocation) - 1;
93 std::strncat( kG4GddViewerInvocation, " ", n);
94 const char * gddfname = kSceneHandler.GetGddFileName();
95 G4int len = (G4int)std::strlen(gddfname);
96 if(len >= 64) {
97 G4Exception("G4GMocrenFileViewer::G4GMocrenFileViewer(*)",
98 "gMocren1001", FatalException,
99 "Invalid length of the GDD file name");
100 }
101 n = sizeof(kG4GddViewerInvocation)
102 - (G4int)std::strlen(kG4GddViewerInvocation) - 1;
103 std::strncat( kG4GddViewerInvocation, gddfname, n);
104 }
105
106}
107
108//----- G4GMocrenFileViewer, destructor
110{}
111
112//----- G4GMocrenFileViewer::SetView ()
114{
115 if(GFDEBUG)
117 G4cout << "***** G4GMocrenFileViewer::SetView(): No effects" << G4endl;
118
119 // Do nothing, since DAWN is running as a different process.
120 // SendViewParameters () will do this job instead.
121}
122
123
124//----- G4GMocrenFileViewer::ClearView()
125void
127{
128 if(GFDEBUG) {
130 G4cout << "***** G4GMocrenFileViewer::ClearView (): No effects " << G4endl;
131 }
132 }
133 //if(kSceneHandler.kGddDest) {
134 //kSceneHandler.kGddDest.close();
135 // Re-open with same filename...
136 //kSceneHandler.kGddDest.open(kSceneHandler.kGddFileName);
137 kSceneHandler.kFlagInModeling = false;
138 kSceneHandler.GFBeginModeling();
139 //}
140}
141
142
143//----- G4GMocrenFileViewer::DrawView ()
145{
146 if(GFDEBUG)
148 G4cout << "***** G4GMocrenFileViewer::DrawView () " << G4endl;
149
150 //-----
151 kSceneHandler.GFBeginModeling() ;
152
153 //----- Always visit G4 kernel
155
156 //----- Draw
158
159} // G4GMocrenFileViewer::DrawView ()
160
161
162
163//----- G4GMocrenFileViewer::ShowView()
165{
166 if(GFDEBUG)
168 G4cout << "***** G4GMocrenFileViewer::ShowView () " << G4endl;
169
170 if( kSceneHandler.GFIsInModeling() )
171 {
172 //----- End of modeling
173 // !EndModeling, !DrawAll, !CloseDevice,
174 // close g4.gdd
175 kSceneHandler.GFEndModeling();
176
177 //----- Output DAWN GUI file
178 //SendViewParameters();
179
180 //----- string for viewer invocation
181 if ( !strcmp( kG4GddViewer, "NONE" ) ) {
182
183 kG4GddViewerInvocation[0] = '\0';
184 //std::strcpy( kG4GddViewerInvocation, "" );
185 } else {
186
187 std::strncpy( kG4GddViewerInvocation, kG4GddViewer,
188 sizeof(kG4GddViewerInvocation) - 1);
189 kG4GddViewerInvocation[sizeof(kG4GddViewerInvocation) - 1] = '\0';
190 G4int n = sizeof(kG4GddViewerInvocation)
191 - (G4int)std::strlen(kG4GddViewerInvocation) - 1;
192 std::strncat( kG4GddViewerInvocation, " ", n);
193 const char * gddfname = kSceneHandler.GetGddFileName();
194 G4int len = (G4int)std::strlen(gddfname);
195 if(len >= 64) {
196 G4Exception("G4GMocrenFileViewer::ShowView()",
197 "gMocren1002", FatalException,
198 "Invalid length of the GDD file name");
199 }
200 n = sizeof(kG4GddViewerInvocation)
201 - (G4int)std::strlen(kG4GddViewerInvocation) - 1;
202 std::strncat( kG4GddViewerInvocation, gddfname, n);
203 }
204
205 }
206
207} // G4GMocrenFileViewer::ShowView()
208
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:59
const G4bool GFDEBUG
const G4bool GFDEBUG
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4GMocrenFileViewer(G4GMocrenFileSceneHandler &scene, G4GMocrenMessenger &messenger, const G4String &name="")
void ProcessView()
Definition: G4VViewer.cc:107
void NeedKernelVisit()
Definition: G4VViewer.cc:80
static Verbosity GetVerbosity()