ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4HepRepFileSceneHandler.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4HepRepFileSceneHandler.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 // Joseph Perl 27th January 2002
30 // A base class for a scene handler to export geometry and trajectories
31 // to the HepRep xml file format.
32 
33 #ifndef G4HepRepFileSCENEHANDLER_HH
34 #define G4HepRepFileSCENEHANDLER_HH
35 
36 //#define G4HEPREPFILEDEBUG // Comment this out to suppress debug code.
37 
38 #include "G4VSceneHandler.hh"
39 #include "G4Box.hh"
40 #include "G4Cons.hh"
41 #include "G4Tubs.hh"
42 #include "G4Trd.hh"
43 #include "G4Trap.hh"
44 #include "G4Sphere.hh"
45 #include "G4Para.hh"
46 #include "G4Torus.hh"
47 #include "G4Polycone.hh"
48 #include "G4Polyhedra.hh"
49 
50 // HepRep
51 #include "G4HepRepFileXMLWriter.hh"
52 
53 class G4VPhysicalVolume;
54 class G4LogicalVolume;
56 class G4VisTrajContext;
57 
59 
60 public:
62  const G4String& name);
63  virtual ~G4HepRepFileSceneHandler();
64 
66  // No need to implement these, but if you do...
67  void AddSolid(const G4Box&);
68  void AddSolid(const G4Cons&);
69  void AddSolid(const G4Tubs&);
70  void AddSolid(const G4Trd&);
71  void AddSolid(const G4Trap&);
72  void AddSolid(const G4Sphere&);
73  void AddSolid(const G4Para&);
74  void AddSolid(const G4Torus&);
75  void AddSolid(const G4Polycone&);
76  void AddSolid(const G4Polyhedra&);
77  void AddSolid(const G4Orb&);
78  void AddSolid(const G4Ellipsoid&);
79  void AddSolid(const G4TessellatedSolid&);
80  void AddSolid(const G4VSolid&);
81  void AddCompound (const G4VTrajectory&);
82  void InitTrajectory();
83  void AddCompound (const G4VHit&);
84  void InitHit();
87  }
90  }
91  void AddCompound (const G4VDigi& digi) {
93  }
94  // void PreAddSolid(const G4Transform3D& objectTransformation,
95  // const G4VisAttributes&);
96  // void PostAddSolid();
97 
99  // Required implementation of pure virtual functions...
100 
101  void AddPrimitive(const G4Polyline&);
102  void AddPrimitive(const G4Text&);
103  void AddPrimitive(const G4Circle&);
104  void AddPrimitive(const G4Square&);
105  void AddPrimitive(const G4Polyhedron&);
106 
109  // Further optional AddPrimtive methods. Explicitly invoke base
110  // class methods if not otherwise defined to avoid warnings about
111  // hiding of base class methods.
112  void AddPrimitive(const G4Polymarker&);
113  void AddPrimitive(const G4Scale& scale) {
115  }
116 
118  // Further optional virtual functions...
119 
120  // void BeginPrimitives(const G4Transform3D& objectTransformation);
121  // void EndPrimitives();
122 
123  void BeginModeling();
124  void EndModeling();
125 
126  void BeginPrimitives2D(const G4Transform3D& objectTransformation);
127  void EndPrimitives2D();
128 
130  // Administration functions.
131 
132  //void ClearStore ();
133  void ClearTransientStore ();
134 
136  // Required...
137 
139 
140 protected:
141  static G4int fSceneIdCount; // Counter for HepRep scene handlers.
142 
143 private:
145  void AddHepRepInstance(const char* primName,
146  const G4Visible visible);
147  void CheckFileOpen();
157 
159 
160  std::vector<G4AttValue>* trajAttValues;
161  std::map<G4String,G4AttDef>* trajAttDefs;
162  std::vector<G4AttValue>* hitAttValues;
163  std::map<G4String,G4AttDef>* hitAttDefs;
164 
165 #ifdef G4HEPREPFILEDEBUG
166  void PrintThings();
167 #endif
168 
169 };
170 
171 #endif