ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetDetDescr
InDetTrackingGeometry
src
SiLayerBuilder.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
InDetTrackingGeometry/SiLayerBuilder.h
"
6
// InDet include
7
#include "
InDetReadoutGeometry/SiDetectorManager.h
"
8
#include "
InDetReadoutGeometry/SiDetectorElement.h
"
9
#include "
InDetReadoutGeometry/SiDetectorElementCollection.h
"
10
// Trk inlcude
11
#include "
TrkDetDescrUtils/BinnedArray.h
"
12
#include "
TrkGeometry/CylinderLayer.h
"
13
#include "
TrkGeometry/DiscLayer.h
"
14
#include "
TrkSurfaces/Surface.h
"
15
// STL
16
#include <map>
17
18
// constructor
19
InDet::SiLayerBuilder::SiLayerBuilder
(
const
std::string& t,
const
std::string& n,
const
IInterface* p) :
20
base_class(t,n,p)
21
{
22
}
23
24
// Athena standard methods
25
// initialize
26
StatusCode
InDet::SiLayerBuilder::initialize
()
27
{
28
ATH_CHECK
(
InDet::SiLayerBuilderImpl::initialize
());
29
return
StatusCode::SUCCESS;
30
}
31
32
34
std::unique_ptr<const std::vector<Trk::CylinderLayer*> >
InDet::SiLayerBuilder::cylindricalLayers
()
const
35
{
36
const
InDetDD::SiDetectorElementCollection
* siDetElementCollectionPtr = m_siMgr->getDetectorElementCollection();
37
return
cylindricalLayersImpl(*siDetElementCollectionPtr);
38
}
39
40
42
std::unique_ptr<const std::vector<Trk::DiscLayer* > >
InDet::SiLayerBuilder::discLayers
()
const
43
{
44
// sanity check for ID Helper
45
if
(!m_pixIdHelper && !m_sctIdHelper){
46
ATH_MSG_ERROR
(
"Neither Pixel nor SCT Detector Manager or ID Helper could be retrieved - giving up."
);
47
return
nullptr
;
48
}
49
50
// check for DBMS
51
int
nDBMLayers = m_siMgr->numerology().numEndcapsDBM();
52
if
(!nDBMLayers)
return
((m_pixelCase and m_useRingLayout) ?
createRingLayers
() :
createDiscLayers
());
53
54
ATH_MSG_DEBUG
(
"Found "
<< m_siMgr->numerology().numEndcapsDBM() <<
" DBM layers active, building first ECs, then DBMS"
);
55
std::unique_ptr<std::vector<Trk::DiscLayer*> > ecLayers =
createDiscLayers
();
56
if
(ecLayers) {
57
ATH_MSG_VERBOSE
(
"Created "
<< ecLayers->size() <<
" endcap layers w/o DBM."
);
58
ecLayers =
createDiscLayers
(std::move(ecLayers));
59
ATH_MSG_VERBOSE
(
"Created "
<< ecLayers->size() <<
" endcap layers with DBM."
);
60
}
61
return
ecLayers;
62
63
}
64
65
66
std::unique_ptr<std::vector< Trk::DiscLayer*> >
67
InDet::SiLayerBuilder::createDiscLayers
(std::unique_ptr<std::vector< Trk::DiscLayer*> >
discLayers
)
const
{
68
69
// get general layout
70
const
InDetDD::SiDetectorElementCollection
* siDetElementCollectionPtr = m_siMgr->getDetectorElementCollection();
71
return
createDiscLayersImpl(*siDetElementCollectionPtr, std::move(
discLayers
));
72
}
73
74
77
std::unique_ptr<std::vector< Trk::DiscLayer*> >
78
InDet::SiLayerBuilder::createRingLayers
()
const
{
79
80
// get general layout
81
const
InDetDD::SiDetectorElementCollection
* siDetElementCollectionPtr = m_siMgr->getDetectorElementCollection();
82
return
createRingLayersImpl(*siDetElementCollectionPtr);
83
}
84
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x,...)
Definition
AthMsgStreamMacros.h:43
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x,...)
Definition
AthMsgStreamMacros.h:47
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x,...)
Definition
AthMsgStreamMacros.h:42
BinnedArray.h
CylinderLayer.h
DiscLayer.h
SiDetectorElementCollection.h
SiDetectorElement.h
SiDetectorManager.h
SiLayerBuilder.h
Surface.h
InDetDD::SiDetectorElementCollection
Class to hold the SiDetectorElement objects to be put in the detector store.
Definition
SiDetectorElementCollection.h:27
InDet::SiLayerBuilderImpl::initialize
virtual StatusCode initialize() override
AlgTool initialize method.
Definition
SiLayerBuilderImpl.cxx:34
InDet::SiLayerBuilder::createRingLayers
std::unique_ptr< std::vector< Trk::DiscLayer * > > createRingLayers() const
create the disc layers, it is dedicated to ITk implementation of the endcap rings.
Definition
SiLayerBuilder.cxx:78
InDet::SiLayerBuilder::discLayers
virtual std::unique_ptr< const std::vector< Trk::DiscLayer * > > discLayers() const override final
LayerBuilder interface method - returning Endcap-like layers.
Definition
SiLayerBuilder.cxx:42
InDet::SiLayerBuilder::createDiscLayers
std::unique_ptr< std::vector< Trk::DiscLayer * > > createDiscLayers(std::unique_ptr< std::vector< Trk::DiscLayer * > > discLayers=nullptr) const
create the disc layers, if no vector is given, then it's the first pass, else it's the DBM for the Pi...
Definition
SiLayerBuilder.cxx:67
InDet::SiLayerBuilder::initialize
virtual StatusCode initialize() override
AlgTool initialize method.
Definition
SiLayerBuilder.cxx:26
InDet::SiLayerBuilder::cylindricalLayers
virtual std::unique_ptr< const std::vector< Trk::CylinderLayer * > > cylindricalLayers() const override final
LayerBuilder interface method - returning Barrel-like layers.
Definition
SiLayerBuilder.cxx:34
InDet::SiLayerBuilder::SiLayerBuilder
SiLayerBuilder(const std::string &, const std::string &, const IInterface *)
AlgTool style constructor.
Definition
SiLayerBuilder.cxx:19
Generated on
for ATLAS Offline Software by
1.17.0