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
G4VNestedParameterisation.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4VNestedParameterisation.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
// G4VNestedParameterisation
27
//
28
// Class description:
29
//
30
// Base class for parameterisations that use information from the parent
31
// volume to compute the material of a copy/instance of this volume.
32
// This is in addition to using the current replication number.
33
//
34
// Notes:
35
// - Such a volume can be nested inside a placement volume or a parameterised
36
// volume.
37
// - The user can modify the solid type, size or transformation using only
38
// the replication number of this parameterised volume.
39
// He/she is NOT allowed to change these attributes using information of
40
// parent volumes - otherwise incorrect results will occur.
41
// Also note that the usual restrictions apply:
42
// - the mother volume, in which these copies are placed, must always be
43
// of the same dimensions
44
45
// 24.02.05, J.Apostolakis - First created version.
46
// --------------------------------------------------------------------
47
#ifndef G4VNESTEDPARAMETERISATION_HH
48
#define G4VNESTEDPARAMETERISATION_HH
49
50
#include "
G4Types.hh
"
51
#include "
G4VPVParameterisation.hh
"
52
#include "
G4VVolumeMaterialScanner.hh
"
53
54
class
G4VPhysicalVolume
;
55
class
G4VTouchable
;
56
class
G4VSolid
;
57
class
G4Material
;
58
59
// CSG Entities which may be parameterised/replicated
60
//
61
class
G4Box
;
62
class
G4Tubs
;
63
class
G4Trd
;
64
class
G4Trap
;
65
class
G4Cons
;
66
class
G4Sphere
;
67
class
G4Orb
;
68
class
G4Ellipsoid
;
69
class
G4Torus
;
70
class
G4Para
;
71
class
G4Polycone
;
72
class
G4Polyhedra
;
73
class
G4Hype
;
74
75
class
G4VNestedParameterisation
:
public
G4VPVParameterisation
,
76
public
G4VVolumeMaterialScanner
77
{
78
public
:
// with description
79
80
G4VNestedParameterisation
();
81
virtual
~G4VNestedParameterisation
();
82
83
// Methods required in derived classes
84
// -----------------------------------
85
86
virtual
G4Material
*
ComputeMaterial
(
G4VPhysicalVolume
* currentVol,
87
const
G4int
repNo,
88
const
G4VTouchable
* parentTouch =
nullptr
) = 0;
89
// Required method, as it is the reason for this class.
90
// Must cope with parentTouch=nullptr for navigator's SetupHierarchy.
91
92
virtual
G4int
GetNumberOfMaterials
()
const
=0;
93
virtual
G4Material
*
GetMaterial
(
G4int
idx
)
const
=0;
94
// Needed to define materials for instances of Nested Parameterisation
95
// Current convention: each call should return the materials
96
// of all instances with the same mother/ancestor volume.
97
98
virtual
void
ComputeTransformation
(
const
G4int
no,
99
G4VPhysicalVolume
* currentPV)
const
= 0;
100
101
// Methods optional in derived classes
102
// -----------------------------------
103
104
virtual
G4VSolid
*
ComputeSolid
(
const
G4int
no,
G4VPhysicalVolume
* thisVol);
105
// Additional standard parameterisation methods,
106
// which can be optionally defined, in case solid is used.
107
108
virtual
void
ComputeDimensions
(
G4Box
&,
109
const
G4int
,
110
const
G4VPhysicalVolume
*)
const
{}
111
112
virtual
void
ComputeDimensions
(
G4Tubs
&,
113
const
G4int
,
114
const
G4VPhysicalVolume
*)
const
{}
115
116
virtual
void
ComputeDimensions
(
G4Trd
&,
117
const
G4int
,
118
const
G4VPhysicalVolume
*)
const
{}
119
120
virtual
void
ComputeDimensions
(
G4Trap
&,
121
const
G4int
,
122
const
G4VPhysicalVolume
*)
const
{}
123
124
virtual
void
ComputeDimensions
(
G4Cons
&,
125
const
G4int
,
126
const
G4VPhysicalVolume
*)
const
{}
127
128
virtual
void
ComputeDimensions
(
G4Sphere
&,
129
const
G4int
,
130
const
G4VPhysicalVolume
*)
const
{}
131
132
virtual
void
ComputeDimensions
(
G4Orb
&,
133
const
G4int
,
134
const
G4VPhysicalVolume
*)
const
{}
135
136
virtual
void
ComputeDimensions
(
G4Ellipsoid
&,
137
const
G4int
,
138
const
G4VPhysicalVolume
*)
const
{}
139
140
virtual
void
ComputeDimensions
(
G4Torus
&,
141
const
G4int
,
142
const
G4VPhysicalVolume
*)
const
{}
143
144
virtual
void
ComputeDimensions
(
G4Para
&,
145
const
G4int
,
146
const
G4VPhysicalVolume
*)
const
{}
147
148
virtual
void
ComputeDimensions
(
G4Polycone
&,
149
const
G4int
,
150
const
G4VPhysicalVolume
*)
const
{}
151
152
virtual
void
ComputeDimensions
(
G4Polyhedra
&,
153
const
G4int
,
154
const
G4VPhysicalVolume
*)
const
{}
155
156
virtual
void
ComputeDimensions
(
G4Hype
&,
157
const
G4int
,
158
const
G4VPhysicalVolume
*)
const
{}
159
160
161
G4Material
*
ComputeMaterial
(
const
G4int
repNo,
162
G4VPhysicalVolume
* currentVol,
163
const
G4VTouchable
* parentTouch =
nullptr
);
164
// Method implemented in this class in terms of the above
165
// ComputeMaterial() method.
166
167
virtual
G4bool
IsNested
()
const
;
168
virtual
G4VVolumeMaterialScanner
*
GetMaterialScanner
();
169
// Methods to identify nested parameterisations. Required in order
170
// to enable material scan for nested parameterisations.
171
};
172
173
#endif
geant4
tree
geant4-10.6-release
source
geometry
management
include
G4VNestedParameterisation.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:17
using
1.8.2 with
ECCE GitHub integration