ATLAS Offline Software
Public Member Functions | Private Member Functions | List of all members
InDet::SiLayerBuilder Class Reference

#include <SiLayerBuilder.h>

Inheritance diagram for InDet::SiLayerBuilder:
Collaboration diagram for InDet::SiLayerBuilder:

Public Member Functions

 SiLayerBuilder (const std::string &, const std::string &, const IInterface *)
 AlgTool style constructor. More...
 
virtual ~SiLayerBuilder ()=default
 Destructor. More...
 
virtual StatusCode initialize () override
 AlgTool initialize method. More...
 
virtual std::unique_ptr< const std::vector< Trk::CylinderLayer * > > cylindricalLayers () const override final
 LayerBuilder interface method - returning Barrel-like layers. More...
 
virtual std::unique_ptr< const std::vector< Trk::DiscLayer * > > discLayers () const override final
 LayerBuilder interface method - returning Endcap-like layers. More...
 
virtual std::unique_ptr< const std::vector< Trk::PlaneLayer * > > planarLayers () const override final
 LayerBuilder interface method - returning Planar-like layers. More...
 
virtual const std::string & identification () const override final
 Name identification. More...
 

Private Member Functions

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 Pixels More...
 
std::unique_ptr< std::vector< Trk::DiscLayer * > > createRingLayers () const
 create the disc layers, it is dedicated to ITk implementation of the endcap rings. More...
 

Detailed Description

The SiLayerBuilder parses the senstive detector elments and orders them onto a Layer surface.

It also uses the SiNumerology to construct the BinUtility and then orders the representing detector surfaces on the layers.

It performs an automated detector if an equidistant or non-equidistant binning is to be used for the barrel case.

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch

Definition at line 38 of file SiLayerBuilder.h.

Constructor & Destructor Documentation

◆ SiLayerBuilder()

InDet::SiLayerBuilder::SiLayerBuilder ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

AlgTool style constructor.

Definition at line 19 of file SiLayerBuilder.cxx.

19  :
20  base_class(t,n,p)
21 {
22 }

◆ ~SiLayerBuilder()

virtual InDet::SiLayerBuilder::~SiLayerBuilder ( )
virtualdefault

Destructor.

Member Function Documentation

◆ createDiscLayers()

std::unique_ptr< std::vector< Trk::DiscLayer * > > InDet::SiLayerBuilder::createDiscLayers ( std::unique_ptr< std::vector< Trk::DiscLayer * > >  discLayers = nullptr) const
private

create the disc layers, if no vector is given, then it's the first pass, else it's the DBM for the Pixels

Definition at line 67 of file SiLayerBuilder.cxx.

67  {
68 
69  // get general layout
70  const InDetDD::SiDetectorElementCollection* siDetElementCollectionPtr = m_siMgr->getDetectorElementCollection();
71  return createDiscLayersImpl(*siDetElementCollectionPtr, std::move(discLayers));
72 }

◆ createRingLayers()

std::unique_ptr< std::vector< Trk::DiscLayer * > > InDet::SiLayerBuilder::createRingLayers ( ) const
private

create the disc layers, it is dedicated to ITk implementation of the endcap rings.

LayerBuilder interface method - returning ring-like layers.

Used for ITk specific case.

this is ITk pixel specific and doesn't include DBM modules

Definition at line 78 of file SiLayerBuilder.cxx.

78  {
79 
80  // get general layout
81  const InDetDD::SiDetectorElementCollection* siDetElementCollectionPtr = m_siMgr->getDetectorElementCollection();
82  return createRingLayersImpl(*siDetElementCollectionPtr);
83 }

◆ cylindricalLayers()

std::unique_ptr< const std::vector< Trk::CylinderLayer * > > InDet::SiLayerBuilder::cylindricalLayers ( ) const
finaloverridevirtual

LayerBuilder interface method - returning Barrel-like layers.

Definition at line 34 of file SiLayerBuilder.cxx.

35 {
36  const InDetDD::SiDetectorElementCollection* siDetElementCollectionPtr = m_siMgr->getDetectorElementCollection();
37  return cylindricalLayersImpl(*siDetElementCollectionPtr);
38 }

◆ discLayers()

std::unique_ptr< const std::vector< Trk::DiscLayer * > > InDet::SiLayerBuilder::discLayers ( ) const
finaloverridevirtual

LayerBuilder interface method - returning Endcap-like layers.

Definition at line 42 of file SiLayerBuilder.cxx.

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 }

◆ identification()

const std::string & InDet::SiLayerBuilder::identification ( ) const
inlinefinaloverridevirtual

Name identification.

Definition at line 79 of file SiLayerBuilder.h.

80  { return m_identification; }

◆ initialize()

StatusCode InDet::SiLayerBuilder::initialize ( )
overridevirtual

AlgTool initialize method.

Definition at line 26 of file SiLayerBuilder.cxx.

27 {
29  return StatusCode::SUCCESS;
30 }

◆ planarLayers()

std::unique_ptr< const std::vector< Trk::PlaneLayer * > > InDet::SiLayerBuilder::planarLayers ( ) const
inlinefinaloverridevirtual

LayerBuilder interface method - returning Planar-like layers.

Definition at line 76 of file SiLayerBuilder.h.

77  { return 0; }

The documentation for this class was generated from the following files:
InDetDD::SiDetectorElementCollection
Definition: SiDetectorElementCollection.h:30
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
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
beamspotman.n
n
Definition: beamspotman.py:731
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
InDet::SiLayerBuilderImpl::initialize
virtual StatusCode initialize() override
AlgTool initialize method.
Definition: SiLayerBuilderImpl.cxx:34