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
CexmcSetup.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file CexmcSetup.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
* Filename: CexmcSetup.hh
30
*
31
* Description: physical setup
32
*
33
* Version: 1.0
34
* Created: 10.10.2009 23:15:21
35
* Revision: none
36
* Compiler: gcc
37
*
38
* Author: Alexey Radkov (),
39
* Company: PNPI
40
*
41
* =============================================================================
42
*/
43
44
#ifndef CEXMC_SETUP_HH
45
#define CEXMC_SETUP_HH
46
47
#include <
G4VUserDetectorConstruction.hh
>
48
#include <
G4AffineTransform.hh
>
49
#include <
G4ThreeVector.hh
>
50
#include <
G4RotationMatrix.hh
>
51
#include <G4String.hh>
52
#include "
CexmcSensitiveDetectorsAttributes.hh
"
53
54
class
G4GDMLParser
;
55
class
G4LogicalVolume
;
56
class
G4VPhysicalVolume
;
57
58
59
class
CexmcSetup
:
public
G4VUserDetectorConstruction
60
{
61
public
:
62
enum
SpecialVolumeType
63
{
64
Monitor
,
65
VetoCounter
,
66
Calorimeter
,
67
Target
68
};
69
70
struct
CalorimeterGeometryData
71
{
72
CalorimeterGeometryData
() :
73
nCrystalsInColumn
( 1 ),
nCrystalsInRow
( 1 ),
crystalWidth
( 0 ),
74
crystalHeight
( 0 ),
crystalLength
( 0 )
75
{}
76
77
G4int
nCrystalsInColumn
;
78
79
G4int
nCrystalsInRow
;
80
81
G4double
crystalWidth
;
82
83
G4double
crystalHeight
;
84
85
G4double
crystalLength
;
86
};
87
88
public
:
89
explicit
CexmcSetup
(
const
G4String
&
gdmlFile
=
"default.gdml"
,
90
G4bool
validateGDMLFile
=
true
);
91
92
G4VPhysicalVolume
*
Construct
(
void
);
93
94
public
:
95
const
G4AffineTransform
&
GetTargetTransform
(
void
)
const
;
96
97
const
G4AffineTransform
&
GetCalorimeterLeftTransform
(
void
)
const
;
98
99
const
G4AffineTransform
&
GetCalorimeterRightTransform
(
void
)
const
;
100
101
void
ConvertToCrystalGeometry
(
const
G4ThreeVector
& src,
102
G4int
& row,
G4int
& column,
G4ThreeVector
& dst )
const
;
103
104
const
CalorimeterGeometryData
&
GetCalorimeterGeometry
(
void
)
const
;
105
106
const
G4LogicalVolume
*
GetVolume
(
SpecialVolumeType
volume
)
const
;
107
108
G4bool
IsRightDetector
(
const
G4VPhysicalVolume
* pVolume )
const
;
109
110
G4bool
IsRightCalorimeter
(
const
G4VPhysicalVolume
* pVolume )
const
;
111
112
private
:
113
void
SetupSpecialVolumes
(
const
G4GDMLParser
& gdmlParser );
114
115
void
ReadTransforms
(
const
G4GDMLParser
& gdmlParser );
116
117
void
ReadCalorimeterGeometryData
(
const
G4LogicalVolume
* lVolume );
118
119
void
ReadRightDetectors
(
void
);
120
121
private
:
122
static
void
AssertAndAsignDetectorRole
(
123
CexmcDetectorRole
& detectorRole,
CexmcDetectorRole
value
);
124
125
static
void
RotateMatrix
(
const
G4ThreeVector
&
pos
,
126
G4RotationMatrix
& rm );
127
128
private
:
129
G4VPhysicalVolume
*
world
;
130
131
G4String
gdmlFile
;
132
133
G4bool
validateGDMLFile
;
134
135
G4bool
calorimeterRegionInitialized
;
136
137
G4bool
calorimeterGeometryDataInitialized
;
138
139
G4LogicalVolume
*
monitorVolume
;
140
141
G4LogicalVolume
*
vetoCounterVolume
;
142
143
G4LogicalVolume
*
calorimeterVolume
;
144
145
G4LogicalVolume
*
targetVolume
;
146
147
G4VPhysicalVolume
*
rightVetoCounter
;
148
149
G4VPhysicalVolume
*
rightCalorimeter
;
150
151
G4AffineTransform
targetTransform
;
152
153
G4AffineTransform
calorimeterLeftTransform
;
154
155
G4AffineTransform
calorimeterRightTransform
;
156
157
CalorimeterGeometryData
calorimeterGeometry
;
158
};
159
160
161
inline
const
G4AffineTransform
&
CexmcSetup::GetTargetTransform
(
void
)
const
162
{
163
return
targetTransform
;
164
}
165
166
167
inline
const
G4AffineTransform
&
CexmcSetup::GetCalorimeterLeftTransform
(
168
void
)
const
169
{
170
return
calorimeterLeftTransform
;
171
}
172
173
174
inline
const
G4AffineTransform
&
CexmcSetup::GetCalorimeterRightTransform
(
175
void
)
const
176
{
177
return
calorimeterRightTransform
;
178
}
179
180
181
inline
const
CexmcSetup::CalorimeterGeometryData
&
182
CexmcSetup::GetCalorimeterGeometry
(
void
)
const
183
{
184
return
calorimeterGeometry
;
185
}
186
187
188
inline
const
G4LogicalVolume
*
CexmcSetup::GetVolume
(
189
SpecialVolumeType
volume
)
const
190
{
191
switch
( volume )
192
{
193
case
Monitor
:
194
return
monitorVolume
;
195
case
VetoCounter
:
196
return
vetoCounterVolume
;
197
case
Calorimeter
:
198
return
calorimeterVolume
;
199
case
Target
:
200
return
targetVolume
;
201
default
:
202
return
NULL;
203
}
204
}
205
206
207
inline
G4bool
CexmcSetup::IsRightDetector
(
208
const
G4VPhysicalVolume
* pVolume )
const
209
{
210
if
( pVolume ==
rightVetoCounter
|| pVolume ==
rightCalorimeter
)
211
return
true
;
212
213
return
false
;
214
}
215
216
217
inline
G4bool
CexmcSetup::IsRightCalorimeter
(
218
const
G4VPhysicalVolume
* pVolume )
const
219
{
220
if
( pVolume ==
rightCalorimeter
)
221
return
true
;
222
223
return
false
;
224
}
225
226
227
#endif
228
geant4
tree
geant4-10.6-release
examples
advanced
ChargeExchangeMC
include
CexmcSetup.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:56
using
1.8.2 with
ECCE GitHub integration