ATLAS Offline Software
Loading...
Searching...
No Matches
sTgcReadoutGeomTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef MUONGEOMODELR4_STGCREAOUDGEOMTOOL_H
6#define MUONGEOMODELR4_STGCREAOUDGEOMTOOL_H
7
10
15#include <GeoModelHelpers/GeoDeDuplicator.h>
16
17namespace MuonGMR4 {
18
19class sTgcReadoutGeomTool : public extends<AthAlgTool, IMuonReadoutGeomTool> {
20 public:
21 // Constructor
22 using base_class::base_class;
23
24
25
26 StatusCode buildReadOutElements(MuonDetectorManager &mgr) override final;
27
28 private:
29
31 "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
32
33 ServiceHandle<IGeoDbTagSvc> m_geoDbTagSvc{this, "GeoDbTagSvc", "GeoDbTagSvc"};
34
35 PublicToolHandle<IMuonGeoUtilityTool> m_geoUtilTool{this,"GeoUtilTool", "" };
36
38 struct wSTGCTable {
39
41 int numStrips{0}; //nStrips
42 double stripPitch{0.}; //stripPitch
43 double stripWidth{0.}; //stripWidth
44 std::vector<double> firstStripPitch; //firstStripWidth
45
47 std::vector<int> numWires; //numWires
48 std::vector<int> firstWireGroupWidth; //firstWireGroupWidth
49 std::vector<int> numWireGroups; //numWireGroups
50 std::vector<double> wireCutout; //wireCutout
51 double wirePitch{0.}; //wirePitch
52 double wireWidth{0.}; //wireWidth
53 int wireGroupWidth{0}; //wireGroupWidth
54 std::vector<double> firstWirePos; //firstWire
55
57 std::vector<int> numPadEta; //nPadH
58 std::vector<int> numPadPhi; //nPadPhi
59 std::vector<double> firstPadHeight; //firstPadH
60 std::vector<double> padHeight; //padH
61 std::vector<int> PadPhiShift;
62 double anglePadPhi{0.};
63 std::vector<double> firstPadPhiDivision;
64 double lPadLength{0.};
65 double sPadLength{0.};
66
67 double yCutout{0.};
68 double yCutoutCathode{0.};
69 double gasTck{0.}; //gasTck
70 double lFrameWidth{0.}; //ylFrame
71 double sFrameWidth{0.}; //ysFrame
72 };
73
74 struct FactoryCache {
75
76 using ParamBookTable = std::map<std::string, wSTGCTable>;
77
78 std::set<StripDesignPtr, StripDesignSorter> stripDesigns{};
79 std::set<WireDesignPtr, WireDesignSorter> wireGroupDesigns{};
80 std::set<PadDesignPtr, PadDesignSorter> padDesigns{};
81
84 GeoDeDuplicator trfNodeMaker{};
85
86
87 };
88
91 struct sTgcShape{
93 double halfHeight{0.};
95 double longWidth{0.};
97 double shortWidth{0.};
99 double thickness{0.};
101 double yCutOut{0.};
102 };
103
104 sTgcShape extractParameters(const GeoShape* shape) const;
105
107 StatusCode readParameterBook(FactoryCache& cache);
109 StatusCode loadDimensions(sTgcReadoutElement::defineArgs& args, FactoryCache& factory);
110};
111
112} // namespace MuonGMR4
113#endif
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
StatusCode loadDimensions(sTgcReadoutElement::defineArgs &args, FactoryCache &factory)
Loads the chamber dimensions from GeoModel.
sTgcShape extractParameters(const GeoShape *shape) const
PublicToolHandle< IMuonGeoUtilityTool > m_geoUtilTool
ServiceHandle< IGeoDbTagSvc > m_geoDbTagSvc
StatusCode readParameterBook(FactoryCache &cache)
Retrieves the auxillary tables from the database.
StatusCode buildReadOutElements(MuonDetectorManager &mgr) override final
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
std::set< PadDesignPtr, PadDesignSorter > padDesigns
std::map< std::string, wSTGCTable > ParamBookTable
std::set< StripDesignPtr, StripDesignSorter > stripDesigns
GeoDeDuplicator trfNodeMaker
Helper object to turn Amg::Transforms into GeoModel tree transform nodes.
std::set< WireDesignPtr, WireDesignSorter > wireGroupDesigns
Helper struct to translate the GeoModelShape into the parameters used to construct the readout elemen...
double longWidth
Width of the module at the upper edge.
double thickness
Thickness of the shape along global z.
double halfHeight
Height of the module in radial direction.
double shortWidth
Width of the module ath the bottom edge.
Struct to cache the relevant parameters of from the WSTGC tables.