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
RE02NestedPhantomParameterisation.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file RE02NestedPhantomParameterisation.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
//
28
//
29
//
30
//
31
#ifndef RE02NESTEDPARAMETERISATION_HH
32
#define RE02NESTEDPARAMETERISATION_HH
33
34
#include "
G4Types.hh
"
35
#include "
G4VNestedParameterisation.hh
"
36
#include "
G4ThreeVector.hh
"
37
#include <vector>
38
39
class
G4VPhysicalVolume
;
40
class
G4VTouchable
;
41
class
G4VSolid
;
42
class
G4Material
;
43
44
// CSG Entities which may be parameterised/replicated
45
//
46
class
G4Box
;
47
class
G4Tubs
;
48
class
G4Trd
;
49
class
G4Trap
;
50
class
G4Cons
;
51
class
G4Sphere
;
52
class
G4Orb
;
53
class
G4Ellipsoid
;
54
class
G4Torus
;
55
class
G4Para
;
56
class
G4Polycone
;
57
class
G4Polyhedra
;
58
class
G4Hype
;
59
60
//
90
//
91
class
RE02NestedPhantomParameterisation
:
public
G4VNestedParameterisation
92
{
93
public
:
// with description
94
95
RE02NestedPhantomParameterisation
(
const
G4ThreeVector
& voxelSize,
96
G4int
nz,
97
std::vector<G4Material*>&
mat
);
98
~RE02NestedPhantomParameterisation
();
99
100
// Methods required in derived classes
101
// -----------------------------------
102
G4Material
*
ComputeMaterial
(
G4VPhysicalVolume
*currentVol,
103
const
G4int
repNo,
104
const
G4VTouchable
*parentTouch=0
105
);
106
// Required method, as it is the reason for this class.
107
// Must cope with parentTouch=0 for navigator's SetupHierarchy
108
109
G4int
GetNumberOfMaterials
()
const
;
110
G4Material
*
GetMaterial
(
G4int
idx
)
const
;
111
// Needed to define materials for instances of Nested Parameterisation
112
// Current convention: each call should return the materials
113
// of all instances with the same mother/ancestor volume.
114
115
void
ComputeTransformation
(
const
G4int
no,
116
G4VPhysicalVolume
*currentPV)
const
;
117
118
// Methods optional in derived classes
119
// -----------------------------------
120
121
// Additional standard Parameterisation methods,
122
// which can be optionally defined, in case solid is used.
123
124
void
ComputeDimensions
(
G4Box
&,
125
const
G4int
,
126
const
G4VPhysicalVolume
*)
const
;
127
128
private
:
// Dummy declarations to get rid of warnings ...
129
130
void
ComputeDimensions
(
G4Trd
&,
const
G4int
,
const
G4VPhysicalVolume
*)
131
const
{}
132
void
ComputeDimensions
(
G4Trap
&,
const
G4int
,
const
G4VPhysicalVolume
*)
133
const
{}
134
void
ComputeDimensions
(
G4Cons
&,
const
G4int
,
const
G4VPhysicalVolume
*)
135
const
{}
136
void
ComputeDimensions
(
G4Sphere
&,
const
G4int
,
const
G4VPhysicalVolume
*)
137
const
{}
138
void
ComputeDimensions
(
G4Orb
&,
const
G4int
,
const
G4VPhysicalVolume
*)
139
const
{}
140
void
ComputeDimensions
(
G4Ellipsoid
&,
const
G4int
,
const
G4VPhysicalVolume
*)
141
const
{}
142
void
ComputeDimensions
(
G4Torus
&,
const
G4int
,
const
G4VPhysicalVolume
*)
143
const
{}
144
void
ComputeDimensions
(
G4Para
&,
const
G4int
,
const
G4VPhysicalVolume
*)
145
const
{}
146
void
ComputeDimensions
(
G4Hype
&,
const
G4int
,
const
G4VPhysicalVolume
*)
147
const
{}
148
void
ComputeDimensions
(
G4Tubs
&,
const
G4int
,
const
G4VPhysicalVolume
*)
149
const
{}
150
void
ComputeDimensions
(
G4Polycone
&,
const
G4int
,
const
G4VPhysicalVolume
*)
151
const
{}
152
void
ComputeDimensions
(
G4Polyhedra
&,
const
G4int
,
const
G4VPhysicalVolume
*)
153
const
{}
154
// G4Material* ComputeMaterial(const G4int repNo,
155
// G4VPhysicalVolume* currentVol,
156
// const G4VTouchable* parentTouch)
157
// { return ComputeMaterial( currentVol, repNo, parentTouch ); }
158
using
G4VNestedParameterisation::ComputeMaterial
;
159
160
private
:
161
162
G4double
fdX
,
fdY
,
fdZ
;
163
G4int
fNz
;
164
//
165
std::vector<G4double>
fpZ
;
166
std::vector<G4Material*>
fMat
;
167
};
168
169
#endif
geant4
tree
geant4-10.6-release
examples
extended
runAndEvent
RE02
include
RE02NestedPhantomParameterisation.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:10
using
1.8.2 with
ECCE GitHub integration