35 const std::string& name,
36 const IInterface * parent)
52 declareInterface<IGeometryManagerTool>(
this);
155 ATH_MSG_FATAL(
"Alignment of both Silicon and TRT turned off. Aborting.");
156 return StatusCode::FAILURE;
162 return StatusCode::FAILURE;
165 return StatusCode::SUCCESS;
173 return StatusCode::SUCCESS;
183 ATH_MSG_INFO(
"Setting up level 0 alignment of the InnerDetector");
186 case 1:
case 2:
case 3:
190 ATH_MSG_ERROR(
"SiliconGeometryManagerTool and/or TRTGeometryManagerTool not available");
208 ATH_MSG_ERROR(
"SiGeometryManagerTool and/or TRTGeometryManagerTool not available");
271 ATH_MSG_INFO(
"Total number of degrees of freedom: "<<nDoF);
321 indet->
setName(
"Inner Detector");
343 unsigned int pixelmaxHash =
m_pixHelper->wafer_hash_max();
376 msg(MSG::DEBUG)<<
"... Pixel barrel element"<<
endmsg;
378 msg(MSG::DEBUG)<<
"... Pixel endcap element"<<
endmsg;
383 (*pixelIdHashMap)[idHash] = indet;
391 unsigned int sctmaxHash =
m_sctHelper->wafer_hash_max();
418 msg(MSG::DEBUG)<<
"... SCT barrel element"<<
endmsg;
420 msg(MSG::DEBUG)<<
"... SCT endcap element"<<
endmsg;
425 (*sctIdHashMap)[idHash] = indet;
434 unsigned int trtmaxHash =
m_trtHelper->straw_layer_hash_max();
460 msg(MSG::DEBUG)<<
"... TRT barrel element"<<
endmsg;
462 msg(MSG::DEBUG)<<
"... TRT endcap element"<<
endmsg;
467 (*trtIdHashMap)[idHash] = indet;
476 ATH_MSG_DEBUG(
"Inner Detector L0 module successfully added to the list");
484 m_siGeoManager->addModuleParameters(module,allFullModPars,allActiveModPars);
488 m_trtGeoManager->addModuleParameters(module,allFullModPars,allActiveModPars);
508 for(
unsigned int ipar=0;ipar<fullModPars->
size();++ipar) {
519 ATH_MSG_DEBUG(
"parameter type "<<fullModPars->
at(ipar)->paramType()<<
" is now active");
523 ATH_MSG_DEBUG(
"parameter type "<<fullModPars->
at(ipar)->paramType()<<
" is NOT active");
527 allFullModPars->push_back(fullModPars);
528 allActiveModPars->push_back(activeModPars);
534 ATH_MSG_DEBUG(
"Setting sigmas for module: "<<module->name());
535 for(
unsigned int ipar=0;ipar<modPars->
size();++ipar)
536 switch(modPars->
at(ipar)->paramType()) {
577 ATH_MSG_INFO(
"---------------------------------------------------");
584 ATH_MSG_INFO(
" - identifierHash: "<<module->identifyHash());
589 npix =
module->detElementCollection(Trk::AlignModule::Pixel)->size();
593 nsct =
module->detElementCollection(Trk::AlignModule::SCT)->size();
597 ntrt =
module->detElementCollection(Trk::AlignModule::TRT)->size();
601 ATH_MSG_INFO(
" - has "<<npix+nsct<<
" Silicon modules in total");
602 if((npix || nsct) && ntrt)
603 ATH_MSG_INFO(
" - has "<<npix+nsct+ntrt<<
" Inner Detector modules in total");
605 Amg::Transform3D localtoglobal = (
module->globalFrameToAlignFrame()).inverse();
606 ATH_MSG_DEBUG(
" - local to global : "<<std::setprecision(12)<<localtoglobal.translation()<<
" "<<localtoglobal.rotation());
609 int npars = pars->size();
610 ATH_MSG_DEBUG(
" - number of active transform parameters: "<<npars);
611 for(
int j=0;j<npars;j++)
612 ATH_MSG_DEBUG(
" * par "<<j<<
": sigma = "<<(*pars)[j]->sigma());
614 ATH_MSG_INFO(
"---------------------------------------------------");
620 ATH_MSG_DEBUG(
"in isOneDetOnly for detector type "<<dettype);
622 if(!coll || coll->empty())
631 nelem += coll->size();
647 if((!collPix || collPix->empty()) && (!collSCT || collSCT->empty()))
656 nelem += coll->size();
#define ATH_CHECK
Evaluate an expression and check for errors.
An STL vector of pointers that by default owns its pointed-to elements.
This is an Identifier helper class for the Pixel subdetector.
This is an Identifier helper class for the SCT subdetector.
This is an Identifier helper class for both the Pixel and SCT subdetectors.
This is an Identifier helper class for the TRT subdetector.
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 "hash" representation of an Identifier.
Class to hold geometrical description of a silicon detector element.
Virtual base class of TRT readout elements.
void setIdHash(IdentifierHash id)
std::vector< const TrkDetElementBase * > DetElementCollection
typedefs to contain detector element pointers and transforms
Identifier identify() const
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...
IdentifierHash identifyHash() const
Set and return index of module, used by alignment classes to keep track of order of align module.
This is the base class for all tracking detector elements with read-out relevant information.
Eigen::Affine3d Transform3D
@ 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