Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4HepRepFileSceneHandler.hh
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// $Id$
28//
29//
30// Joseph Perl 27th January 2002
31// A base class for a scene handler to export geometry and trajectories
32// to the HepRep xml file format.
33
34#ifndef G4HepRepFileSCENEHANDLER_HH
35#define G4HepRepFileSCENEHANDLER_HH
36
37//#define G4HEPREPFILEDEBUG // Comment this out to suppress debug code.
38
39#include "G4VSceneHandler.hh"
40#include "G4Box.hh"
41#include "G4Cons.hh"
42#include "G4Tubs.hh"
43#include "G4Trd.hh"
44#include "G4Trap.hh"
45#include "G4Sphere.hh"
46#include "G4Para.hh"
47#include "G4Torus.hh"
48#include "G4Polycone.hh"
49#include "G4Polyhedra.hh"
50
51// HepRep
53
55class G4LogicalVolume;
58
60
61public:
63 const G4String& name);
65
66 ////////////////////////////////////////////////////////////////
67 // No need to implement these, but if you do...
68 void AddSolid(const G4Box&);
69 void AddSolid(const G4Cons&);
70 void AddSolid(const G4Tubs&);
71 void AddSolid(const G4Trd&);
72 void AddSolid(const G4Trap&);
73 void AddSolid(const G4Sphere&);
74 void AddSolid(const G4Para&);
75 void AddSolid(const G4Torus&);
76 void AddSolid(const G4Polycone&);
77 void AddSolid(const G4Polyhedra&);
78 void AddSolid(const G4VSolid&);
79 void AddCompound (const G4VTrajectory&);
80 void InitTrajectory();
81 void AddCompound (const G4VHit&);
82 void InitHit();
83 void AddCompound (const G4THitsMap<G4double>& hits) {
85 }
86 void AddCompound (const G4VDigi& digi) {
88 }
89 // void PreAddSolid(const G4Transform3D& objectTransformation,
90 // const G4VisAttributes&);
91 // void PostAddSolid();
92
93 ////////////////////////////////////////////////////////////////
94 // Required implementation of pure virtual functions...
95
96 void AddPrimitive(const G4Polyline&);
97 void AddPrimitive(const G4Text&);
98 void AddPrimitive(const G4Circle&);
99 void AddPrimitive(const G4Square&);
100 void AddPrimitive(const G4Polyhedron&);
101 void AddPrimitive(const G4NURBS&);
102
103 ////////////////////////////////////////////////////////////////
104 ////////////////////////////////////////////////////////////////
105 // Further optional AddPrimtive methods. Explicitly invoke base
106 // class methods if not otherwise defined to avoid warnings about
107 // hiding of base class methods.
108 void AddPrimitive(const G4Polymarker&);
109 void AddPrimitive(const G4Scale& scale) {
111 }
112
113 ////////////////////////////////////////////////////////////////
114 // Further optional virtual functions...
115
116 // void BeginPrimitives(const G4Transform3D& objectTransformation);
117 // void EndPrimitives();
118
119 void BeginModeling();
120 void EndModeling();
121
122 void BeginPrimitives2D(const G4Transform3D& objectTransformation);
123 void EndPrimitives2D();
124
125 //////////////////////////////////////////////////////////////
126 // Administration functions.
127
128 //void ClearStore ();
129 void ClearTransientStore ();
130
131 ////////////////////////////////////////////////////////////////
132 // Required...
133
135
136protected:
137 static G4int fSceneIdCount; // Counter for HepRep scene handlers.
138
139private:
140 G4HepRepFileXMLWriter *hepRepXMLWriter;
141 void AddHepRepInstance(const char* primName,
142 const G4Visible visible);
143 void CheckFileOpen();
144 int fileCounter;
145 G4bool haveVisible;
146 G4bool inPrimitives2D;
147 G4bool warnedAbout3DText;
148 G4bool warnedAbout2DMarkers;
149 G4bool drawingTraj;
150 G4bool doneInitTraj;
151 G4bool drawingHit;
152 G4bool doneInitHit;
153
154 const G4VisTrajContext* trajContext;
155
156 std::vector<G4AttValue>* trajAttValues;
157 std::map<G4String,G4AttDef>* trajAttDefs;
158 std::vector<G4AttValue>* hitAttValues;
159 std::map<G4String,G4AttDef>* hitAttDefs;
160
161#ifdef G4HEPREPFILEDEBUG
162 void PrintThings();
163#endif
164
165};
166
167#endif
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
Definition: G4Box.hh:55
Definition: G4Cons.hh:75
G4HepRepFileXMLWriter * GetHepRepXMLWriter()
void AddPrimitive(const G4Polyline &)
void BeginPrimitives2D(const G4Transform3D &objectTransformation)
void AddCompound(const G4THitsMap< G4double > &hits)
void AddCompound(const G4VDigi &digi)
void AddPrimitive(const G4Scale &scale)
void AddCompound(const G4VTrajectory &)
Definition: G4Para.hh:77
Definition: G4Text.hh:73
Definition: G4Trd.hh:63
Definition: G4Tubs.hh:77
Definition: G4VHit.hh:49
virtual void AddCompound(const G4VTrajectory &)
virtual void AddPrimitive(const G4Polyline &)=0