ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4GDMLWriteStructure.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4GDMLWriteStructure.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
// class G4GDMLWriteStructure
30
//
31
// Class description:
32
//
33
// GDML class for export of structures.
34
35
// History:
36
// - Created. Zoltan Torzsok, November 2007
37
// -------------------------------------------------------------------------
38
39
#ifndef _G4GDMLWRITESTRUCTURE_INCLUDED_
40
#define _G4GDMLWRITESTRUCTURE_INCLUDED_
41
42
#include "
G4Types.hh
"
43
#include "
G4Transform3D.hh
"
44
#include "
G4GDMLWriteParamvol.hh
"
45
46
class
G4LogicalVolume
;
47
class
G4VPhysicalVolume
;
48
class
G4PVDivision
;
49
class
G4LogicalBorderSurface
;
50
class
G4LogicalSkinSurface
;
51
class
G4OpticalSurface
;
52
class
G4SurfaceProperty
;
53
class
G4ReflectionFactory
;
54
class
G4AssemblyTriplet
;
55
56
class
G4GDMLWriteStructure
:
public
G4GDMLWriteParamvol
57
{
58
59
public
:
60
61
G4GDMLWriteStructure
();
62
virtual
~G4GDMLWriteStructure
();
63
64
virtual
void
StructureWrite
(xercesc::DOMElement*);
65
void
AddVolumeAuxiliary
(
G4GDMLAuxStructType
myaux,
const
G4LogicalVolume
*
const
);
66
67
void
SetEnergyCutsExport
(
G4bool
);
68
void
SetSDExport
(
G4bool
);
69
70
G4int
GetMaxExportLevel
()
const
;
71
void
SetMaxExportLevel
(
G4int
);
72
73
protected
:
74
75
void
DivisionvolWrite
(xercesc::DOMElement*,
const
G4PVDivision
*
const
);
76
void
PhysvolWrite
(xercesc::DOMElement*,
const
G4VPhysicalVolume
*
const
topVol,
77
const
G4Transform3D
&
transform
,
const
G4String
& moduleName);
78
void
ReplicavolWrite
(xercesc::DOMElement*,
const
G4VPhysicalVolume
*
const
);
79
void
AssemblyWrite
(xercesc::DOMElement*,
const
int
assemblyID);
80
G4Transform3D
TraverseVolumeTree
(
const
G4LogicalVolume
*
const
topVol,
81
const
G4int
depth);
82
void
SurfacesWrite
();
83
void
BorderSurfaceCache
(
const
G4LogicalBorderSurface
*
const
);
84
void
SkinSurfaceCache
(
const
G4LogicalSkinSurface
*
const
);
85
const
G4LogicalBorderSurface
*
GetBorderSurface
(
const
G4VPhysicalVolume
*
const
);
86
const
G4LogicalSkinSurface
*
GetSkinSurface
(
const
G4LogicalVolume
*
const
);
87
G4bool
FindOpticalSurface
(
const
G4SurfaceProperty
*);
88
void
ExportEnergyCuts
(
const
G4LogicalVolume
*
const
);
89
void
ExportSD
(
const
G4LogicalVolume
*
const
);
90
91
protected
:
92
93
xercesc::DOMElement*
structureElement
;
94
std::vector<xercesc::DOMElement*>
borderElementVec
;
95
std::vector<xercesc::DOMElement*>
skinElementVec
;
96
std::map<const G4LogicalVolume*, G4GDMLAuxListType>
auxmap
;
97
98
private
:
// cache for optical surfaces...
99
100
std::vector<const G4OpticalSurface*>
opt_vec
;
101
G4ReflectionFactory
*
reflFactory
;
102
G4bool
cexport
;
// Flag for optional export of energy cuts per volume
103
G4bool
sdexport
;
// Flag for optional export of SD per volume
104
G4int
maxLevel
;
// Maximum number of levels to export
105
static
G4int
levelNo
;
// Counter for level being exported
106
std::map<const G4VPhysicalVolume*, G4int>
assemblyVolMap
;
// Map of phys volumes to assembly IDs
107
std::map<const G4VPhysicalVolume*, G4int>
imprintsMap
;
// Map of phys volumes to imprints IDs
108
std::vector<int>
addedAssemblies
;
// vector of assemblies IDs already added to the structure
109
110
};
111
112
#endif
geant4
tree
geant4-10.6-release
source
persistency
gdml
include
G4GDMLWriteStructure.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:25
using
1.8.2 with
ECCE GitHub integration