Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 37 of file sTgcReadoutGeomTool.cxx.

40  : 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 232 of file sTgcReadoutGeomTool.cxx.

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

◆ extractParameters()

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

Definition at line 42 of file sTgcReadoutGeomTool.cxx.

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

◆ 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 71 of file sTgcReadoutGeomTool.cxx.

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

◆ readParameterBook()

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

Retrieves the auxillary tables from the database.

Definition at line 290 of file sTgcReadoutGeomTool.cxx.

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

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:42
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:290
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
isValid
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition: AtlasPID.h:812
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
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)
Evaluates the n-th Legendre polynomial at x.
Definition: LegendrePoly.h:156
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:71
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:240
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
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:33
ServiceHandle< IRDBAccessSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37