ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Simulation
G4Atlas
G4AtlasTools
src
PolyconicalEnvelope.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// Base class
6
#include "
G4AtlasTools/DetectorGeometryBase.h
"
7
#include "
G4AtlasTools/PolyconicalEnvelope.h
"
8
9
#include "G4NistManager.hh"
10
#include "G4LogicalVolume.hh"
11
#include "G4PVPlacement.hh"
12
#include "G4SystemOfUnits.hh"
13
#include "G4Polycone.hh"
14
15
// Geant4 includes used in functions
16
17
PolyconicalEnvelope::PolyconicalEnvelope
(
const
std::string&
type
,
const
std::string& name,
const
IInterface* parent)
18
:
DetectorGeometryBase
(
type
,name,parent)
19
{
20
ATH_MSG_VERBOSE
(
"PolyconicalEnvelope constructor for "
<< name );
21
}
22
23
void
PolyconicalEnvelope::BuildGeometry
()
24
{
25
ATH_MSG_VERBOSE
(
"PolyconicalEnvelope::BuildGeometry(): Starting"
);
26
27
// Get nist material manager
28
G4NistManager* nist = G4NistManager::Instance();
29
30
G4Material* mat = nist->FindOrBuildMaterial(
m_materialName
.value());
31
32
if
(!
m_surfaceNr
)
m_surfaceNr
=
m_ZSurfaces
.size();
33
34
if
(
m_innerRadii
.size() !=
m_surfaceNr
)
35
ATH_MSG_ERROR
(
"Size of inner radii vector "
<<
m_innerRadii
.size()<<
36
" differs from nr. of surfaces "
<<
m_surfaceNr
<<
"!!!"
);
37
if
(
m_outerRadii
.size() !=
m_surfaceNr
)
38
ATH_MSG_ERROR
(
"Size of outer radii vector "
<<
m_outerRadii
.size()<<
39
" differs from nr. of surfaces "
<<
m_surfaceNr
<<
"!!!"
);
40
if
(
m_ZSurfaces
.size() !=
m_surfaceNr
)
41
ATH_MSG_ERROR
(
"Size of surface Z vector "
<<
m_ZSurfaces
.size()<<
42
" differs from nr. of surfaces "
<<
m_surfaceNr
<<
"!!!"
);
43
44
double
* zv=
new
double
[
m_surfaceNr
];
45
double
* iv=
new
double
[
m_surfaceNr
];
46
double
* ov=
new
double
[
m_surfaceNr
];
47
48
for
(
unsigned
int
i=0;i<
m_surfaceNr
;i++)
49
{
50
zv[i]=
m_ZSurfaces
[i];
51
iv[i]=
m_innerRadii
[i];
52
ov[i]=
m_outerRadii
[i];
53
}
54
55
G4VSolid* envSolid=
new
G4Polycone(
m_detectorName
.value(),
m_startphi
,
m_deltaphi
,
m_surfaceNr
,zv,iv,ov);
56
57
G4LogicalVolume* logicWorld =
new
G4LogicalVolume(envSolid,mat,
m_detectorName
.value());
58
59
m_envelope
.theEnvelope=logicWorld;
60
61
delete
[] zv;
62
delete
[] iv;
63
delete
[] ov;
64
ATH_MSG_VERBOSE
(
"PolyconicalEnvelope::BuildGeometry(): Finished"
);
65
return
;
66
}
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
DetectorGeometryBase.h
PolyconicalEnvelope.h
DetectorGeometryBase::DetectorGeometryBase
DetectorGeometryBase(const std::string &type, const std::string &name, const IInterface *parent)
Definition
DetectorGeometryBase.cxx:13
DetectorGeometryBase::m_envelope
Envelope m_envelope
Definition
DetectorGeometryBase.h:70
DetectorGeometryBase::m_detectorName
Gaudi::Property< std::string > m_detectorName
Definition
DetectorGeometryBase.h:71
PolyconicalEnvelope::m_outerRadii
Gaudi::Property< std::vector< double > > m_outerRadii
Definition
PolyconicalEnvelope.h:32
PolyconicalEnvelope::m_surfaceNr
Gaudi::Property< unsigned int > m_surfaceNr
Definition
PolyconicalEnvelope.h:30
PolyconicalEnvelope::m_materialName
Gaudi::Property< std::string > m_materialName
Definition
PolyconicalEnvelope.h:29
PolyconicalEnvelope::m_startphi
Gaudi::Property< double > m_startphi
Definition
PolyconicalEnvelope.h:34
PolyconicalEnvelope::m_innerRadii
Gaudi::Property< std::vector< double > > m_innerRadii
Definition
PolyconicalEnvelope.h:31
PolyconicalEnvelope::m_ZSurfaces
Gaudi::Property< std::vector< double > > m_ZSurfaces
Definition
PolyconicalEnvelope.h:33
PolyconicalEnvelope::BuildGeometry
virtual void BuildGeometry() override final
virtual methods being implemented here
Definition
PolyconicalEnvelope.cxx:23
PolyconicalEnvelope::m_deltaphi
Gaudi::Property< double > m_deltaphi
Definition
PolyconicalEnvelope.h:35
PolyconicalEnvelope::PolyconicalEnvelope
PolyconicalEnvelope(const std::string &type, const std::string &name, const IInterface *parent)
Definition
PolyconicalEnvelope.cxx:17
type
Generated on
for ATLAS Offline Software by
1.17.0