ATLAS Offline Software
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 
6 // InDet include
10 // Trk inlcude
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
27 {
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*> >
79 
80  // get general layout
81  const InDetDD::SiDetectorElementCollection* siDetElementCollectionPtr = m_siMgr->getDetectorElementCollection();
82  return createRingLayersImpl(*siDetElementCollectionPtr);
83 }
84 
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
InDetDD::SiDetectorElementCollection
Definition: SiDetectorElementCollection.h:30
Surface.h
BinnedArray.h
DiscLayer.h
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
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::SiLayerBuilder
SiLayerBuilder(const std::string &, const std::string &, const IInterface *)
AlgTool style constructor.
Definition: SiLayerBuilder.cxx:19
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
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::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
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CylinderLayer.h
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
SiDetectorElementCollection.h
InDet::SiLayerBuilder::initialize
virtual StatusCode initialize() override
AlgTool initialize method.
Definition: SiLayerBuilder.cxx:26
SiDetectorElement.h
InDet::SiLayerBuilderImpl::initialize
virtual StatusCode initialize() override
AlgTool initialize method.
Definition: SiLayerBuilderImpl.cxx:34
SiLayerBuilder.h
SiDetectorManager.h