12#include <GeoModelKernel/GeoPhysVol.h>
23 const std::string &name,
24 const IInterface *parent)
36 ATH_CHECK(detStore()->retrieve(theExpt,
"ATLAS"));
37 const PixelID *idHelper =
nullptr;
38 ATH_CHECK(detStore()->retrieve(idHelper,
"PixelID"));
40 m_commonItems = std::make_unique<InDetDD::SiCommonItems>(idHelper);
46 std::string
node{
"Pixel"};
47 std::string table{
"PIXXDD"};
52 node =
"InnerDetector";
55 ATH_MSG_ERROR(
"No ITk Pixel geometry found. ITk Pixel can not be built.");
56 return StatusCode::FAILURE;
71 manager->addAlignFolderType(alignFolderType);
104 const GeoVPhysVol* topVolume =
createTopVolume(world, gmxInterface,
node, table,
"",
"",sqlreader);
110 manager->addTreeTop(topVolume);
115 return StatusCode::FAILURE;
124 return StatusCode::SUCCESS;
135 return StatusCode::SUCCESS;
143 bool barrelDone =
false;
144 for (
int b = -1; b <= 1; ++b) {
146 msg(MSG::DEBUG) <<
" Found barrel with index " << b << std::endl;
150 msg(MSG::DEBUG) <<
" Number of barrel layers = " << n.numLayers() << std::endl;
152 n.setNumEtaModulesForLayer(l->first, l->second.nEtaModules());
154 n.setNumPhiModulesForLayer(l->first, l->second.begin()->second.nPhiModules());
155 msg(MSG::DEBUG) <<
" layer = " << l->first <<
" has " << n.numEtaModulesForLayer(l->first) <<
156 " etaModules each with " << n.numPhiModulesForLayer(l->first) <<
" phi modules" << std::endl;
164 bool endcapDone =
false;
165 for (
int ec = -2; ec <= 2; ec += 4) {
167 msg(MSG::DEBUG) <<
" Found endcap with index " << ec << std::endl;
171 msg(MSG::DEBUG) <<
" Number of endcap layers = " << n.numDiskLayers() << std::endl;
173 n.setNumDisksForLayer(l->first, l->second.nEtaModules());
174 msg(MSG::DEBUG) <<
" Layer " << l->first <<
" has " << n.numDisksForLayer(l->first) <<
" disks" << std::endl;
175 for (EtaModule::iterator
eta = l->second.begin();
eta != l->second.end(); ++
eta) {
176 n.setNumPhiModulesForLayerDisk(l->first,
eta->first,
eta->second.nPhiModules());
177 msg(MSG::DEBUG) <<
" Disk " <<
eta->first <<
" has " <<
178 n.numPhiModulesForLayerDisk(l->first,
eta->first) <<
" phi modules" << std::endl;
190 for (LayerDisk::iterator ld = bec->second.begin(); ld != bec->second.end(); ++ld) {
191 for (EtaModule::iterator
eta = ld->second.begin();
eta != ld->second.end(); ++
eta) {
192 for (PhiModule::iterator
phi =
eta->second.begin();
phi !=
eta->second.end(); ++
phi) {
193 for (Side::iterator side =
phi->second.begin(); side !=
phi->second.end(); ++side) {
200 ATH_MSG_INFO(
"Total number of wafers added is " << totalWafers);
205 n.setMaxNumEtaCells(1);
206 for (
int d = 0; d <
manager->numDesigns(); ++d) {
207 n.setMaxNumPhiCells(
manager->getPixelDesign(d)->rows());
208 n.setMaxNumEtaCells(
manager->getPixelDesign(d)->columns());
210 ATH_MSG_INFO(
"Max. eta cells is " << n.maxNumEtaCells());
211 ATH_MSG_INFO(
"Max. phi cells is " << n.maxNumPhiCells());
213 manager->numerology() = std::move(n);
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_INFO(x,...)
#define ATH_MSG_FATAL(x,...)
GeoPhysVol * getPhysVol()
Destructor.
void addManager(const GeoVDetectorManager *)
void buildReadoutGeometryFromSqlite(IRDBAccessSvc *rdbAccessSvc, GeoModelIO::ReadGeoModel *sqlreader)
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated pixel ...
Class to extract numerology for Pixel and SCT.
This is an Identifier helper class for the Pixel subdetector.
size_type wafer_hash_max() const
static constexpr CLID ID()