|
ATLAS Offline Software
|
Go to the documentation of this file.
17 #include "GaudiKernel/SystemOfUnits.h"
92 : m_table(std::move(
table)),
94 m_athenaComps(athenaComps)
99 return std::as_const(*m_athenaComps).geomDB();
226 std::vector<double> layerShift;
232 const std::string& detectorKey = versionKey.
tag();
233 const std::string& detectorNode = versionKey.
node();
240 for (
int iLayer = 0; iLayer <
numLayers; iLayer++) {
242 if (
db()->testField(PixelLayer,
"GBLSHIFT", iLayer)) shift =
db()->
getDouble(PixelLayer,
"GBLSHIFT", iLayer);
243 layerShift.push_back(shift);
266 const std::vector<const ServiceVolume*>&
268 for (
unsigned int ii = 0; ii <
numElements(); ++ii) {
299 if (volId == 0) volId = ii + 1;
301 bool needsRotation =
false;
309 if (rmin2 <= 0) rmin2 = param->
rmin();
310 if (rmax2 <= 0) rmax2 = param->
rmax();
316 bool fullPhiSector =
false;
319 fullPhiSector =
true;
326 if (shapeType ==
"UNKNOWN") {
328 shapeType =
"RADIAL";
329 }
else if (param->
rmin() == rmin2 && param->
rmax() == rmax2) {
342 if (repeat == 0) repeat = 1;
347 if (shapeType ==
"CONS" || shapeType ==
"TUBS") {
350 phiStart += phiepsilon;
355 if (shapeType ==
"BOX" || shapeType ==
"ROD" || shapeType ==
"ROD2" || shapeType ==
"TRAP") {
359 if (shapeType ==
"PGON" || shapeType ==
"PGON2" ||
360 shapeType ==
"CONE" || shapeType ==
"CONS" ||
361 shapeType ==
"PGON3" || shapeType ==
"PGON4") {
362 if ((rmin2 != param->
rmin()) || (rmax2 != param->
rmax())) {
363 needsRotation =
true;
369 if (shapeType ==
"PGON" || shapeType ==
"PGON2" ||
370 shapeType ==
"PGON3" || shapeType ==
"PGON4") {
377 if (shapeType.empty() || shapeType ==
"TUBE" || shapeType ==
"CONE") {
399 if (std::abs(param->
zmin()) < 0.000001) {
void setRmin2(double rmin2)
ServiceVolumeSchema m_schema
const std::string & rmax2() const
const std::string & phiStep() const
void setZmax(double zmax)
std::string shapeType(int index) const
virtual IRDBRecordset_ptr getRecordsetPtr(const std::string &node, const std::string &tag, const std::string &tag2node="", const std::string &connName="ATLASDD")=0
Provides access to the Recordset object containing HVS-tagged data.
IRDBRecordset_ptr m_table
bool has_shapeType() const
bool zsymm(int index) const
ServiceVolumeMaker(const std::string &label, IRDBRecordset_ptr table, const ServiceVolumeSchema &schema, InDetDD::AthenaComps *)
void setZShift(double shift)
double width(int index) const
constexpr std::initializer_list< unsigned int > sides
void setLabel(const std::string &name, int volId)
void setMaterial(const std::string &mat)
std::vector< const ServiceVolume * > m_services
const std::vector< const ServiceVolume * > & makeAll()
void setPhiWidth(double phiWidth)
int repeat(int index) const
Class to hold various Athena components.
void setZsymm(bool zsymm)
void setPhiLoc(double phiLoc)
unsigned int numElements() const
const std::string & node() const
Return the version node.
virtual unsigned int getTableSize(IRDBRecordset_ptr recordSet) const =0
int volId(int index) const
const std::string & zsymm() const
double zmin(int index) const
std::vector< double > m_layerShift
const std::string & rmin2() const
const std::string & zmax() const
ServiceVolume * make(int index)
double phiStart(int index) const
double rmax2(int index) const
ServiceVolumeMakerMgr(IRDBRecordset_ptr table, const ServiceVolumeSchema &schema, InDetDD::AthenaComps *athenaComps)
double zmax(int index) const
IRDBAccessSvc is an abstract interface to the athena service that provides the following functionalit...
bool has_shiftFlag() const
void setRmin(double rmin)
std::string m_materialName
This is a helper class to query the version tags from GeoModelSvc and determine the appropriate tag a...
InDetDD::AthenaComps * m_athenaComps
const std::string & tag() const
Return version tag.
const std::string & width() const
std::string materialName(int index) const
void setRmax2(double rmax2)
const IGeoDbTagSvc * geoDbTagSvc() const
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
void setZmin(double zmin)
virtual double getDouble(IRDBRecordset_ptr recordSet, const std::string &name, int index=0) const =0
The following methods will first look in the text file if provided and then look in the database.
std::string volName(int index) const
void setNeedsRotation(bool flag)
const std::string & volId() const
int shiftFlag(int index) const
constexpr unsigned int numLayers()
std::vector< double > readLayerShift()
unsigned int numElements() const
const IGeometryDBSvc * db() const
double rmin2(int index) const
void setRmax(double rmax)
const std::string & repeat() const
const std::string & zmin() const
const std::string & rmax() const
const std::string & shapeType() const
const std::string & materialName() const
double phiStep(int index) const
const std::string & volName() const
const std::string & rmin() const
void setVolName(const std::string &name)
void setShapeType(const std::string &shapeType)
virtual int getInt(IRDBRecordset_ptr recordSet, const std::string &name, int index=0) const =0
double rmax(int index) const
double phiDelta(int index) const
const std::string & shiftFlag() const
const ServiceVolumeSchema & schema() const
virtual std::string getString(IRDBRecordset_ptr recordSet, const std::string &name, int index=0) const =0
const std::string & radialDiv() const
Definition of the abstract IRDBRecordset interface.
IRDBAccessSvc * rdbAccessSvc()
int radialDiv(int index) const
ServiceVolumeMakerMgr * m_mgr
double rmin(int index) const
const std::string & phiDelta() const
const std::string & phiStart() const