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;
129 return StatusCode::SUCCESS;
140 return StatusCode::SUCCESS;
148 bool barrelDone =
false;
149 for (
int b = -1; b <= 1; ++b) {
151 msg(MSG::INFO) <<
" Found barrel with index " << b << std::endl;
155 msg(MSG::INFO) <<
" Number of barrel layers = " << n.numLayers() << std::endl;
157 n.setNumEtaModulesForLayer(l->first, l->second.nEtaModules());
159 n.setNumPhiModulesForLayer(l->first, l->second.begin()->second.nPhiModules());
160 msg(MSG::INFO) <<
" layer = " << l->first <<
" has " << n.numEtaModulesForLayer(l->first) <<
161 " etaModules each with " << n.numPhiModulesForLayer(l->first) <<
" phi modules" << std::endl;
169 bool endcapDone =
false;
170 for (
int ec = -2; ec <= 2; ec += 4) {
172 msg(MSG::INFO) <<
" Found endcap with index " << ec << std::endl;
176 msg(MSG::INFO) <<
" Number of endcap layers = " << n.numDiskLayers() << std::endl;
178 n.setNumDisksForLayer(l->first, l->second.nEtaModules());
179 msg(MSG::INFO) <<
" Layer " << l->first <<
" has " << n.numDisksForLayer(l->first) <<
" disks" << std::endl;
180 for (EtaModule::iterator
eta = l->second.begin();
eta != l->second.end(); ++
eta) {
181 n.setNumPhiModulesForLayerDisk(l->first,
eta->first,
eta->second.nPhiModules());
182 msg(MSG::DEBUG) <<
" Disk " <<
eta->first <<
" has " <<
183 n.numPhiModulesForLayerDisk(l->first,
eta->first) <<
" phi modules" << std::endl;
195 for (LayerDisk::iterator ld = bec->second.begin(); ld != bec->second.end(); ++ld) {
196 for (EtaModule::iterator
eta = ld->second.begin();
eta != ld->second.end(); ++
eta) {
197 for (PhiModule::iterator
phi =
eta->second.begin();
phi !=
eta->second.end(); ++
phi) {
198 for (Side::iterator side =
phi->second.begin(); side !=
phi->second.end(); ++side) {
205 ATH_MSG_INFO(
"Total number of wafers added is " << totalWafers);
210 n.setMaxNumEtaCells(1);
211 for (
int d = 0; d <
manager->numDesigns(); ++d) {
212 n.setMaxNumPhiCells(
manager->getPixelDesign(d)->rows());
213 n.setMaxNumEtaCells(
manager->getPixelDesign(d)->columns());
215 ATH_MSG_INFO(
"Max. eta cells is " << n.maxNumEtaCells());
216 ATH_MSG_INFO(
"Max. phi cells is " << n.maxNumPhiCells());
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
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 ...
Base class for Pixel and SCT Detector managers.
Class to extract numerology for Pixel and SCT.
This is an Identifier helper class for the Pixel subdetector.
size_type wafer_hash_max() const