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
STCyclotronDetectorConstruction.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file STCyclotronDetectorConstruction.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
// Author: F. Poignant, floriane.poignant@gmail.com
27
//
29
30
#ifndef STCyclotronDetectorConstruction_h
31
#define STCyclotronDetectorConstruction_h 1
32
33
#include "
G4VUserDetectorConstruction.hh
"
34
#include "
globals.hh
"
35
#include "
G4PhysicalConstants.hh
"
36
#include <fstream>
37
38
class
G4VPhysicalVolume
;
39
class
G4LogicalVolume
;
40
class
G4Region
;
41
class
G4Tubs
;
42
class
G4Material
;
43
class
STCyclotronDetectorMessenger
;
44
class
G4Element
;
45
47
48
class
STCyclotronDetectorConstruction
:
public
G4VUserDetectorConstruction
49
{
50
public
:
51
STCyclotronDetectorConstruction
();
52
~STCyclotronDetectorConstruction
();
53
54
G4VPhysicalVolume
*
Construct
();
55
void
ConstructSDandField
();
56
57
void
SetTargetDiameter
(
G4double
);
58
void
SetTargetIsotopeName
(
G4String
);
59
void
SetTargetIsotopeZ
(
G4double
);
60
void
SetTargetIsotopeN
(
G4int
);
61
void
SetTargetIsotopeA
(
G4double
);
62
void
SetTargetElementName
(
G4String
);
63
void
SetTargetElementSymbole
(
G4String
);
64
void
SetTargetElementNComponents
(
G4int
);
65
void
SetTargetElementAbundance
(
G4double
);
66
void
SetTargetMaterialDensity
(
G4double
);
67
void
SetTargetMaterialNComponents
(
G4int
);
68
void
SetTargetMaterialFractionMass
(
G4double
);
69
void
SetTargetNaturalElement
(
G4String
);
70
void
SetTargetNaturalMaterialFractionMass
(
G4double
);
71
G4bool
UpdateMaterial
();
72
void
SetTargetMaterial
(
G4String
);
73
74
void
SetFoilIsotopeName
(
G4String
);
75
void
SetFoilIsotopeZ
(
G4double
);
76
void
SetFoilIsotopeN
(
G4int
);
77
void
SetFoilIsotopeA
(
G4double
);
78
void
SetFoilElementName
(
G4String
);
79
void
SetFoilElementSymbole
(
G4String
);
80
void
SetFoilElementNComponents
(
G4int
);
81
void
SetFoilElementAbundance
(
G4double
);
82
void
SetFoilMaterialDensity
(
G4double
);
83
void
SetFoilMaterialNComponents
(
G4int
);
84
void
SetFoilMaterialFractionMass
(
G4double
);
85
void
SetFoilNaturalElement
(
G4String
);
86
void
SetFoilNaturalMaterialFractionMass
(
G4double
);
87
G4bool
UpdateFoilMaterial
();
88
void
SetFoilMaterial
(
G4String
);
89
90
void
SetTargetThickness
(
G4double
);
91
void
SetFoilThickness
(
G4double
);
92
93
//Get methods
94
inline
G4double
GetTargetPosition1
(){
return
fLayer1_z_position_PART4
+ 0.5*11.5 -
fTarget_thickness
;}
95
inline
G4double
GetTargetPosition2
(){
return
fLayer1_z_position_PART4
+ 0.5*11.5;}
96
inline
G4double
GetVolumeTarget
(){
return
pi
*
fTarget_diameter
*
fTarget_diameter
/4*
fTarget_thickness
;}
97
inline
G4double
GetFoilPosition1
(){
return
fZ_foil_position
- 0.5*
fFoil_thickness
;}
98
inline
G4double
GetTargetVolume
(){
return
fTargetVolume
;}
99
inline
G4double
GetFoilVolume
(){
return
fFoilVolume
;}
100
inline
G4double
GetFoilThickness
(){
return
fFoil_thickness
;}
101
inline
G4double
GetTargetThickness
(){
return
fTarget_thickness
;}
102
inline
G4double
GetTargetDiameter
(){
return
fTarget_diameter
;}
103
104
private
:
105
106
STCyclotronDetectorMessenger
*
fDetectorMessenger
;
107
108
//Messenger parameters
109
G4double
fTarget_diameter
;
110
std::vector<G4String>
fIsotopeName
;
111
std::vector<G4double>
fIsotopeZ
;
112
std::vector<G4int>
fIsotopeN
;
113
std::vector<G4double>
fIsotopeA
;
114
std::vector<G4String>
fElementName
;
115
std::vector<G4String>
fElementSymbole
;
116
std::vector<G4int>
fElementNComponents
;
117
std::vector<G4double>
fElementAbundance
;
118
std::vector<G4String>
fNaturalElementName
;
119
std::vector<G4double>
fNaturalMaterialFractionMass
;
120
G4double
fDensity_target
;
121
G4int
fTarget_NComponents
;
122
std::vector<G4double>
fMaterialFractionMass
;
123
124
std::vector<G4String>
fIsotopeNameFoil
;
125
std::vector<G4double>
fIsotopeZFoil
;
126
std::vector<G4int>
fIsotopeNFoil
;
127
std::vector<G4double>
fIsotopeAFoil
;
128
std::vector<G4String>
fElementNameFoil
;
129
std::vector<G4String>
fElementSymboleFoil
;
130
std::vector<G4int>
fElementNComponentsFoil
;
131
std::vector<G4double>
fElementAbundanceFoil
;
132
std::vector<G4String>
fNaturalElementNameFoil
;
133
std::vector<G4double>
fNaturalMaterialFractionMassFoil
;
134
G4double
fDensity_foil
;
135
G4int
fFoil_NComponents
;
136
std::vector<G4double>
fMaterialFractionMassFoil
;
137
138
G4double
fTarget_thickness
;
139
G4double
fFoil_thickness
;
140
141
//Parameters that are used/modified in the set methods
142
//When modifying the target parameters
143
144
//Material
145
G4Material
*
fTarget_Material
;
146
G4Material
*
fFoil_Material
;
147
//Foil
148
G4double
fZ_foil_position
;
149
G4Tubs
*
fSolidFoil
;
150
G4LogicalVolume
*
fLogicFoil
;
151
G4VPhysicalVolume
*
fPhysFoil
;
152
//WORLD
153
G4LogicalVolume
*
fLogicWorld
;
154
//PART 3
155
G4double
fLayer_z_position_PART3
;
156
G4VPhysicalVolume
*
fPhysLayer_PART3
;
157
G4VPhysicalVolume
*
fPhysTube_PART3
;
158
//PART 4
159
G4double
fTube_outerRadius_PART4
;
160
G4double
fTube_length_PART4
;
161
G4double
fLayer_z_position_PART4
;
162
G4VPhysicalVolume
*
fPhysTube_PART4
;
163
G4VPhysicalVolume
*
fPhysLayer_PART4
;
164
G4double
fLayer1_z_position_PART4
;
165
G4VPhysicalVolume
*
fPhysLayer1_PART4
;
166
//Target
167
G4LogicalVolume
*
fLogicTarget
;
168
G4double
fTarget_z_position
;
169
G4Tubs
*
fSolidTarget
;
170
G4VPhysicalVolume
*
fPhysTarget
;
171
//PART 5
172
G4double
fLayer1_z_position_PART5
;
173
G4VPhysicalVolume
*
fPhysLayer1_PART5
;
174
G4double
fLayer2_z_position_PART5
;
175
G4VPhysicalVolume
*
fPhysLayer2_PART5
;
176
G4double
fLayer3_z_position_PART5
;
177
G4VPhysicalVolume
*
fPhysLayer3_PART5
;
178
179
G4Region
*
fRegionTarget
;
180
G4Region
*
fRegionFoil
;
181
182
G4double
fTargetVolume
;
183
G4double
fFoilVolume
;
184
185
std::ofstream
fParametersSummary
;
186
187
};
188
#endif
geant4
tree
geant4-10.6-release
examples
advanced
STCyclotron
include
STCyclotronDetectorConstruction.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:00
using
1.8.2 with
ECCE GitHub integration