35 const std::string& name,
36 const IInterface * parent)
48 declareInterface<IGeometryManagerTool>(
this);
160 return StatusCode::FAILURE;
162 return StatusCode::SUCCESS;
170 return StatusCode::SUCCESS;
221 case 12:
case 16:
case 2:
case 26:
case 27:
case 3:
226 ATH_MSG_FATAL(
"This level is not supported with the configured geometry");
227 ATH_MSG_FATAL(
"The pixel barrel has "<<
m_detManager->numerology().numLayers()<<
" layers; Only 3 layer geometries supported");
236 ATH_MSG_FATAL(
"This level is not supported with the configured geometry");
237 ATH_MSG_FATAL(
"The pixel barrel has "<<
m_detManager->numerology().numLayers()<<
" layers; Only 3 layer geometries supported");
255 case 12:
case 16:
case 2:
case 3:
302 ATH_MSG_INFO(
"Total number of degrees of freedom: "<<nDoF);
317 ATH_MSG_INFO(
" When checking for IBL-Layer, layer "<<iLayer<<
" not present");
321 if(noSkipEtaZero>0 &&
m_detManager->numerology().skipEtaZeroForLayer(iLayer)){
400 ATH_MSG_INFO(
"Preparing the Pixel geometry for L1 : whole Pixel");
407 unsigned int pixelmaxHash =
m_idHelper->wafer_hash_max();
417 pixel->setName(
"Pixel");
459 (*pixelIdHashMap)[idHash] =
pixel;
464 ATH_MSG_DEBUG(
"-------------------------------------------------------");
469 ATH_MSG_DEBUG(
"Pixel L1 module successfully added to the list");
479 ATH_MSG_INFO(
"Preparing the Pixel geometry for L11 : IBL + rest of pixel detector");
482 ATH_MSG_WARNING(
"No IBL in geometry; Maybe this is not the level you want to use");
488 unsigned int maxHash =
m_idHelper->wafer_hash_max();
502 pixel_old->
setName(
"Pixel/oldPixel");
550 ATH_MSG_DEBUG(
"-------------------------------------------------------");
576 ATH_MSG_INFO(
"Preparing the Pixel Barrel geometry for L12 : whole barrel");
588 unsigned int maxHash =
m_idHelper->wafer_hash_max();
598 mod->setName(
"Pixel/Barrel");
601 mod->setIdentifier(
m_idHelper->wafer_id(0, 0, 0, 0));
611 for (
int iLayer = 0; iLayer <
m_detManager->numerology().numLayers(); iLayer++) {
618 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForLayer(iLayer); iPhi++) {
621 for (
int iEta =
m_detManager->numerology().beginEtaModuleForLayer(iLayer); iEta < m_detManager->numerology().endEtaModuleForLayer(iLayer)-
m_etaCorrection; iEta++) {
653 ATH_MSG_INFO(
"Preparing the Pixel Barrel geometry for L15 : 2 barrel halfs");
665 unsigned int maxHash =
m_idHelper->wafer_hash_max();
675 top->setName(
"Pixel/Barrel/Top-half");
679 bottom->
setName(
"Pixel/Barrel/Bottom-half");
689 for (
int iLayer = 0; iLayer <
m_detManager->numerology().numLayers(); iLayer++) {
696 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForLayer(iLayer); iPhi++) {
702 ATH_MSG_DEBUG(
"iPhi "<<iPhi<<
" is in top half of layer "<<iLayer);
706 ATH_MSG_DEBUG(
"iPhi "<<iPhi<<
" is in bottom half of layer "<<iLayer);
710 for (
int iEta =
m_detManager->numerology().beginEtaModuleForLayer(iLayer); iEta < m_detManager->numerology().endEtaModuleForLayer(iLayer)-
m_etaCorrection; iEta++) {
745 ATH_MSG_INFO(
"Preparing the Pixel Endcap geometry for L12 : 2 endcaps");
754 unsigned int maxHash =
m_idHelper->wafer_hash_max();
761 for (
int iEndcapIndex = 0; iEndcapIndex <
m_detManager->numerology().numEndcaps(); iEndcapIndex++) {
762 int iSide =
m_detManager->numerology().endcapId(iEndcapIndex);
766 mod->setIdentifier(
m_idHelper->wafer_id(iSide,0,0,0));
768 const std::string name = (iEndcapIndex == 0)?
"Pixel/EndcapA":
"Pixel/EndcapC";
779 for (
int iWheel = 0; iWheel <
m_detManager->numerology().numDisks(); iWheel++) {
784 for (
int iEta = 0; iEta <
m_detManager->numerology().numRingsForDisk(iWheel); iEta++) {
785 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForDiskRing(iWheel,iEta); iPhi++) {
809 ATH_MSG_DEBUG(
"Endcap:" << iSide <<
" , CoG (" << translation.x() <<
" , " << translation.y() <<
" , " << translation.z() <<
" ) " );
810 Amg::Transform3D localtoglobal = translation * Amg::RotationMatrix3D::Identity();
811 mod->setGlobalFrameToAlignFrameTransform(localtoglobal.inverse());
822 ATH_MSG_INFO(
"Preparing the Pixel Barrel geometry for L26 : IBL stave Pixel whole barrel");
836 unsigned int maxHash =
m_idHelper->wafer_hash_max();
847 pixel_old->
setName(
"Pixel/oldPixel");
856 for (
int iLayer = 0; iLayer <
m_detManager->numerology().numLayers(); iLayer++) {
871 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForLayer(iLayer); iPhi++) {
873 for (
int iEta =
m_detManager->numerology().beginEtaModuleForLayer(iLayer); iEta < m_detManager->numerology().endEtaModuleForLayer(iLayer)-
m_etaCorrection; iEta++) {
895 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForLayer(iLayer); iPhi++) {
903 mod->setIdentifier(
m_idHelper->wafer_id(0, iLayer, iPhi, 0));
905 std::string name=
"Pixel/Barrel/Layer_"+std::to_string(iLayer)+
"/PhiStave_"+std::to_string(iPhi);
916 for (
int iEta =
m_detManager->numerology().beginEtaModuleForLayer(iLayer); iEta < m_detManager->numerology().endEtaModuleForLayer(iLayer)-
m_etaCorrection; iEta++) {
938 mod->setGlobalFrameToAlignFrameTransform( alignModuleToGlobal.inverse() );
939 mod->resetAlignModuleToDetElementTransforms();
979 unsigned int maxHash =
m_idHelper->wafer_hash_max();
986 for (
int iLayer = 0; iLayer <
m_detManager->numerology().numLayers(); iLayer++) {
996 mod->setIdentifier(
m_idHelper->wafer_id(0, iLayer, 0, 0));
998 std::string name=
"Pixel/Barrel/Layer_" +std::to_string( iLayer);
1009 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForLayer(iLayer); iPhi++) {
1011 for (
int iEta =
m_detManager->numerology().beginEtaModuleForLayer(iLayer); iEta < m_detManager->numerology().endEtaModuleForLayer(iLayer)-
m_etaCorrection; iEta++) {
1041 ATH_MSG_INFO(
"Preparing the Pixel Barrel geometry for L22 "<<
m_detManager->numerology().numLayers()*2<<
" half-layers");
1054 unsigned int maxHash =
m_idHelper->wafer_hash_max();
1061 for (
int iLayer = 0; iLayer <
m_detManager->numerology().numLayers(); iLayer++) {
1078 unsigned int phi_top = 10;
1079 top->setIdentifier(
m_idHelper->wafer_id(0, iLayer, phi_top, 0));
1080 unsigned int phi_bottom = iLayer ? 30 : 20;
1083 std::string nametop=
"Pixel/Barrel/Layer_"+std::to_string(iLayer)+
"_top";
1084 top->setName(nametop);
1086 std::string namebottom=
"Pixel/Barrel/Layer_"+std::to_string(iLayer)+
"_bottom";
1094 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForLayer(iLayer); iPhi++) {
1100 ATH_MSG_DEBUG(
"iPhi "<<iPhi<<
" is in top half of layer "<<iLayer);
1104 ATH_MSG_DEBUG(
"iPhi "<<iPhi<<
" is in bottom half of layer "<<iLayer);
1108 for (
int iEta =
m_detManager->numerology().beginEtaModuleForLayer(iLayer); iEta < m_detManager->numerology().endEtaModuleForLayer(iLayer)-
m_etaCorrection; iEta++) {
1144 ATH_MSG_INFO(
"Preparing the Pixel Barrel geometry for L26 : IBL stave Pixel L2");
1159 unsigned int maxHash =
m_idHelper->wafer_hash_max();
1166 for (
int iLayer = 0; iLayer <
m_detManager->numerology().numLayers(); iLayer++) {
1176 mod->setIdentifier(
m_idHelper->wafer_id(0, iLayer, 0, 0));
1178 std::string name=
"Pixel/Barrel/Layer_" +std::to_string( iLayer);
1189 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForLayer(iLayer); iPhi++) {
1191 for (
int iEta =
m_detManager->numerology().beginEtaModuleForLayer(iLayer); iEta < m_detManager->numerology().endEtaModuleForLayer(iLayer)-
m_etaCorrection; iEta++) {
1215 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForLayer(iLayer); iPhi++) {
1223 mod->setIdentifier(
m_idHelper->wafer_id(0, iLayer, iPhi, 0));
1225 std::string name=
"Pixel/Barrel/Layer_"+std::to_string(iLayer)+
"/PhiStave_"+std::to_string(iPhi);
1236 for (
int iEta =
m_detManager->numerology().beginEtaModuleForLayer(iLayer); iEta < m_detManager->numerology().endEtaModuleForLayer(iLayer)-
m_etaCorrection; iEta++) {
1257 Amg::Transform3D alignModuleToGlobal = mod->calculateAlignModuleToGlobal();
1258 mod->setGlobalFrameToAlignFrameTransform( alignModuleToGlobal.inverse() );
1259 mod->resetAlignModuleToDetElementTransforms();
1277 ATH_MSG_INFO(
"Preparing the Pixel Barrel geometry for L27 : 112(132 incl. IBL) staves (ladders)");
1290 unsigned int maxHash =
m_idHelper->wafer_hash_max();
1297 for (
int iLayer = 0; iLayer <
m_detManager->numerology().numLayers(); iLayer++) {
1304 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForLayer(iLayer); iPhi++) {
1312 mod->setIdentifier(
m_idHelper->wafer_id(0, iLayer, iPhi, 0));
1314 std::string name=
"Pixel/Barrel/Layer_"+std::to_string(iLayer)+
"/PhiStave_"+std::to_string(iPhi);
1325 for (
int iEta =
m_detManager->numerology().beginEtaModuleForLayer(iLayer); iEta < m_detManager->numerology().endEtaModuleForLayer(iLayer)-
m_etaCorrection; iEta++) {
1347 throw std::logic_error(
"No detector element at the 0th eta wafer.");
1349 mod->setGlobalFrameToAlignFrameTransform(element->
transform().inverse());
1364 ATH_MSG_INFO(
"Preparing the Pixel Endcap geometry for L2 : 2 x 3 disks");
1376 unsigned int maxHash =
m_idHelper->wafer_hash_max();
1383 for (
int iEndcapIndex = 0; iEndcapIndex <
m_detManager->numerology().numEndcaps(); iEndcapIndex++) {
1384 int iSide =
m_detManager->numerology().endcapId(iEndcapIndex);
1385 for (
int iWheel = 0; iWheel <
m_detManager->numerology().numDisks(); iWheel++) {
1391 mod->setIdentifier(
m_idHelper->wafer_id(iSide,iWheel,0,0));
1392 const std::string iWheelStr{std::to_string(iWheel)};
1393 std::string name= (iEndcapIndex == 0) ?
"Pixel/EndcapA/Disk_" + iWheelStr :
"Pixel/EndcapC/Disk_" + iWheelStr;
1405 for (
int iEta = 0; iEta <
m_detManager->numerology().numRingsForDisk(iWheel); iEta++) {
1406 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForDiskRing(iWheel,iEta); iPhi++) {
1429 ATH_MSG_DEBUG(
"Endcap:" << iSide <<
" , CoG (" << translation.x() <<
" , " << translation.y() <<
" , " << translation.z() <<
" ) " );
1430 Amg::Transform3D localtoglobal = translation * Amg::RotationMatrix3D::Identity();
1431 mod->setGlobalFrameToAlignFrameTransform(localtoglobal.inverse());
1443 ATH_MSG_INFO(
"Preparing the Pixel Barrel geometry for L3 : module (wafer) level");
1452 unsigned int maxHash =
m_idHelper->wafer_hash_max();
1459 for (
int iLayer = 0; iLayer <
m_detManager->numerology().numLayers(); iLayer++) {
1467 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForLayer(iLayer); iPhi++) {
1469 for (
int iEta =
m_detManager->numerology().beginEtaModuleForLayer(iLayer); iEta < m_detManager->numerology().endEtaModuleForLayer(iLayer)-
m_etaCorrection; iEta++) {
1482 mod->setIdentifier(
m_idHelper->wafer_id(0, iLayer, iPhi, iEta));
1484 std::string name=
"Pixel/Barrel/Layer_"+std::to_string(iLayer)+
"/Phi_"+std::to_string(iPhi)+
"/Eta_"+std::to_string(iEta);
1511 mod->setGlobalFrameToAlignFrameTransform(element->
transform().inverse());
1517 ATH_MSG_WARNING(
"No element in module "<<mod->name()<<
". Ignoring this module.");
1530 ATH_MSG_INFO(
"Preparing the Pixel geometry for L3 : module (wafer) level");
1540 unsigned int maxHash =
m_idHelper->wafer_hash_max();
1547 for (
int iEndcapIndex = 0; iEndcapIndex <
m_detManager->numerology().numEndcaps(); iEndcapIndex++) {
1548 int iSide =
m_detManager->numerology().endcapId(iEndcapIndex);
1550 for (
int iWheel = 0; iWheel <
m_detManager->numerology().numDisks(); iWheel++) {
1556 for (
int iEta = 0; iEta <
m_detManager->numerology().numRingsForDisk(iWheel); iEta++) {
1557 for (
int iPhi = 0; iPhi <
m_detManager->numerology().numPhiModulesForDiskRing(iWheel,iEta); iPhi++) {
1569 mod->setIdentifier(
m_idHelper->wafer_id(iSide,iWheel,iPhi,iEta));
1571 std::string name = (iEndcapIndex == 0)?
"Pixel/EndcapA" :
"Pixel/EndcapC";
1573 name+=
"/Disk_"+std::to_string(iWheel)+
"/Phi_"+std::to_string(iPhi);
1602 mod->setGlobalFrameToAlignFrameTransform(element->
transform().inverse());
1608 ATH_MSG_WARNING(
"No element in module "<<mod->name()<<
". Ignoring this module.");
1623 ATH_MSG_INFO(
"Preparing the DBM Endcap geometry for L1 : 2 endcaps");
1625 unsigned int maxHash =
m_idHelper->wafer_hash_max();
1690 ATH_MSG_DEBUG(
"-------------------------------------------------------");
1701 ATH_MSG_DEBUG(
"Endcap:" << dbm1->
name() <<
" , CoG (" << translation.x() <<
" , " << translation.y() <<
" , " << translation.z() <<
" ) " );
1702 Amg::Transform3D localtoglobal = translation * Amg::RotationMatrix3D::Identity();
1716 ATH_MSG_DEBUG(
"Endcap:" << dbm2->
name() <<
" , CoG (" << translation.x() <<
" , " << translation.y() <<
" , " << translation.z() <<
" ) " );
1717 Amg::Transform3D localtoglobal = translation * Amg::RotationMatrix3D::Identity();
1730 ATH_MSG_INFO(
"Preparing the DBM telescope geometry for L2 : 8 telescopes");
1732 unsigned int maxHash =
m_idHelper->wafer_hash_max();
1739 std::vector<Trk::AlignModule*> mod_list;
1741 for (
unsigned int i = 0; i < 8; i++)
1746 std::string name = (i<4) ?
"Pixel/ECDBM"+std::to_string(i) :
"Pixel/EADBM"+std::to_string(i-4);
1748 if(i<4) mod->setIdentifier(
m_idHelper->wafer_id(-4, 0, i, 0));
1749 else mod->setIdentifier(
m_idHelper->wafer_id(4, 0, i-4, 0));
1751 mod_list.push_back(mod);
1775 unsigned int telescope = -1;
1780 mod = mod_list.at(telescope);
1784 telescope = int(4+
m_idHelper->phi_module(
id));
1785 mod = mod_list.at(telescope);
1801 ATH_MSG_DEBUG(
"-------------------------------------------------------");
1805 for(
unsigned int i=0;i<mod_list.size();i++) {
1807 ATH_MSG_DEBUG(
"Module "<<mod_list.at(i)->name()<<
" NOT selected");
1813 ATH_MSG_DEBUG(
"Endcap:" << mod_list.at(i)->name() <<
" , CoG (" << translation.x() <<
" , " << translation.y() <<
" , " << translation.z() <<
" ) " );
1814 Amg::Transform3D localtoglobal = translation * Amg::RotationMatrix3D::Identity();
1815 mod_list.at(i)->setGlobalFrameToAlignFrameTransform(localtoglobal.inverse());
1828 ATH_MSG_INFO(
"Preparing the DBM module geometry for L3 : 24 modules");
1830 unsigned int maxHash =
m_idHelper->wafer_hash_max();
1856 std::string name = (
m_idHelper->barrel_ec(
id)==-4) ?
"Pixel/ECDBM" :
"Pixel/EADBM";
1857 name +=
"/Disk_"+std::to_string(
m_idHelper->layer_disk(
id))+
"/Sector_"+std::to_string(
m_idHelper->phi_module(
id));
1879 mod->setGlobalFrameToAlignFrameTransform(element->
transform().inverse());
1885 ATH_MSG_WARNING(
"No element in module "<<mod->name()<<
". Ignoring this module.");
1910 for(
unsigned int ipar=0;ipar<fullModPars->
size();++ipar) {
1914 Identifier modID = ((
module->detElementCollection(Trk::AlignModule::Pixel))->at(0))->identify();
1917 ATH_MSG_DEBUG(
"Pixel barrel module with id "<<AlimodID);
1918 if( (fullModPars->at(ipar)->paramType() == Trk::AlignModule::TransX && m_alignBarrelX)
1919 || (fullModPars->at(ipar)->paramType() == Trk::AlignModule::TransY && m_alignBarrelY)
1920 || (fullModPars->at(ipar)->paramType() == Trk::AlignModule::TransZ && m_alignBarrelZ)
1921 || (fullModPars->at(ipar)->paramType() == Trk::AlignModule::RotX && m_alignBarrelRotX)
1922 || (fullModPars->at(ipar)->paramType() == Trk::AlignModule::RotY && m_alignBarrelRotY)
1923 || (fullModPars->at(ipar)->paramType() == Trk::AlignModule::RotZ && m_alignBarrelRotZ)
1924 || (m_idHelper->layer_disk(modID)==0 && m_idHelper->is_blayer(modID) && fullModPars->at(ipar)->paramType() == Trk::AlignModule::BowX && m_alignBarrelBowX) ) {
1925 ATH_MSG_DEBUG(
"parameter type "<<fullModPars->at(ipar)->paramType()<<
" \'"<<fullModPars->at(ipar)->dumpType()<<
"\' is now active");
1926 activeModPars->push_back(fullModPars->at(ipar));
1929 ATH_MSG_DEBUG(
"parameter type "<<fullModPars->
at(ipar)->paramType()<<
" \'"<<fullModPars->
at(ipar)->dumpType()<<
"\' is NOT active");
1939 ATH_MSG_DEBUG(
"parameter type "<<fullModPars->
at(ipar)->paramType()<<
" \'"<<fullModPars->
at(ipar)->dumpType()<<
"\' is now active");
1943 ATH_MSG_DEBUG(
"parameter type "<<fullModPars->
at(ipar)->paramType()<<
" \'"<<fullModPars->
at(ipar)->dumpType()<<
"\' is NOT active");
1948 allFullModPars->push_back(fullModPars);
1949 allActiveModPars->push_back(activeModPars);
1955 for(
unsigned int ipar=0;ipar<modPars->
size();++ipar) {
1957 if(
m_idHelper->is_barrel(module->identify()))
1958 switch(modPars->
at(ipar)->paramType()) {
1991 switch(modPars->
at(ipar)->paramType()) {
2029 for(
int i=0;i<nsel;++i)
2045 ATH_MSG_INFO(
"---------------------------------------------------");
2054 Amg::Transform3D localtoglobal = (
module->globalFrameToAlignFrame()).inverse();
2055 ATH_MSG_DEBUG(
" - local to global : "<<std::setprecision(12)<<localtoglobal.translation()<<
" "<<localtoglobal.rotation());
2058 int npars = pars->size();
2059 ATH_MSG_DEBUG(
" - number of active transform parameters: "<<npars);
2060 for(
int j=0;j<npars;j++)
2061 ATH_MSG_DEBUG(
" * par "<<j<<
" \'"<<(*pars)[j]->dumpType()<<
"\' : sigma = "<<(*pars)[j]->sigma()<<
" , softCut = "<<(*pars)[j]->softCut());
2063 ATH_MSG_INFO(
"---------------------------------------------------");
2078 msg(MSG::ERROR)<<
"Layer 0 has only 22 phi modules: range 0-21, requested "<<
phi<<
endmsg;
2083 else if (layer==1) {
2085 msg(MSG::ERROR)<<
"Layer 1 has only 38 phi modules: range 0-37, requested "<<
phi<<
endmsg;
2093 else if (layer==2) {
2095 msg(MSG::ERROR)<<
"Layer 2 has only 52 phi modules: range 0-51, requested "<<
phi<<
endmsg;
2105 msg(MSG::ERROR)<<
"Pixel barrel only 3 layers: range 0-2, requested "<<layer<<
endmsg;
2112 ATH_MSG_DEBUG(
" - translation: "<<tr.translation().x()<<
" "<<tr.translation().y()<<
" "<<tr.translation().z());
2114 ATH_MSG_DEBUG(
" "<<tr.rotation()(0,0)<<
" "<<tr.rotation()(0,1)<<
" "<<tr.rotation()(0,2));
2115 ATH_MSG_DEBUG(
" "<<tr.rotation()(1,0)<<
" "<<tr.rotation()(1,1)<<
" "<<tr.rotation()(1,2));
2116 ATH_MSG_DEBUG(
" "<<tr.rotation()(2,0)<<
" "<<tr.rotation()(2,1)<<
" "<<tr.rotation()(2,2));
2126 const std::string& detectorKey = versionKey.
tag();
2127 const std::string& detectorNode = versionKey.
node();
2129 ATH_MSG_INFO(
"--------------------- decode version key " << detectorKey<<
" "<<detectorNode);
2135 const IRDBRecord *geoTable_layer = (*geoSet_layer)[0];
2137 if (!geoTable_layer->
isFieldNull(
"STAVEINDEX")) staveIndex=geoTable_layer->
getInt(
"STAVEINDEX");
2141 const IRDBRecord *geoTable_stave = (*geoSet_stave)[staveIndex];
2143 if (!geoTable_stave->
isFieldNull(
"NOSKIPZERO")) noSkipZero=geoTable_stave->
getInt(
"NOSKIPZERO");
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
An STL vector of pointers that by default owns its pointed-to elements.
Definition of the abstract IRDBAccessSvc interface.
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition of the abstract IRDBRecord interface.
Definition of the abstract IRDBRecordset interface.
This is an Identifier helper class for the Pixel subdetector.
This is an Identifier helper class for both the Pixel and SCT subdetectors.
AlignModule is a grouping of TrkDetElementBase objects, grouped according to the type of alignment,...
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
const ServiceHandle< StoreGateSvc > & detStore() const
bool msgLvl(const MSG::Level lvl) const
const T * at(size_type n) const
Access an element, as an rvalue.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
This is a helper class to query the version tags from GeoModelSvc and determine the appropriate tag a...
const std::string & tag() const
Return version tag.
const std::string & node() const
Return the version node.
IRDBRecord is one record in the IRDBRecordset object.
virtual bool isFieldNull(const std::string &fieldName) const =0
Check if the field value is NULL.
virtual int getInt(const std::string &fieldName) const =0
Get int field value.
This is a "hash" representation of an Identifier.
Class to hold geometrical description of a silicon detector element.
static Amg::Vector3D centerOfGravity(const std::vector< DetElementCollection * > &)
Calculates center of gravity (average center of associated det-elements)
void setIdHash(IdentifierHash id)
void setGlobalFrameToAlignFrameTransform(const Amg::Transform3D &t)
set global to alignment frame transforms
void setIdentifier(Identifier identifier)
Set and return identifier of module.
const std::string & name() const
void setName(const std::string &name)
Set and return name of align module (i.e.
void addDetElement(AlignModule::DetectorType detType, const TrkDetElementBase *det, const Amg::Transform3D &transform, Identifier id=Identifier())
used to add a detector element to the align module with a align frame to detector element local frame...
This is the base class for all tracking detector elements with read-out relevant information.
virtual const Amg::Transform3D & transform() const =0
Return local to global transform.
virtual IdentifierHash identifyHash() const =0
Identifier hash.
Eigen::Affine3d Transform3D
Eigen::Translation< double, 3 > Translation3D
@ OWN_ELEMENTS
this data object owns its elements
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Ensure that the ATLAS eigen extensions are properly loaded.
std::vector< AlignModule * > AlignModuleList