ATLAS Offline Software
AtlasGeometryCommon
GeoModelEnvelopes
src
ForDetEnvelopeFactory.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
ForDetEnvelopeFactory.h
"
6
7
#include "
GeoModelInterfaces/StoredMaterialManager.h
"
8
#include "GeoModelKernel/GeoMaterial.h"
9
#include "GeoModelKernel/GeoTube.h"
10
#include "GeoModelKernel/GeoLogVol.h"
11
#include "GeoModelKernel/GeoNameTag.h"
12
#include "GeoModelKernel/GeoPhysVol.h"
13
#include "GeoModelKernel/GeoShapeShift.h"
14
#include "GeoModelKernel/GeoShapeUnion.h"
15
16
#include "
StoreGate/StoreGateSvc.h
"
17
#include "GaudiKernel/SystemOfUnits.h"
18
19
#include <vector>
20
21
22
ForDetEnvelopeFactory::ForDetEnvelopeFactory
(
StoreGateSvc
*
detStore
)
23
: m_detectorManager(0),
24
m_materialManager(0),
25
m_detectorStore(
detStore
)
26
{
27
}
28
29
ForDetEnvelopeFactory::~ForDetEnvelopeFactory
()
30
{
31
}
32
33
void
ForDetEnvelopeFactory::create
(GeoPhysVol *world)
34
{
35
if
(StatusCode::SUCCESS !=
m_detectorStore
->
retrieve
(
m_materialManager
, std::string(
"MATERIALS"
))) {
36
return
;
37
}
38
39
// Get the materials
40
const
GeoMaterial* air =
m_materialManager
->
getMaterial
(
"std::Air"
);
41
42
// Build boolean shape: union of two tubes
43
const
GeoTube* tube1 =
new
GeoTube(0.,2000.*
Gaudi::Units::mm
,188750.*
Gaudi::Units::mm
);
44
GeoTube* tube2 =
new
GeoTube(0.,2000.*
Gaudi::Units::mm
,188750.*
Gaudi::Units::mm
);
45
GeoTrf::TranslateZ3D xfRelativeA(211250.*
Gaudi::Units::mm
);
46
GeoTrf::TranslateZ3D xfRelativeC(-211250.*
Gaudi::Units::mm
);
47
48
const
GeoShapeShift& envShape1 = (*tube1)<<xfRelativeA;
49
const
GeoShapeUnion& envShape = envShape1.add((*tube2)<<xfRelativeC);
50
51
GeoLogVol* lvEnv =
new
GeoLogVol(
"ForDetEnvelope"
,&envShape,air);
52
GeoPhysVol* pvEnv =
new
GeoPhysVol(lvEnv);
53
54
GeoNameTag *
tag
=
new
GeoNameTag(
"ForDetEnvelope"
);
55
world->add(
tag
);
56
world->add(pvEnv);
57
58
m_detectorManager
=
new
ForDetEnvelopeManager
();
59
m_detectorManager
->
addTreeTop
(pvEnv);
60
}
61
62
63
const
ForDetEnvelopeManager
*
ForDetEnvelopeFactory::getDetectorManager
()
const
64
{
65
return
m_detectorManager
;
66
}
67
ForDetEnvelopeFactory::ForDetEnvelopeFactory
ForDetEnvelopeFactory(StoreGateSvc *pDetStore)
Definition:
ForDetEnvelopeFactory.cxx:22
ForDetEnvelopeManager
Definition:
ForDetEnvelopeManager.h:14
ForDetEnvelopeFactory::m_detectorManager
ForDetEnvelopeManager * m_detectorManager
Definition:
ForDetEnvelopeFactory.h:38
ForDetEnvelopeFactory::getDetectorManager
virtual const ForDetEnvelopeManager * getDetectorManager() const override
Definition:
ForDetEnvelopeFactory.cxx:63
ForDetEnvelopeFactory::m_detectorStore
StoreGateSvc * m_detectorStore
Definition:
ForDetEnvelopeFactory.h:41
StoreGateSvc::retrieve
StatusCode retrieve(const T *&ptr) const
Retrieve the default object into a const T*.
ForDetEnvelopeFactory::m_materialManager
StoredMaterialManager * m_materialManager
Definition:
ForDetEnvelopeFactory.h:40
ForDetEnvelopeFactory::create
virtual void create(GeoPhysVol *world) override
Definition:
ForDetEnvelopeFactory.cxx:33
StoreGateSvc
The Athena Transient Store API.
Definition:
StoreGateSvc.h:128
ForDetEnvelopeManager::addTreeTop
void addTreeTop(PVLink)
Definition:
ForDetEnvelopeManager.cxx:26
python.PyKernel.detStore
detStore
Definition:
PyKernel.py:41
StoredMaterialManager.h
python.SystemOfUnits.mm
int mm
Definition:
SystemOfUnits.py:83
ForDetEnvelopeFactory.h
StoredMaterialManager::getMaterial
virtual const GeoMaterial * getMaterial(const std::string &name)=0
ForDetEnvelopeFactory::~ForDetEnvelopeFactory
~ForDetEnvelopeFactory()
Definition:
ForDetEnvelopeFactory.cxx:29
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition:
CaloCondBlobAlgs_fillNoiseFromASCII.py:24
StoreGateSvc.h
Generated on Tue Jul 2 2024 21:15:48 for ATLAS Offline Software by
1.8.18