ATLAS Offline Software
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
MuonGMR4::sTgcReadoutGeomTool Class Reference

#include <sTgcReadoutGeomTool.h>

Inheritance diagram for MuonGMR4::sTgcReadoutGeomTool:
Collaboration diagram for MuonGMR4::sTgcReadoutGeomTool:

Classes

struct  FactoryCache
 
struct  sTgcShape
 Helper struct to translate the GeoModelShape into the parameters used to construct the readout element dimensions. More...
 
struct  wSTGCTable
 Struct to cache the relevant parameters of from the WSTGC tables. More...
 

Public Member Functions

 sTgcReadoutGeomTool (const std::string &type, const std::string &name, const IInterface *parent)
 
StatusCode buildReadOutElements (MuonDetectorManager &mgr) override final
 

Private Member Functions

sTgcShape extractParameters (const GeoShape *shape) const
 
StatusCode readParameterBook (FactoryCache &cache)
 Retrieves the auxillary tables from the database. More...
 
StatusCode loadDimensions (sTgcReadoutElement::defineArgs &args, FactoryCache &factory)
 Loads the chamber dimensions from GeoModel. More...
 

Private Attributes

ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc
 
ServiceHandle< IGeoDbTagSvcm_geoDbTagSvc {this, "GeoDbTagSvc", "GeoDbTagSvc"}
 
PublicToolHandle< IMuonGeoUtilityToolm_geoUtilTool {this,"GeoUtilTool", "" }
 

Detailed Description

Definition at line 19 of file sTgcReadoutGeomTool.h.

Constructor & Destructor Documentation

◆ sTgcReadoutGeomTool()

MuonGMR4::sTgcReadoutGeomTool::sTgcReadoutGeomTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 38 of file sTgcReadoutGeomTool.cxx.

41  : base_class{type, name, parent} {}

Member Function Documentation

◆ buildReadOutElements()

StatusCode MuonGMR4::sTgcReadoutGeomTool::buildReadOutElements ( MuonDetectorManager mgr)
finaloverride

Key formatted as follows for sTGC: <sTGC>_<L/S + MODULE TYPE>_<QUADRUPLET NUMBER>_<ETA INDEX>_<PHI INDEX> e.g. sTGC_STL1QL2_1_6_1 .

Skip the endcap chambers

Definition at line 233 of file sTgcReadoutGeomTool.cxx.

233  {
234  ATH_CHECK(m_geoDbTagSvc.retrieve());
235  ATH_CHECK(m_idHelperSvc.retrieve());
236  ATH_CHECK(m_geoUtilTool.retrieve());
237 
238  GeoModelIO::ReadGeoModel* sqliteReader = m_geoDbTagSvc->getSqliteReader();
239  if (!sqliteReader) {
240  ATH_MSG_FATAL("Error, the tool works exclusively from sqlite geometry inputs");
241  return StatusCode::FAILURE;
242  }
243 
244  FactoryCache facCache{};
245  ATH_CHECK(readParameterBook(facCache));
246 
247  const sTgcIdHelper& idHelper{m_idHelperSvc->stgcIdHelper()};
248  // Get the list of full phys volumes from SQLite, and create detector elements
249 
250  physNodeMap mapFPV = sqliteReader->getPublishedNodes<std::string, GeoFullPhysVol*>("Muon");
251 #ifndef SIMULATIONBASE
252  SurfaceBoundSetPtr<Acts::TrapezoidBounds> layerBounds = std::make_shared<SurfaceBoundSet<Acts::TrapezoidBounds>>();
253 #endif
254 
255  for (auto& [key, pv] : mapFPV) {
259  std::vector<std::string> key_tokens = tokenize(key, "_");
260  if (key_tokens.size() != 5 ||
261  key_tokens[0].find("sTGC") == std::string::npos)
262  continue;
263  ATH_MSG_DEBUG("Key is: "<<key);
264  bool isValid{false};
265  const std::string stName = key_tokens[1][1] == 'L' ? "STL" : "STS";
266  const int stEta = atoi(key_tokens[2]);
267  const int stPhi = atoi(key_tokens[3]);
268  const int ml = atoi(key_tokens[4]);
269 
270  defineArgs define{};
271 #ifndef SIMULATIONBASE
272  define.layerBounds = layerBounds;
273 #endif
274  //Need identifier to get multilayer, the following constants don't matter.
275  define.detElId = idHelper.channelID(stName, stEta, stPhi, ml, 1, sTgcIdHelper::sTgcChannelTypes::Strip, 1, isValid);
276  if (!isValid) {
277  ATH_MSG_FATAL("Failed to build a good identifier out of " << key);
278  return StatusCode::FAILURE;
279  }
281  define.physVol = pv;
282  define.chambDesign = "sTGC_" + key_tokens[1];
283  define.alignTransform = m_geoUtilTool->findAlignableTransform(define.physVol);
284  ATH_MSG_VERBOSE("Key "<<key<<" lead to the identifier "<<m_idHelperSvc->toStringDetEl(define.detElId));
285  ATH_CHECK(loadDimensions(define, facCache));
286  std::unique_ptr<sTgcReadoutElement> readoutEle = std::make_unique<sTgcReadoutElement>(std::move(define));
287  ATH_CHECK(mgr.addsTgcReadoutElement(std::move(readoutEle)));
288  }
289  return StatusCode::SUCCESS;
290 }

◆ extractParameters()

sTgcReadoutGeomTool::sTgcShape MuonGMR4::sTgcReadoutGeomTool::extractParameters ( const GeoShape *  shape) const
private

Definition at line 43 of file sTgcReadoutGeomTool.cxx.

43  {
44  sTgcShape result{};
45  if (shape->typeID() == GeoTrd::getClassTypeID()) {
46  const GeoTrd* trd = static_cast<const GeoTrd*>(shape);
47  result.longWidth = trd->getXHalfLength1();
48  result.shortWidth = trd->getXHalfLength2();
49  result.halfHeight = trd->getYHalfLength1();
50  result.thickness = trd->getZHalfLength();
51  } else if (shape->typeID() == GeoSimplePolygonBrep::getClassTypeID()) {
52  const GeoSimplePolygonBrep* poly = static_cast<const GeoSimplePolygonBrep*>(shape);
53  std::vector<Amg::Vector2D> polyEdges = m_geoUtilTool->polygonEdges(*poly);
54  result.thickness = poly->getDZ() * Gaudi::Units::mm;
55  if (polyEdges.size() == 4) {
56  result.longWidth = 0.5 * (polyEdges[0].x() - polyEdges[1].x()) * Gaudi::Units::mm;
57  result.shortWidth = 0.5 * (polyEdges[3].x() - polyEdges[2].x()) * Gaudi::Units::mm;
58  result.halfHeight = 0.5 * (polyEdges[0].y() - polyEdges[3].y()) * Gaudi::Units::mm;
59  } else if (polyEdges.size() == 6) {
60  result.longWidth = 0.5 * (polyEdges[0].x() - polyEdges[1].x()) * Gaudi::Units::mm;
61  result.shortWidth = 0.5 * (polyEdges[4].x() - polyEdges[3].x()) * Gaudi::Units::mm;
62  result.halfHeight = 0.5 * (polyEdges[0].y() - polyEdges[4].y()) * Gaudi::Units::mm;
63  result.yCutOut = (polyEdges[1].y() - polyEdges[2].y()) * Gaudi::Units::mm;
64  }
65  } else {
66  ATH_MSG_FATAL("Unknown shape type "<<shape->type());
67  throw std::runtime_error("Invalid shape to extract sTGC parameters");
68  }
69  return result;
70 }

◆ loadDimensions()

StatusCode MuonGMR4::sTgcReadoutGeomTool::loadDimensions ( sTgcReadoutElement::defineArgs args,
FactoryCache factory 
)
private

Loads the chamber dimensions from GeoModel.

The half sizes of the

Navigate through the GeoModel tree to find all gas volume leaves

Filling in number of layers

Gasgaps are trapezoid

Strip Parameters

wireGroup Parameters

firstWirePos locates the x-coordinate of the beginning of first WireGroup

Diamond Strip Design

Diamond WireGroup Design

Diamond Pad Design

Trapezoid Strip Design

Trapezoid WireGroup Design

Trapezoid Pad Design

Placing wires in the designated wireGroups for easy retrieval later, first and last are placed separately.

Defining the beamline radius, pad columns and pad rows

Stacking strip, wireGroup and pad layers Redefining the gasgap center for L3 (diamond) sector: Unlike the run 3 (legacy) code, we are NOT offsetting the gasgap center in the local y coordinate to match the base of the cutout. As a result, localToGlobal transformations and the local y coordinate of the pads, strips and wireGroups will not match the run 3. Additionally, the global y coordinate of the wireGroup is shifted by ~25 mm due to this center redefinition. The redefinition will not affect reconstruction and digitization, and will simplify the sTgc geometry code.

StripLayer

WireGroup Layer

Pad Layer

Definition at line 72 of file sTgcReadoutGeomTool.cxx.

72  {
73  ATH_MSG_VERBOSE("Load dimensions of "<<m_idHelperSvc->toString(define.detElId)
74  <<std::endl<<std::endl<<m_geoUtilTool->dumpVolume(define.physVol));
75  const GeoShape* shape = m_geoUtilTool->extractShape(define.physVol);
76  if (!shape) {
77  ATH_MSG_FATAL("Failed to deduce a valid shape for "<<m_idHelperSvc->toString(define.detElId));
78  return StatusCode::FAILURE;
79  }
80  ATH_MSG_DEBUG("Extracted shape "<<m_geoUtilTool->dumpShape(shape));
82  sTgcShape modPars = extractParameters(shape);
83 
84  define.sHalfChamberLength = modPars.shortWidth;
85  define.lHalfChamberLength = modPars.longWidth;
86  define.halfChamberHeight = modPars.halfHeight;
87  define.halfChamberTck = modPars.thickness;
88  define.yCutout = modPars.yCutOut;
89 
90  ATH_MSG_DEBUG("chamber length (L/S) is: " << 2*define.lHalfChamberLength << "/"
91  << 2*define.sHalfChamberLength << " chamber height is: "
92  << 2*define.halfChamberHeight << " chamber thickness is: " << 2*define.halfChamberTck << " yCutout value is: " << define.yCutout);
93 
95  std::vector<physVolWithTrans> allGasGaps = m_geoUtilTool->findAllLeafNodesByName(define.physVol, "sTgcGas");
96  if (allGasGaps.empty()) {
97  ATH_MSG_FATAL("The volume "<<m_idHelperSvc->toStringDetEl(define.detElId)<<" does not have any children 'sTgcGas'"
98  <<std::endl<<m_geoUtilTool->dumpVolume(define.physVol));
99  return StatusCode::FAILURE;
100  }
101 
103  define.numLayers = allGasGaps.size();
104  ATH_MSG_VERBOSE("The number of gasGaps are: " << define.numLayers);
105  FactoryCache::ParamBookTable::const_iterator parBookItr = factoryCache.parameterBook.find(define.chambDesign);
106  if (parBookItr == factoryCache.parameterBook.end()) {
107  ATH_MSG_FATAL("The chamber "<<define.chambDesign<<" is not part of the WSTGC table");
108  return StatusCode::FAILURE;
109  }
110 
111  const wSTGCTable& paramBook{parBookItr->second};
112 
113  define.gasTck = paramBook.gasTck;
115  unsigned int gasGap{0};
116  for (physVolWithTrans& gapVol : allGasGaps) {
117  StripDesignPtr stripDesign = std::make_unique<StripDesign>();
118  WireDesignPtr wireGroupDesign = std::make_unique<WireGroupDesign>();
119  PadDesignPtr padDesign = std::make_unique<PadDesign>();
120 
121  sTgcShape gapPars = extractParameters(m_geoUtilTool->extractShape(gapVol.volume));
122 
124  double firstStripPos = -gapPars.halfHeight + paramBook.firstStripPitch[gasGap] - 0.5 * paramBook.stripPitch;
125  define.firstStripPitch = paramBook.firstStripPitch;
126  ATH_MSG_DEBUG("FirstStripPos is: " << Amg::toString(firstStripPos, 2) << " and the half height is: " << gapPars.halfHeight);
127 
129  unsigned int numWireGroups = paramBook.numWireGroups[gasGap];
131  double firstWirePos = paramBook.firstWirePos[gasGap];
132 
133  if(gapPars.yCutOut) {
135  stripDesign->defineDiamond(gapPars.shortWidth, gapPars.longWidth, gapPars.halfHeight, paramBook.yCutoutCathode);
136  ATH_MSG_VERBOSE("The yCutout of the active area is: " << gapPars.yCutOut);
137  stripDesign->defineStripLayout(Amg::Vector2D{firstStripPos, 0.},
138  paramBook.stripPitch, paramBook.stripWidth, paramBook.numStrips);
139  ATH_MSG_VERBOSE("Created new diamond strip design "<<(*stripDesign));
141  wireGroupDesign->defineDiamond(0.5*paramBook.sPadLength, 0.5*paramBook.lPadLength, gapPars.halfHeight, paramBook.yCutoutCathode);
142  wireGroupDesign->flipTrapezoid();
143  wireGroupDesign->defineStripLayout(Amg::Vector2D{firstWirePos, 0.},
144  paramBook.wirePitch,
145  paramBook.wireWidth,
146  numWireGroups);
147  ATH_MSG_VERBOSE("Created new diamond wireGroup design "<<(*wireGroupDesign));
148 
150  padDesign->defineDiamond(0.5*paramBook.sPadLength, 0.5*paramBook.lPadLength, gapPars.halfHeight, paramBook.yCutoutCathode);
151  padDesign->flipTrapezoid();
152  ATH_MSG_VERBOSE("Created new diamond pad design "<<(*padDesign));
153  }
154  else if (!gapPars.yCutOut) {
156  stripDesign->defineTrapezoid(gapPars.shortWidth, gapPars.longWidth, gapPars.halfHeight);
157  stripDesign->defineStripLayout(Amg::Vector2D{firstStripPos, 0.},
158  paramBook.stripPitch, paramBook.stripWidth, paramBook.numStrips);
159  ATH_MSG_VERBOSE("Created new strip design "<<(*stripDesign));
160 
162  wireGroupDesign->defineTrapezoid(0.5*paramBook.sPadLength, 0.5*paramBook.lPadLength, gapPars.halfHeight);
163  wireGroupDesign->flipTrapezoid();
164  wireGroupDesign->defineStripLayout(Amg::Vector2D{firstWirePos, 0.},
165  paramBook.wirePitch,
166  paramBook.wireWidth,
167  numWireGroups);
168  ATH_MSG_VERBOSE("Created new wireGroup design "<<(*wireGroupDesign));
169 
171  padDesign->defineTrapezoid(0.5*paramBook.sPadLength, 0.5*paramBook.lPadLength, gapPars.halfHeight);
172  padDesign->flipTrapezoid();
173  ATH_MSG_VERBOSE("Created new pad design "<<(*padDesign));
174  }
175 
177  wireGroupDesign->declareGroup(paramBook.firstWireGroupWidth[gasGap]);
178  for (uint wireGr=2; wireGr<numWireGroups; wireGr++){
179  wireGroupDesign->declareGroup(paramBook.wireGroupWidth);
180  }
181  unsigned int lastWireGroup = (paramBook.numWires[gasGap] - wireGroupDesign->nAllWires());
182  wireGroupDesign->declareGroup(lastWireGroup);
183  wireGroupDesign->defineWireCutout(paramBook.wireCutout[gasGap]);
184 
186  double beamlineRadius = (define.physVol->getAbsoluteTransform() * gapVol.transform).translation().perp();
187  padDesign->defineBeamlineRadius(beamlineRadius);
188  ATH_MSG_DEBUG("The beamline radius is: " << beamlineRadius);
189  padDesign->definePadRow(paramBook.firstPadPhiDivision[gasGap],
190  paramBook.numPadPhi[gasGap],
191  paramBook.anglePadPhi,
192  paramBook.PadPhiShift[gasGap]);
193  padDesign->definePadColumn(paramBook.firstPadHeight[gasGap],
194  paramBook.numPadEta[gasGap],
195  paramBook.padHeight[gasGap]);
196 
205  ++gasGap;
207  stripDesign = (*factoryCache.stripDesigns.emplace(stripDesign).first);
208  StripLayer stripLayer(gapVol.transform * Amg::getRotateZ3D(-90. * Gaudi::Units::deg)
209  * Amg::getRotateY3D(180* Gaudi::Units::deg), stripDesign,
211  ATH_MSG_VERBOSE("Added new diamond strip layer at "<< stripLayer);
212  define.stripLayers.push_back(std::move(stripLayer));
213 
215  wireGroupDesign = (*factoryCache.wireGroupDesigns.emplace(wireGroupDesign).first);
216  StripLayer wireGroupLayer(gapVol.transform * Amg::getRotateY3D(180* Gaudi::Units::deg),
217  wireGroupDesign, sTgcReadoutElement::createHash(gasGap,
218  sTgcIdHelper::Wire, 0));
219  ATH_MSG_VERBOSE("Added new diamond wireGroup layer at "<<wireGroupLayer);
220  define.wireGroupLayers.push_back(std::move(wireGroupLayer));
221 
223  padDesign = (*factoryCache.padDesigns.emplace(padDesign).first);
224  StripLayer padLayer(gapVol.transform * Amg::getRotateY3D(180* Gaudi::Units::deg),
226  sTgcIdHelper::Pad, 0));
227  ATH_MSG_VERBOSE("Added new diamond pad layer at "<<padLayer);
228  define.padLayers.push_back(std::move(padLayer));
229  }
230  return StatusCode::SUCCESS;
231 }

◆ readParameterBook()

StatusCode MuonGMR4::sTgcReadoutGeomTool::readParameterBook ( FactoryCache cache)
private

Retrieves the auxillary tables from the database.

Definition at line 291 of file sTgcReadoutGeomTool.cxx.

291  {
292  ServiceHandle<IRDBAccessSvc> accessSvc(m_geoDbTagSvc->getParamSvcName(), name());
293  ATH_CHECK(accessSvc.retrieve());
294  IRDBRecordset_ptr paramTable = accessSvc->getRecordsetPtr("WSTGC", "");
295  if (paramTable->size() == 0) {
296  ATH_MSG_FATAL("Empty parameter book table found");
297  return StatusCode::FAILURE;
298  }
299  ATH_MSG_VERBOSE("Found the " << paramTable->nodeName() << " ["
300  << paramTable->tagName() << "] table with "
301  << paramTable->size() << " records");
302  for (const IRDBRecord_ptr& record : *paramTable) {
303  // parameterBook pars{};
304  const std::string key = record-> getString("WSTGC_TYPE");
305  wSTGCTable& parBook = cache.parameterBook[key];
306  parBook.numStrips = record->getInt("nStrips");
307  parBook.stripPitch = record->getDouble("stripPitch");
308  parBook.stripWidth = record->getDouble("stripWidth");
309  parBook.firstStripPitch = tokenizeDouble(record->getString("firstStripWidth"), ";");
310 
311  parBook.numWires = tokenizeInt(record->getString("nWires"), ";");
312  parBook.firstWireGroupWidth = tokenizeInt(record->getString("firstWireGroup"), ";");
313  parBook.numWireGroups = tokenizeInt(record->getString("nWireGroups"), ";");
314  parBook.wireCutout = tokenizeDouble(record->getString("wireCutout"), ";");
315  parBook.wirePitch = record->getDouble("wirePitch");
316  parBook.wireWidth = record->getDouble("wireWidth");
317  parBook.wireGroupWidth = record->getInt("wireGroupWidth");
318  parBook.firstWirePos = tokenizeDouble(record->getString("firstWire"), ";");
319 
320  parBook.numPadEta = tokenizeInt(record->getString("nPadH"), ";");
321  parBook.numPadPhi = tokenizeInt(record->getString("nPadPhi"), ";");
322  parBook.firstPadHeight = tokenizeDouble(record->getString("firstPadH"), ";");
323  parBook.padHeight = tokenizeDouble(record->getString("padH"), ";");
324  parBook.PadPhiShift = tokenizeInt(record->getString("PadPhiShift"), ";");
325  parBook.anglePadPhi = record->getDouble("anglePadPhi");
326  parBook.firstPadPhiDivision = tokenizeDouble(record->getString("firstPadPhiDivision"), ";");
327  parBook.lPadLength = record->getDouble("lPadWidth");
328  parBook.sPadLength = record->getDouble("sPadWidth");
329 
330  parBook.yCutout = record->getDouble("yCutout");
331  parBook.yCutoutCathode = record->getDouble("yCutoutCathode");
332  parBook.gasTck = record->getDouble("gasTck");
333  parBook.lFrameWidth = record->getDouble("ylFrame");
334  parBook.sFrameWidth = record->getDouble("ysFrame");
335 
336  ATH_MSG_DEBUG("Parameters of the chamber " << key << " are: "
337  << " numStrips: " << parBook.numStrips
338  << " stripPitch: " << parBook.stripPitch
339  << " stripWidth: " << parBook.stripWidth
340  << " FirstStripPitch: "<< parBook.firstStripPitch
341  << " numWires: " << parBook.numWires
342  << " firstWireGroupWidth: " << parBook.firstWireGroupWidth
343  << " numWireGroups: " << parBook.numWireGroups
344  << " wireCutout: " << parBook.wireCutout
345  << " wirePitch: " << parBook.wirePitch
346  << " wireWidth: " << parBook.wireWidth
347  << " wireGroupWidth: " << parBook.wireGroupWidth
348  << " firstWirePosition: " << parBook.firstWirePos
349  << " Pads in Eta: " << parBook.numPadEta
350  << " Pads in Phi: " << parBook.numPadPhi
351  << " firstPadHeight: " << parBook.firstPadHeight
352  << " padHeight: " << parBook.padHeight
353  << " PadPhiShift: " << parBook.PadPhiShift
354  << " anglePadPhi: " << parBook.anglePadPhi
355  << " firstPadPhiDivision: " << parBook.firstPadPhiDivision
356  << " lPadLength: " << parBook.lPadLength
357  << " sPadLength: " << parBook.sPadLength
358  << " yCutout: " << parBook.yCutout
359  << " yCutoutCathode: " << parBook.yCutoutCathode
360  << " gasGapTck: " << parBook.gasTck
361  << " lFrameWidth: " << parBook.lFrameWidth
362  << " sFrameWidth: " << parBook.sFrameWidth);
363  }
364  return StatusCode::SUCCESS;
365 }

Member Data Documentation

◆ m_geoDbTagSvc

ServiceHandle<IGeoDbTagSvc> MuonGMR4::sTgcReadoutGeomTool::m_geoDbTagSvc {this, "GeoDbTagSvc", "GeoDbTagSvc"}
private

Definition at line 33 of file sTgcReadoutGeomTool.h.

◆ m_geoUtilTool

PublicToolHandle<IMuonGeoUtilityTool> MuonGMR4::sTgcReadoutGeomTool::m_geoUtilTool {this,"GeoUtilTool", "" }
private

Definition at line 35 of file sTgcReadoutGeomTool.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> MuonGMR4::sTgcReadoutGeomTool::m_idHelperSvc
private
Initial value:
{this, "IdHelperSvc",
"Muon::MuonIdHelperSvc/MuonIdHelperSvc"}

Definition at line 30 of file sTgcReadoutGeomTool.h.


The documentation for this class was generated from the following files:
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
CxxUtils::tokenizeDouble
std::vector< double > tokenizeDouble(const std::string &the_str, std::string_view delimiter)
Definition: Control/CxxUtils/Root/StringUtils.cxx:34
get_generator_info.result
result
Definition: get_generator_info.py:21
MuonGMR4::sTgcReadoutGeomTool::extractParameters
sTgcShape extractParameters(const GeoShape *shape) const
Definition: sTgcReadoutGeomTool.cxx:43
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
CxxUtils::tokenizeInt
std::vector< int > tokenizeInt(const std::string &the_str, std::string_view delimiter)
Definition: Control/CxxUtils/Root/StringUtils.cxx:55
CxxUtils::tokenize
std::vector< std::string > tokenize(const std::string &the_str, std::string_view delimiters)
Splits the string into smaller substrings.
Definition: Control/CxxUtils/Root/StringUtils.cxx:15
deg
#define deg
Definition: SbPolyhedron.cxx:17
sTgcIdHelper::Strip
@ Strip
Definition: sTgcIdHelper.h:190
MuonGMR4::sTgcReadoutGeomTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: sTgcReadoutGeomTool.h:30
MuonGMR4::sTgcReadoutGeomTool::readParameterBook
StatusCode readParameterBook(FactoryCache &cache)
Retrieves the auxillary tables from the database.
Definition: sTgcReadoutGeomTool.cxx:291
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
isValid
bool isValid(const T &p)
Definition: AtlasPID.h:225
Amg::getRotateZ3D
Amg::Transform3D getRotateZ3D(double angle)
get a rotation transformation around Z-axis
Definition: GeoPrimitivesHelpers.h:270
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
MuonCalib::Legendre::poly
constexpr double poly(const double x)
Definition: LegendrePoly.h:116
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
MuonGMR4::sTgcReadoutElement::createHash
static IdentifierHash createHash(const unsigned int gasGap, const unsigned int channelType, const unsigned int channel, const unsigned int wireInGrp=0)
Create a measurement hash from the Identifier fields.
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
MuonGMR4::WireDesignPtr
GeoModel::TransientConstSharedPtr< WireGroupDesign > WireDesignPtr
Definition: WireGroupDesign.h:21
sTgcIdHelper::Wire
@ Wire
Definition: sTgcIdHelper.h:190
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MuonGMR4::sTgcReadoutGeomTool::loadDimensions
StatusCode loadDimensions(sTgcReadoutElement::defineArgs &args, FactoryCache &factory)
Loads the chamber dimensions from GeoModel.
Definition: sTgcReadoutGeomTool.cxx:72
IRDBRecordset_ptr
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition: IRDBAccessSvc.h:25
MuonGMR4::sTgcReadoutGeomTool::m_geoUtilTool
PublicToolHandle< IMuonGeoUtilityTool > m_geoUtilTool
Definition: sTgcReadoutGeomTool.h:35
MuonGMR4::StripDesignPtr
GeoModel::TransientConstSharedPtr< StripDesign > StripDesignPtr
Definition: StripDesign.h:29
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
MuonGMR4::sTgcReadoutGeomTool::m_geoDbTagSvc
ServiceHandle< IGeoDbTagSvc > m_geoDbTagSvc
Definition: sTgcReadoutGeomTool.h:33
sTgcIdHelper
Definition: sTgcIdHelper.h:55
MuonGMR4::physVolWithTrans
IMuonGeoUtilityTool::physVolWithTrans physVolWithTrans
Definition: MdtReadoutGeomTool.cxx:33
Amg::getRotateY3D
Amg::Transform3D getRotateY3D(double angle)
get a rotation transformation around Y-axis
Definition: GeoPrimitivesHelpers.h:261
MuonGMR4::RpcReadoutElement::parameterBook::layerBounds
ActsTrk::SurfaceBoundSetPtr< Acts::RectangleBounds > layerBounds
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:41
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
sTgcIdHelper::Pad
@ Pad
Definition: sTgcIdHelper.h:190
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
IRDBRecord_ptr
std::unique_ptr< IRDBRecord > IRDBRecord_ptr
Definition: IRDBRecordset.h:23
python.changerun.pv
pv
Definition: changerun.py:81
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
ActsTrk::SurfaceBoundSetPtr
std::shared_ptr< SurfaceBoundSet< BoundType > > SurfaceBoundSetPtr
Aberivation to create a new SurfaceBoundSetPtr.
Definition: Tracking/Acts/ActsGeoUtils/ActsGeoUtils/Defs.h:19
MuonGMR4::PadDesignPtr
GeoModel::TransientConstSharedPtr< PadDesign > PadDesignPtr
Definition: PadDesign.h:22
MuonGMR4::defineArgs
RpcReadoutElement::defineArgs defineArgs
Definition: RpcReadoutGeomTool.cxx:37
ServiceHandle< IRDBAccessSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37