|
ATLAS Offline Software
|
#include <ReadSiDetectorElements.h>
|
| ReadSiDetectorElements (const std::string &name, ISvcLocator *pSvcLocator) |
|
StatusCode | initialize () |
|
StatusCode | execute () |
|
StatusCode | finalize () |
|
void | testElement (const Identifier &id, const std::vector< InDetDD::SiCellId > &cellIdVec, const std::vector< Amg::Vector2D > &positionsVec, const InDetDD::SiDetectorElementCollection *elements=nullptr) const |
|
std::string | printElementId (const InDetDD::SiDetectorElement *element) const |
|
void | printAllElements (const bool accessDuringInitialization) |
|
void | printRandomAccess (const bool accessDuringInitialization) |
|
void | printDifference () const |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
Definition at line 34 of file ReadSiDetectorElements.h.
◆ StoreGateSvc_t
◆ ReadSiDetectorElements()
ReadSiDetectorElements::ReadSiDetectorElements |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode ReadSiDetectorElements::execute |
( |
| ) |
|
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 50 of file AthAlgorithm.cxx.
57 return Algorithm::extraOutputDeps();
◆ finalize()
StatusCode ReadSiDetectorElements::finalize |
( |
| ) |
|
◆ initialize()
StatusCode ReadSiDetectorElements::initialize |
( |
| ) |
|
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ printAllElements()
void ReadSiDetectorElements::printAllElements |
( |
const bool |
accessDuringInitialization | ) |
|
Definition at line 119 of file ReadSiDetectorElements.cxx.
120 const bool useConditionStore = not accessDuringInitialization;
122 if (useConditionStore) {
125 elements = detEle.retrieve();
127 if (elements==
nullptr) {
149 ATH_MSG_ALWAYS(
" center (x,y,z) = " << element->center().x() <<
"," << element->center().y() <<
"," << element->center().z());
150 ATH_MSG_ALWAYS(
" center (r,phi,z) = " << element->center().perp() <<
"," << element->center().phi() <<
"," <<element->center().z());
154 ATH_MSG_ALWAYS(
" global (r,phi,z) hit position of (1,1,0) = " <<element->globalPositionHit(
Amg::Vector3D(1,1,0)).perp() <<
"," << element->globalPositionHit(
Amg::Vector3D(1,1,0)).phi() <<
","<< element->globalPositionHit(
Amg::Vector3D(1,1,0)).z());
155 ATH_MSG_ALWAYS(
" global (r,phi,z) hit position of (-1,-1,0) = " <<element->globalPositionHit(
Amg::Vector3D(-1,-1,0)).perp() <<
"," << element->globalPositionHit(
Amg::Vector3D(-1,-1,0)).phi() <<
","<< element->globalPositionHit(
Amg::Vector3D(-1,-1,0)).z());
160 ATH_MSG_ALWAYS(
" Normal = " <<element->normal().perp() <<
"," << element->normal().phi() <<
","<< element->normal().z());
161 ATH_MSG_ALWAYS(
" sin(tilt), sin(stereo) = " << element->sinTilt() <<
" "
162 << element->sinStereo());
170 IdentifierHash hashId = element->identifyHash();
172 const EventContext &ctx = Gaudi::Hive::currentContext();
173 ATH_MSG_ALWAYS(
" Temperature (C), bias voltage, depletion voltage: "
185 ATH_MSG_ALWAYS(
" HashId, Id : " << hashId <<
"\t" << element->identify().getString());
190 IdentifierHash idHashTest;
200 if (useConditionStore) {
207 elementtest2 = elements->getDetectorElement(hashId);
213 if (idHashTest != hashId) {
ATH_MSG_ALWAYS(
" Id test 1 FAILED!"); idOK =
false;}
214 if (idTest != element->identify()) {
ATH_MSG_ALWAYS(
" Id test 2 FAILED!"); idOK =
false;}
215 if (elementtest1 != element) {
ATH_MSG_ALWAYS(
" Id test 3 FAILED!"); idOK =
false;}
216 if (elementtest2 != element) {
ATH_MSG_ALWAYS(
" Id test 4 FAILED!"); idOK =
false;}
226 ATH_MSG_ALWAYS(
"|"<<mytrf(2,0)<<
","<<mytrf(2,1)<<
","<<mytrf(2,2)<<
"|");
227 ATH_MSG_ALWAYS(
"|"<<mytrf(1,0)<<
","<<mytrf(1,1)<<
","<<mytrf(1,2)<<
"|");
228 ATH_MSG_ALWAYS(
"|"<<mytrf(0,0)<<
","<<mytrf(0,1)<<
","<<mytrf(0,2)<<
"|");
231 ATH_MSG_ALWAYS(
"|"<<mytrfhit(2,0)<<
","<<mytrfhit(2,1)<<
","<<mytrfhit(2,2)<<
"|");
232 ATH_MSG_ALWAYS(
"|"<<mytrfhit(1,0)<<
","<<mytrfhit(1,1)<<
","<<mytrfhit(1,2)<<
"|");
233 ATH_MSG_ALWAYS(
"|"<<mytrfhit(0,0)<<
","<<mytrfhit(0,1)<<
","<<mytrfhit(0,2)<<
"|");
238 if(element->depthDirection())
ATH_MSG_ALWAYS(
"Depth Direction True");
247 if(std::abs(element->depthAngle())<0.5)
ATH_MSG_ALWAYS(
"BAD DEPTH DIRECTION!");
248 if(std::abs(element->etaAngle())<0.5)
ATH_MSG_ALWAYS(
"BAD ETA DIRECTION!");
249 if(std::abs(element->phiAngle())<0.5)
ATH_MSG_ALWAYS(
"BAD PHI DIRECTION!");
260 int barrelCountError = 0;
262 for (
int iBarrelIndex = 0; iBarrelIndex < siNumerology.numBarrels(); iBarrelIndex++) {
263 int iBarrel = siNumerology.barrelId(iBarrelIndex);
266 for (
int iLayer = 0; iLayer < siNumerology.numLayers(); iLayer++) {
268 if (!siNumerology.useLayer(iLayer))
ATH_MSG_ALWAYS(
" Layer not present");
269 ATH_MSG_ALWAYS(
" Num Modules in Phi: " << siNumerology.numPhiModulesForLayer(iLayer));
270 ATH_MSG_ALWAYS(
" Num Modules in Eta: " << siNumerology.numEtaModulesForLayer(iLayer));
271 for (
int iPhi = 0;
iPhi < siNumerology.numPhiModulesForLayer(iLayer);
iPhi++) {
272 for (
int iEta = siNumerology.beginEtaModuleForLayer(iLayer);
iEta < siNumerology.endEtaModuleForLayer(iLayer);
iEta++) {
273 if (!
iEta && siNumerology.skipEtaZeroForLayer(iLayer))
continue;
274 for (
int iSide = 0; iSide < nSides; iSide++) {
282 if (useConditionStore) {
308 int endcapCountError = 0;
310 for (
int iEndcapIndex = 0; iEndcapIndex < siNumerology.numEndcaps(); iEndcapIndex++) {
311 int iEndcap = siNumerology.endcapId(iEndcapIndex);
314 for (
int iDisk = 0; iDisk < siNumerology.numDisks(); iDisk++) {
316 if (!siNumerology.useDisk(iDisk))
ATH_MSG_ALWAYS(
" Disk not present");
317 ATH_MSG_ALWAYS(
" Num Rings: " << siNumerology.numRingsForDisk(iDisk));
318 for (
int iEta = 0;
iEta < siNumerology.numRingsForDisk(iDisk);
iEta++) {
320 ATH_MSG_ALWAYS(
" Num Modules in Phi: " << siNumerology.numPhiModulesForDiskRing(iDisk,
iEta));
321 for (
int iPhi = 0;
iPhi < siNumerology.numPhiModulesForDiskRing(iDisk,
iEta);
iPhi++) {
322 for (
int iSide = 0; iSide < nSides; iSide++) {
351 ATH_MSG_ALWAYS(
"MaxNumBarrelEta: " << siNumerology.maxNumBarrelEta());
352 ATH_MSG_ALWAYS(
"MaxNumEndcapRings: " << siNumerology.maxNumEndcapRings());
354 ATH_MSG_ALWAYS(
"MaxNumPhiCells: " << siNumerology.maxNumPhiCells());
355 ATH_MSG_ALWAYS(
"MaxNumEtaCells: " << siNumerology.maxNumEtaCells());
◆ printDifference()
void ReadSiDetectorElements::printDifference |
( |
| ) |
const |
Definition at line 540 of file ReadSiDetectorElements.cxx.
545 if (elementsC==
nullptr) {
553 if (elementsC->size()!=elementsM->size()) {
554 ATH_MSG_FATAL(
"Sizes of SiDetectorElementCollections are different");
557 SiDetectorElementCollection::const_iterator elementC = elementsC->begin();
558 SiDetectorElementCollection::const_iterator elementM = elementsM->begin();
559 SiDetectorElementCollection::const_iterator elementMe = elementsM->end();
560 for (; elementM!=elementMe; ++elementC, ++elementM) {
561 auto diff = (*elementC)->center()-(*elementM)->center();
565 ATH_MSG_ALWAYS(
"center (store) " << (*elementC)->center().transpose());
566 ATH_MSG_ALWAYS(
"center (manager) " << (*elementM)->center().transpose());
◆ printElementId()
◆ printRandomAccess()
void ReadSiDetectorElements::printRandomAccess |
( |
const bool |
accessDuringInitialization | ) |
|
Definition at line 361 of file ReadSiDetectorElements.cxx.
364 const bool useConditionStore = (
m_managerName ==
"SCT" and (not accessDuringInitialization));
366 if (useConditionStore) {
369 elements = detEle.retrieve();
370 if (elements==
nullptr) {
382 std::vector<SiCellId> cellIds;
383 std::vector<Amg::Vector2D> positions;
390 cellIds.emplace_back(32,8);
392 for (
int i(151);
i != 176; ++
i){
393 cellIds.emplace_back(
i,8);
395 cellIds.emplace_back(-1,1);
396 cellIds.emplace_back(0,1);
397 cellIds.emplace_back(1,-1);
398 cellIds.emplace_back(1,0);
399 cellIds.emplace_back(327,1);
400 cellIds.emplace_back(328,1);
401 cellIds.emplace_back(1,143);
402 cellIds.emplace_back(1,144);
413 cellIds.emplace_back(32,8);
422 cellIds.emplace_back(182,75);
438 std::vector<SiCellId> cellIds;
439 std::vector<Amg::Vector2D> positions;
447 id = idHelper->
wafer_id(0,1,15,-3,0);
450 cellIds.emplace_back(32);
451 cellIds.emplace_back(1);
452 cellIds.emplace_back(0);
454 cellIds.emplace_back(-1);
455 cellIds.emplace_back(-2);
456 cellIds.emplace_back(-3);
458 cellIds.emplace_back(767);
459 cellIds.emplace_back(768);
467 id = idHelper->
wafer_id(0,1,15,-3,1);
470 cellIds.emplace_back(32);
478 id = idHelper->
wafer_id(2,3,15,0,0);
481 cellIds.emplace_back(532);
482 cellIds.emplace_back(0);
484 cellIds.emplace_back(767);
485 cellIds.emplace_back(768);
494 id = idHelper->
wafer_id(2,3,15,0,1);
497 cellIds.emplace_back(532);
507 id = idHelper->
wafer_id(2,1,15,1,0);
510 cellIds.emplace_back(532);
518 id = idHelper->
wafer_id(2,7,15,1,0);
521 cellIds.emplace_back(532);
529 id = idHelper->
wafer_id(2,1,15,2,0);
532 cellIds.emplace_back(532);
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ testElement()
Definition at line 574 of file ReadSiDetectorElements.cxx.
592 ATH_MSG_ALWAYS(
" width, minWidth, maxWidth, length, thickness (mm) = "
601 ATH_MSG_ALWAYS(
" rMin, rMax, zMin, zMax (mm), phiMin, phiMax (deg) = "
610 << element->
center() <<
" "
611 << element->
normal() <<
" "
618 const EventContext &ctx = Gaudi::Hive::currentContext();
619 ATH_MSG_ALWAYS(
" Temperature (C), bias voltage, depletion voltage: "
624 ATH_MSG_ALWAYS(
" sin(tilt), tilt (deg), sin(stereo), stereo (deg) = "
636 for (
unsigned int iTestCell = 0; iTestCell < cellIdVec.size(); iTestCell++) {
637 SiCellId cellId = cellIdVec[iTestCell];
647 ATH_MSG_ALWAYS(
" extracted cell id [phiIndex.etaIndex] = " << cellId2);
651 ATH_MSG_ALWAYS(
" raw localPosition (using cell id) (xPhi,xEta) = "
652 << localPosRaw1.
xPhi() <<
", " << localPosRaw1.
xEta());
653 ATH_MSG_ALWAYS(
" raw localPosition (using full id) (xPhi,xEta) = "
654 << localPosRaw2.
xPhi() <<
", " << localPosRaw2.
xEta());
668 for (
unsigned int iTestPos = 0; iTestPos < positionsVec.size(); iTestPos++) {
670 ATH_MSG_ALWAYS(
" Requested local pos (xPhi,xEta) = " << localPosOrig.
xPhi() <<
", " << localPosOrig.
xEta());
677 ATH_MSG_ALWAYS(
" Returned local Pos (xPhi,xEta) = " << localPosNew.xPhi() <<
", " << localPosNew.xEta());
682 <<
" (in,out,nearBoundary,mayIntersect) : "
683 << intersectState.
in() <<
","
684 << intersectState.
out() <<
","
693 ATH_MSG_ALWAYS(
" using global position sin(tilt), tilt (deg), sin(stereo), stereo (deg) = "
694 << element->
sinTilt(globalPos) <<
", "
◆ updateVHKA()
◆ m_detEleCollKey
◆ m_detStore
◆ m_doExec
bool ReadSiDetectorElements::m_doExec |
|
private |
◆ m_doInit
bool ReadSiDetectorElements::m_doInit |
|
private |
◆ m_doLoop
bool ReadSiDetectorElements::m_doLoop |
|
private |
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_first
bool ReadSiDetectorElements::m_first |
|
private |
◆ m_idHelper
◆ m_manager
◆ m_managerName
std::string ReadSiDetectorElements::m_managerName |
|
private |
◆ m_pixelIdHelper
◆ m_printDirections
bool ReadSiDetectorElements::m_printDirections |
|
private |
◆ m_printProbePositions
bool ReadSiDetectorElements::m_printProbePositions |
|
private |
◆ m_printTransforms
bool ReadSiDetectorElements::m_printTransforms |
|
private |
◆ m_sctIdHelper
◆ m_siConditionsTool
◆ m_siLorentzAngleTool
◆ m_useConditionsTools
bool ReadSiDetectorElements::m_useConditionsTools |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
SiCellId connectedCell(const SiCellId cellId, int number) const
Get the cell ids sharing the readout for this cell.
SiCellId cellIdOfPosition(const Amg::Vector2D &localPos) const
As in previous method but returns SiCellId.
virtual SiDetectorElement * getDetectorElement(const Identifier &id) const =0
access to individual elements using Identifier or IdentiferHash
const SiNumerology & numerology() const
Access Numerology.
void printDifference() const
SiIntersect inDetector(const Amg::Vector2D &localPosition, double phiTol, double etaTol) const
Test that it is in the active region.
bool m_printProbePositions
Eigen::Matrix< double, 2, 1 > Vector2D
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
virtual const Amg::Vector3D & center() const override final
Center in global coordinates.
const AtlasDetectorID * m_idHelper
const Amg::Vector3D & etaAxis() const
bool m_useConditionsTools
void printAllElements(const bool accessDuringInitialization)
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
ToolHandle< ISiliconConditionsTool > m_siConditionsTool
virtual const SiDetectorElementCollection * getDetectorElementCollection() const =0
access to whole collectiom
ToolHandle< ISiLorentzAngleTool > m_siLorentzAngleTool
const std::string & key() const
Return the StoreGate ID for the referenced object.
std::string printElementId(const InDetDD::SiDetectorElement *element) const
double etaPitch() const
Pitch (inline methods)
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
const AtlasDetectorID * getIdHelper() const
Returns the id helper (inline)
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual void setOwner(IDataHandleHolder *o)=0
double xPhi() const
position along phi direction:
double sinTilt() const
Compute sin(tilt angle) at a given position: at center.
const InDetDD::SiDetectorManager * m_manager
double phiPitch() const
Pitch (inline methods)
virtual SiCellId cellIdFromIdentifier(const Identifier &identifier) const override final
SiCellId from Identifier.
const SiDetectorElement * prevInEta() const
int numberOfConnectedCells(const SiCellId cellId) const
Test if readout cell has more than one diode associated with it.
IdentifierHash wafer_hash(Identifier wafer_id) const
wafer hash from id
virtual StatusCode sysInitialize() override
Override sysInitialize.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
double xEta() const
position along eta direction:
::StatusCode StatusCode
StatusCode definition for legacy code.
const SiDetectorElement * nextInPhi() const
virtual Identifier identifierFromCellId(const SiCellId &cellId) const override final
Identifier <-> SiCellId (ie strip number or pixel eta_index,phi_index) Identifier from SiCellId (ie s...
Eigen::Affine3d Transform3D
double width() const
Methods from design (inline)
#define ATH_MSG_ALWAYS(x)
IdentifierHash wafer_hash(const Identifier &wafer_id) const
wafer hash from id - optimized
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
std::string m_managerName
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_detEleCollKey
virtual const Amg::Vector3D & normal() const override final
Get reconstruction local normal axes in global frame.
bool nearBoundary() const
const SiDetectorElement * prevInPhi() const
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
double sinStereo() const
Compute sin(stereo angle) at a given position: at center.
const SiDetectorElement * otherSide() const
Useful for SCT only.
void show(Identifier id, const IdContext *context=0, char sep='.') const
Short print out of any identifier (optionally provide separation character - default is '.
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
DataObjIDColl m_extendedExtraObjects
const SiDetectorElement * nextInEta() const
Amg::Vector2D rawLocalPositionOfCell(const SiCellId &cellId) const
Returns position (center) of cell.
double minWidth() const
Min width.
void testElement(const Identifier &id, const std::vector< InDetDD::SiCellId > &cellIdVec, const std::vector< Amg::Vector2D > &positionsVec, const InDetDD::SiDetectorElementCollection *elements=nullptr) const
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
#define ATH_MSG_WARNING(x)
const SCT_ID * m_sctIdHelper
HepGeom::Point3D< double > globalPosition(const HepGeom::Point3D< double > &localPos) const
transform a reconstruction local position into a global position (inline):
const Amg::Vector3D & phiAxis() const
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
AthAlgorithm()
Default constructor:
virtual SiCellId cellIdInRange(const SiCellId &cellId) const =0
Check if cell is in range.
bool nearBondGap(const Amg::Vector2D &localPosition, double etaTol) const
Test if near bond gap within tolerances.
Amg::Vector2D localPosition(const HepGeom::Point3D< double > &globalPosition) const
transform a global position into a 2D local position (reconstruction frame) (inline)
double length() const
Length in eta direction (z - barrel, r - endcap)
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
setScale setgFexType iEta
void printRandomAccess(const bool accessDuringInitialization)
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
const SiDetectorElement * getDetectorElement(const IdentifierHash &hash) const
virtual Identifier identify() const override final
identifier of this detector element (inline)
const PixelID * m_pixelIdHelper
bool mayIntersect() const
double maxWidth() const
Max width.